2011-04-28 32 views
0

我在XQuery中嘗試此操作(假定doc('input:instance')確實返回一個有效的XML文檔),這是使用XSLT將輸出副本轉換爲字符串並轉義XML特殊字符(如小於(<)和大於(>)符號)

let $a:= <xsl:text>"<xsl:copy-of select="doc('input:instance')//A" />"</xsl:text> 
let $p := <xsl:text>"<xsl:copy-of select="doc('input:instance')//P" />"</xsl:text> 
let $r := <xsl:text>"<xsl:copy-of select="doc('input:instance')//R" />"</xsl:text> 

產生的,但我得到的錯誤:

xsl:text must not contain child elements 

我如何使用XPath在XSL檢索XML結果:複製和再編碼將結果格式化爲字符串時在結果中收到特殊字符?如果可能的話,我會很樂意使用CDATA節(如果我這樣做,而不是上面的xsl:text,則xsl:copy-of不會被評估,因爲它會成爲CDATA節的一部分)。

顯然,我是一個新人,XSL ...

回答

0

你所需要的就是序列化的XML文檔的能力(這裏由文檔返回文檔())使用XML序列化,轉換成字符串。

各種XQuery實現都有用於此目的的擴展函數。例如,如果您使用的是撒克遜:

saxon:serialize(document, 'xml') 
+0

我使用Orbeon中的xml轉換器處理器來實現類似的效果(序列化的XML) – user557060 2011-05-09 09:15:23

0

此無關使用XQuery(你可以建設有任何語言XSLT樣式表,甚至XSLT itslef!)。

http://www.w3.org/TR/xslt20/#xsl-text

<!-- Category: instruction --> 
<xsl:text 
    [disable-output-escaping]? = "yes" | "no"> 
    <!-- Content: #PCDATA --> 
</xsl:text> 

[...] The content of the xsl:text element is a single text node whose value forms the string value of the new text node.

相關問題