在XSLT转换中保留属性之间的空格

时间:2012-01-13 16:23:00

标签: xml xslt

我有以下XML:

<?xml version="1.0"?>
<products>
    <product at1="a"
             at2="b"
             at3="c">
    </product>
</products>

以及以下XSLT:

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

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

</xsl:stylesheet>

理论上,xslt应该保持输入xml不变。但是,处理后得到的输出是:

<?xml version="1.0"?>
<products>
    <product at1="a" at2="b" at3="c">
    </product>
</products>

我是否可以阻止变换器重新格式化属性之间的间距。我知道输入和输出xml在功能上都是等效的,但我想保留每行格式的属性以用于人类可读性目的。如果重要的话,我正在使用ubuntu的xsltproc进行这种转换:

xsltproc -o test2.xml test.xslt test.xml

1 个答案:

答案 0 :(得分:3)

不,不是标准的XML / XSLT工具。

该信息不是XML信息集的一部分,并且在XML解析器读取XML时将丢失。因此,无法在输出中保留。

您需要使用其他内容修改输出以应用这种格式。