【问题标题】:how to get the value of a node in xsl based on a value from other node如何根据来自其他节点的值获取xsl中节点的值
【发布时间】:2014-03-07 18:24:30
【问题描述】:

如何获取节点“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>

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    你想要:

    <xsl:value-of select="//strings/string[@name=$name]/@index" />
    

    你做错的最大的事情是你使用/而不是[]来包含你的条件@name=$name

    当您需要//strings 时,您还使用了/s。没有s/string 元素。

    【讨论】:

    • 谢谢,我只需要添加“//strings”,它就开始工作了。非常感谢
    • @user2421350 感谢您的反馈,我已经更新了我的答案。这是我的测试环境中的复制和粘贴错误。
    【解决方案2】:

    我会定义一个键&lt;xsl:key name="s" match="strings/string" use="@name"/&gt;,然后在模板中使用&lt;xsl:value-of select="key('s', @string)/@index"/&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 2021-08-24
      • 1970-01-01
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多