如何让xslt缩进xml(来自Ant)?

Tho*_*4no 2 ant xslt

根据我的理解,我已经四处寻找答案,以下内容应该有效:

<xslt basedir="..." destdir="..." style="xslt-stylesheet.xsd" extension=".xml"/>
Run Code Online (Sandbox Code Playgroud)

其中xslt-stylesheet.xsd包含以下内容:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>
    <xsl:strip-space elements="*"/>
    <xsl:template match="/">
        <xsl:copy-of select="."/>
    </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

不幸的是,虽然应用了大多数格式(空格被剥离,输入了换行符等),但缩进不是,并且每个元素都位于文件的左侧.这是xslt处理器Ant使用的问题,还是我做错了什么?(使用Ant 1.8.2).

Ste*_*cis 5

设置一些特定于处理器的输出选项可能会有所帮助,但您应该注意这些选项可能会因您使用的XSLT处理器而异.

例如,如果您正在使用Xalan,它会定义一个indent-amount属性,它似乎默认为0.

要在运行时覆盖此属性,可以在样式表中声明xalan名称空间,并使用indent-amount输出元素中特定于处理器的属性覆盖,如下所示:

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

  <xsl:output method="xml" 
              encoding="UTF-8"
              indent="yes" 
              xalan:indent-amount="2"/>
Run Code Online (Sandbox Code Playgroud)

此示例来自http://xml.apache.org/xalan-j/usagepatterns.html上的Xalan使用模式文档

如果你碰巧正在使用Xalan,文档还说你可以通过设置更改序列化器jar中的文件org/apache/serializer/output_xml.properties来全局更改所有输出首选项.

为了完整性,在该文件(Xalan 2.7.1)中定义的完整的Xalan特定xml输出属性集是:

{http://xml.apache.org/xalan}indent-amount=0
{http://xml.apache.org/xalan}content-handler=org.apache.xml.serializer.ToXMLStream
{http://xml.apache.org/xalan}entities=org/apache/xml/serializer/XMLEntities
Run Code Online (Sandbox Code Playgroud)

如果你没有使用Xalan,你可能会在XSLT处理器的文档中寻找一些特定于处理器的输出属性.