如何根据另一个节点的值获取一个节点的值

时间:2014-03-07 19:00:53

标签: xslt

我想根据字符串

中的内容获取“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>

2 个答案:

答案 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>