请原谅我对XSLT的无知我对它很新。
使用saxon xslt 2.0:我正在尝试从xsl:变量中获取单个元素,在应用<xsl:copy-of select="$type">
时看起来像这样:
<type>
<label>Book</label>
<id>book</id>
</type>
尝试仅访问id元素 - 我尝试过:
<xsl:copy-of select="$type/id">
<xsl:copy-of select="$type[2]">
<xsl:value-of select="$type/id">
<xsl:value-of select="$type[2]">
还试过这个以及一些变种
<xsl:value-of select="$type[name()='id']"/>
并尝试更改数据类型
<xsl:variable name="type" as="element">
使用XSLT 2.0 node-set()操作似乎不适用。
我寻求有关如何正确访问xsl:variable元素的详细说明,并且也很乐意发现我使用这一切都是错误的,这是一种更好的方法。感谢您的见解和努力。
@马丁honnen 添加时:
<xsl:variable name="test1">
<type>
<label>Book</label>
<id>book</id>
</type>
</xsl:variable>
<TEST1><xsl:copy-of select="$test1/type/id"/></TEST1>
<xsl:variable name="test2" as="element()">
<type>
<label>Book</label>
<id>book</id>
</type>
</xsl:variable>
<TEST2><xsl:copy-of select="$test2/id"/></TEST2>
我得到了结果:
<TEST1/>
<TEST2/>
答案 0 :(得分:1)
如果你有
<xsl:variable name="type">
<type>
<label>Book</label>
<id>book</id>
</type>
</xsl:variable>
然后你需要例如<xsl:copy-of select="$type/type/id"/>
复制id
元素,type
元素绑定到包含带有type
子元素节点的id
元素节点的临时文档节点。{ / p>
或使用
<xsl:variable name="type" as="element()">
<type>
<label>Book</label>
<id>book</id>
</type>
</xsl:variable>
然后<xsl:copy-of select="$type/id"/>
起作用,因为现在变量绑定到type
元素节点。
以下是我的建议的完整示例:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output indent="yes"/>
<xsl:template match="/">
<xsl:variable name="test1">
<type>
<label>Book</label>
<id>book</id>
</type>
</xsl:variable>
<TEST1><xsl:copy-of select="$test1/type/id"/></TEST1>
<xsl:variable name="test2" as="element()">
<type>
<label>Book</label>
<id>book</id>
</type>
</xsl:variable>
<TEST2><xsl:copy-of select="$test2/id"/></TEST2>
</xsl:template>
</xsl:stylesheet>
输出
<TEST1>
<id>book</id>
</TEST1>
<TEST2>
<id>book</id>
</TEST2>
答案 1 :(得分:0)
要访问元素值,只需正确指定type/id
<xsl:value-of select="type/id" />