根据我的理解,我已经四处寻找答案,以下内容应该有效:
<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).
设置一些特定于处理器的输出选项可能会有所帮助,但您应该注意这些选项可能会因您使用的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处理器的文档中寻找一些特定于处理器的输出属性.