如何获取节点“s”内提供的字符串的索引,并根据“strings”节点中的名称查找相应的索引值?
这是我的XSL模板:
<xsl:template match="norm" >
<xsl:variable name="name" select="@string" />
<xsl:value-of select="/s/string/@name=$name/@index"/>,
</xsl:template>
这是我的源XML片段:
<s name="main">
<norm string="back-slash"/>
<norm string="open-braces" />
<norm string="close-braces" />
</s>
<strings name="consts">
<string name="back-slash" val="\\" index="0"/>
<string name="close-braces" val="]" index="2"/>
<string name="remove-null" val="null" index="3" />
</strings>
答案 0 :(得分:1)
你想:
<xsl:value-of select="//strings/string[@name=$name]/@index" />
您做错的最重要的事情是您使用/
代替[
和]
来封闭条件@name=$name
。
如果您需要/s
,还可以使用//strings
。没有s/string
元素。
答案 1 :(得分:1)
我会定义一个键<xsl:key name="s" match="strings/string" use="@name"/>
,然后在模板中使用<xsl:value-of select="key('s', @string)/@index"/>
。