Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XSL:为什么';输出缩进工作?_Xml_Xslt - Fatal编程技术网

Xml XSL:为什么';输出缩进工作?

Xml XSL:为什么';输出缩进工作?,xml,xslt,Xml,Xslt,这是我的XSL电子表格: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output indent="yes" method="xml" encoding="utf-8" omit-xml-declaration="yes"/> <xsl:template match="/">

这是我的XSL电子表格:

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

    <xsl:output indent="yes" method="xml" encoding="utf-8" omit-xml-declaration="yes"/>

    <xsl:template match="/">
        <xsl:element name="outer">
               <xsl:apply-templates select="elements"/>
        </xsl:element>
    </xsl:template>

    <xsl:template match="element1">
       <xsl:element name="output1">
            <xsl:element name="output1.5" />
       </xsl:element>
    </xsl:template> 

    <xsl:template match="element2">
       <xsl:element name="output2"/>
    </xsl:template> 

</xsl:stylesheet>

输入XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<elements>
    <element1>value1</element1>
    <element2>value2</element2>
</elements>

价值1
价值2
输出不会根据输出XML层次结构缩进。这是实际输出(请注意output1.5和output1未正确缩进):


您看到的实际上是完全没有缩进的结果;缩进的两行是处理用于缩进源文档的空白的结果

如果将
添加到样式表中,则输出中根本不会出现缩进

缩进实际上并不由XSLT处理器控制,而是由将输出序列化为字符串的任何程序控制,尽管这通常是通过相同的方法调用完成的。我不能确定为什么
xsl:output
指令不能完成这项工作,但您可以将其添加到java中:

transformer.setOutputProperty(OutputKeys.INDENT, "yes");
如果要设置缩进量,还可以选择:

transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");

我不能肯定,但问题完全有可能是没有设置缩进的数量,而是使用了0。

您必须使用有缺陷的XSLT 2.0处理器。对于我拥有的所有XSLT2.0处理器:Saxon 9.1.05、Saxon 9.4.06EE、XQSharp(XmlPrime)和Altova 2012,我得到缩进结果您使用哪种XSLT2.0处理器?如何运行转换,如何保存结果并查看它?我使用javax.xml.transform运行转换,使用所有默认配置。如何检查该Java库使用的处理器?据我所知,Sun或Oracle JRE和JDK提供的XSLT处理器是基于Apache Xalan的XSLT 1.0处理器。我使用groovy为我工作。我让它使用
设置数量,并添加了
xmlns:Xalan=“xml.Apache.org/Xalan”
到最外层的xsl:tag。
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");