簡體   English   中英

XSL:為什么不輸出縮進?

[英]XSL: why doesn't output indent work?

這是我的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>

輸出不會根據輸出XML層次結構縮進。 這是實際輸出(請注意如何不正確縮進output1.5和output1):

<outer>
    <output1>
<output1.5/>
</output1>
    <output2/>
</outer>

您所看到的實際上是根本不縮進的結果; 縮進的兩行是對用於縮進源文檔的空白進行處理的結果。

如果要將<xsl:strip-space elements="*" />到樣式表中,則輸出中將完全沒有縮進。

縮進實際上不是由XSLT處理器控制的,它是由將輸出序列化為字符串的任何東西來控制的,盡管通常是通過相同的方法調用來完成的。 我不能肯定地說為什么xsl:output指令沒有完成這項工作,但是您可以將其添加到Java中:

transformer.setOutputProperty(OutputKeys.INDENT, "yes");

並且可選地,如果您想設置縮進多少,則:

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

我不能肯定地說,但是很可能問題是沒有設置縮進量,而是使用0。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM