我想保存从变量中的键获得的节点。这是为了稍后使用以下内容访问节点属性:$variable/@attribute,但是这种语法不起作用。
我的 input.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
RESULT 行是我想要做的,但你可以看到它不起作用。
RESULT 行是我想要做的,但你可以看到它不起作用。RESULT2 行是我找到的唯一替代方法,但这意味着每次我需要访问节点的属性之一时都调用 key 函数(这很慢)。