Я пробую это в XQuery (предположим, что doc ('input: instance') действительно возвращает действительный XML-документ), который создается с использованием XSLT

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

Как получить результаты XML с помощью XPath в xsl: copy-of, а затем закодировать специальные символы, полученные в результате, при форматировании результата в виде строки? Я был бы счастлив использовать раздел CDATA, если это возможно (если я сделаю это вместо xsl: text выше, xsl: copy-of не будет оцениваться, поскольку он становится частью раздела CDATA).

Очевидно, я новичок в XSL ...

0
user557060 28 Апр 2011 в 12:14

2 ответа

Лучший ответ

Что вам здесь нужно, так это возможность сериализовать XML-документ (здесь документ, возвращенный doc ()) с использованием XML-сериализации в строку.

Для этого в различных реализациях XQuery есть функции расширения. Например, если вы используете Saxon:

saxon:serialize(document, 'xml')
0
ebruchez 28 Апр 2011 в 21:45
Я использовал процессор xml-converter в Orbeon для достижения аналогичного эффекта (сериализованный XML).
 – 
user557060
9 Май 2011 в 13:15