Как добавить новую строку в документ с помощью XSLT? - PullRequest
0 голосов
/ 11 июля 2011

Мне нужно преобразовать простой XML-файл через XSLT.Результатом должен быть исходный входной XML-файл плюс сгенерированная строка.Строка генерируется из значения из XML-файла.

Генерировать легко, но как мне вставить полный исходный XML-контент в мой выходной xml?

Ответы [ 2 ]

1 голос
/ 11 июля 2011

Здесь полная копия XML с XSLT 1.0.Измените свою выходную кодировку (в данном примере это UTF-8) и свою потребность в отступе (= да), если хотите.

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

<xsl:output method="xml" encoding="UTF-8" indent="yes"/> 

<xsl:strip-space elements="*"/>

<!-- Default: copy everything -->
<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

И если вы хотите добавить одну строку текста в конце использованияthis:

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

<xsl:output method="xml" encoding="UTF-8" indent="yes"/> 

<xsl:strip-space elements="*"/>

<!-- add a line of text at the end of the xml -->
<xsl:template match="/">
    <xsl:apply-templates/>
    <xsl:text>your line of text</xsl:text>
</xsl:template>

<!-- Default: copy everything -->
<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

Имейте в виду, что последнее решение (с текстовой строкой) не создает действительный XML!

0 голосов
/ 11 июля 2011

Возможно, вы захотите использовать элемент copy-of либо на базовом узле, либо непосредственно в файле xml.

Например, <xsl:copy-of select="document('style.xml')/"/>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...