将键函数的结果保存在变量中



我想将从键获得的节点保存在变量中。这是为了稍后使用如下所示的内容访问节点属性:$variable/@attribute,但此语法不起作用。

我的输入.xml

<?xml version = '1.0' encoding = 'UTF-8' ?>
<tag1>
 <tag2 id = '866' name = 't1' />
 <tag2 id = '867' name = 't2' />
 <tag2 id = '868' name = 't3' />
</tag1>

我的模板.xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:cms="http://www.ametys.org/schema/cms"
            xmlns:UML="org.omg.xmi.namespace.UML"
            exclude-result-prefixes="cms UML">
<xsl:key name="k" match="/tag1/tag2" use="@id"/>
 <xsl:template match="/">
  <xsl:variable name="linkedClassName">
    <xsl:for-each select="key('k', '866')">
      <xsl:value-of select="."/>
     </xsl:foreach>  </xsl:variable>
         RESULT:  <xsl:value-of select="$linkedClassName/@name" />
         RESULT2: <xsl:value-of select="key('k','866')/@name"/>
 </xsl:template>
</xsl:stylesheet>

我的输出.xml

<?xml version="1.0" encoding="UTF-8"?>
 RESULT:
 RESULT2:  t1

结果行是我想做的,但正如你所看到的,它并没有 worK。

结果行是我想做的,但如您所见,它不起作用。RESULT2行是我找到的唯一替代方案,但这意味着每次我需要访问节点的属性之一时调用键函数(非常慢(。

使用 <xsl:variable name="v1" select="key('k', '866')"/> ,然后<xsl:value-of select="$v1/@name"/>

相关内容

  • 没有找到相关文章

最新更新