我想根据字符串
中的内容获取“index”值<sch name="main">
<norm string="back-slash"/>
<norm string="open-braces" />
<norm string="close-braces" />
</sch>
<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>
我试过这个,但它不起作用。你能帮忙吗?
<xsl:template match="norm" >
<xsl:variable name="$nme" select="@string"/>
<xsl:value-of select="/strings/@name=$nme/@index"/>,
</xsl:template>
答案 0 :(得分:1)
/strings/@name=$nme/@index
无效的XPath。如果您希望通过其中一个属性来定位节点,则需要一个属性选择器。
/strings/*[@name=$nme]/@index
答案 1 :(得分:1)
首先,变量$nme
的名称不是有效的Qname。
而不是
<xsl:variable name="$nme" select="@string"/>
你应该使用
<xsl:variable name="nme" select="@string"/>
试试这个模板:
<xsl:template match="norm" >
<xsl:variable name="nme" select="@string"/>
<xsl:value-of select="../following-sibling::strings/string[@name=$nme]/@index"/>,
</xsl:template>