我在XQuery中尝试这个(假设doc('input:instance')确实返回了一个使用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
如何在xsl:copy-of中使用XPath检索XML结果,然后在将结果格式化为字符串时对结果中收到的特殊字符进行编码?我很乐意使用CDATA部分,如果可能的话(如果我这样做而不是上面的xsl:text,xsl:copy-of没有被评估,因为它成为CDATA部分的一部分)。
显然我是XSL的新手......
答案 0 :(得分:0)
这与XQuery无关(你可以使用任何语言构建XSLT样式表,甚至是XSLT吧!)。
来自http://www.w3.org/TR/xslt20/#xsl-text
<!-- Category: instruction --> <xsl:text [disable-output-escaping]? = "yes" | "no"> <!-- Content: #PCDATA --> </xsl:text>
[...]
xsl:text
的内容 element是一个单个文本节点 value形成的字符串值 新文本节点。
答案 1 :(得分:0)
这里需要的是能够使用XML序列化将XML文档(此处是doc()返回的文档)序列化为字符串。
各种XQuery实现具有用于此目的的扩展功能。例如,如果您使用的是Saxon:
saxon:serialize(document, 'xml')