用一个简单的XML这样XSLT-1.0可以使用一个变量来访问其他节点吗?
<value>
<num>
<accession>111</accession>
<sequence>AAA</sequence>
<score>4000</score>
</num>
</value>
我想知道是否有可能从先前存储在一个变量节点访问特定的节点。该XSLT代码是很短的,并解释了更好的我想说
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/value/num">
<xsl:variable name="node">
<xsl:copy-of select="current()"/>
</xsl:variable>
<root>
<xsl:copy-of select="$node"/>
</root>
</xsl:template>
</xsl:stylesheet>
所以我存储在变量“节点”的节点是什么。然后我可以用$node
打印节点的内容。
(编辑)XML输出
<root>
<num>
<accession>111</accession>
<sequence>AAA</sequence>
<score>4000</score>
</num>
</root>
我想要做的就是打印子节点的内容,这样
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/value/num">
<xsl:variable name="node">
<xsl:copy-of select="current()"/>
</xsl:variable>
<root>
<xsl:copy-of select="$node/accession"/>
</root>
</xsl:template>
</xsl:stylesheet>
但它给出了一个错误(组件返回失败代码:0x80600008 [nsIXSLTProcessor.transformToFragment])(检查here)
(编辑),我想的XML是
<root>
<accession>111</accession>
</root>
注意:问题不在于我怎么能得到这个输出。问题是如何使用提供的XSLT中的变量来获取此输出。
(编辑:已解决) 实际上,如果需要节点集,就可以在注释中指定一个变量的值为“select”属性。如此以来,变量有树片段,而不是存储在它的(阅读更多信息here)
由于节点集此代码是行不通的!
你能提供一个样本预期的输出? – 2011-12-19 15:16:36
已编辑的问题。请注意,我不仅要求这个特定的输出,但我需要使用一个变量。 – Gerard 2011-12-19 15:22:43