簡體   English   中英

Transformer.transform()將第一個標簽寫入與<?xml>

[英]Transformer.transform() writes the first tag on the same line as <?xml>

當我寫一個Document使用變壓器的變換()方法來XML生成的XML文檔被很好地格式化-所有的元素都寫在單獨的行和縮進。 除了第一個元素與定義寫在同一行上: <?xml version="1.0" encoding="UTF-8" standalone="no"?><first_element>

我想要的只是將<first_element>寫在下一行,如下所示: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <first_element>

有什么方法可以在將XML寫入文件之前對其進行預格式化以完成此操作?

這種效果可能取決於您所使用的XSLT處理器(因為有六個處理器已經實現了JAXP API,告訴我們您使用Transformer.transform()調用它不會提供此信息)。

您還需要告訴我們是否要設置<xsl:output indent="yes"/> -輸出“格式正確...並且縮進了”這一事實並不能告訴我們一種方法。

一致性規則取決於您使用的XSLT版本。 通常,在每個后續版本的規范中,序列化規則都變得更加規范。

如果您使用的是indent="no" ,則不允許處理器在XML聲明后插入空格,除非您的轉換顯式生成了空格(盡管我知道某些處理器可以這樣做)。 這是因為,如果將輸出用作外部實體而不是完整的文檔,則換行實際上是重要的內容。 碰巧的是,當您設置standalone =“ no”時,輸出不能用作外部實體,但是序列化規則未將其考慮在內。

如果您使用的是indent="yes" ,則規則允許在此處添加空格,但它們並非必需-由XSLT實現自行決定。

暫無
暫無

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

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