用一個簡單的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