如何通过XSLT向文档添加新行?

时间:2011-07-11 14:42:40

标签: xml xslt

我必须通过XSLT转换一个简单的XML文件。结果应该是原始XML输入文件加上生成的String。该字符串是从XML文件的值生成的。

生成很简单,但是如何在输出xml中插入完整的原始XML内容?

2 个答案:

答案 0 :(得分:1)

这是使用XSLT 1.0的XML的完整副本。更改输出编码(此示例中为UTF-8),并根据需要更改缩进(= yes)。

<?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>

如果你想在最后添加一行文字,请使用:

<?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!

答案 1 :(得分:0)

您可能希望直接在基本节点或xml文件上使用copy-of元素。

例如, <xsl:copy-of select="document('style.xml')/"/>