Из xslt вы можете вывести весь XML? - PullRequest
4 голосов
/ 16 апреля 2010

Внутри моего XSLT, который преобразует XML-код заказа, я хочу получить дамп всего XML-файла, с которым я сейчас работаю. Как я могу это сделать?

Я создаю некоторый HTML на основе XML и хочу выгрузить весь XML в текстовую область.

Ответы [ 4 ]

8 голосов
/ 16 апреля 2010

Вероятно, самый короткий ...:)

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
  <xsl:copy-of select="."/>
 </xsl:template>
</xsl:stylesheet>
1 голос
/ 16 апреля 2010
<xsl:copy-of select="."/>
1 голос
/ 16 апреля 2010

То есть вы хотите создать элемент <textarea> и сбросить все в этот элемент?

Тогда вы можете использовать что-то вроде:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:template match="/">
      <textarea>
         <xsl:copy-of select="/" />     
      </textarea>
   </xsl:template>  
</xsl:stylesheet>

Будьте осторожны: Выход не будет экранирован!

Или поместите <xsl:copy-of> везде, где вы производите текстовую область.

Небольшое примечание, если вам нужно работать с действительно большими XML-файлами: если вы вызываете функцию копирования из шаблона, который находится где-то глубже в иерархии, это может замедлить процессор xslt, потому что он должен " прыгать "за пределы локального узла. Таким образом, процессор xslt не может использовать определенные оптимизации.

1 голос
/ 16 апреля 2010
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...