漂亮的格式化结果树和使用XSLT 2.0结果树的换行

时间:2013-11-24 17:51:36

标签: xml xslt xslt-2.0

背景:

我对已经使用的XML文档进行了XSLT转换:

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

它将通过一系列XML管道进入最终结果树(存储为$ finalOutput),我需要根据此项目的需要将结果分成单独的XML文件(1,000+)以便提取到Web应用程序。使用结果文档制作单独的文件和副本以输出结果树,如下所示:

<xsl:result-document href="{$filename}">    
    <xsl:copy-of select="$finalOutput" />
</xsl:result-document>

遇到的问题:

1)在XML Pipelining中动态修改时,父元素的第一个子元素未换行到新行。

示例输出:

<?xml version="1.0" encoding="UTF-8"?>
<test>
    <parent>blah<child>blah</child>
        <child>blah</child>
        <child>blah<grandchild>blah</grandchild>
            <grandchild>blah</grandchild>
        </child>
        <child>blah</child>
    </parent>
</test>

应该是:

<?xml version="1.0" encoding="UTF-8"?>
<test>
    <parent>blah
        <child>blah</child>
        <child>blah</child>
        <child>blah
            <grandchild>blah</grandchild>
            <grandchild>blah</grandchild>
        </child>
        <child>blah</child>
    </parent>
</test>

我们已经尝试在最后一个XML Pipeline转换上插入换行符,但它会破坏元素的缩进。

2)一个好的东西就是自动换行,保留100个字符的缩进。提高人类对文档的可读性。

没有XSLT的最坏情况替代方案:

临时修复程序是使用XML编辑器手动打开每个文件,该编辑器将自动设置为100个字符包装并自动缩进嵌套元素并启用Pretty Printing。但是,如果我可以自动进入XML管道,则不希望对所有1,000多个文件 执行此操作。

0 个答案:

没有答案