2013-07-09 198 views
0

我有一個類似於此的xml結構。XSLT離開開始和結束標記

<outer> 
    <inner>text</inner> 
    <inner2>text2</inner2> 
</outer> 

我希望它看起來像這樣,留下開始和結束標記。

<outer> 
    <inner></inner> 
    <inner2></inner2> 
</outer> 

這是我使用

<xsl:template match="node()"> 
    <xsl:copy> 
    <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

    <xsl:template match="text()"/> 

離開我

<outer> 
    </inner> 
    </inner2> 
</outer> 

我怎麼會得到兩個開始和結束標記當前XSL?

回答

2

我預計XSLT給你

<outer> 
    <inner/> 
    <inner2/> 
</outer> 

這是正確的結果,因爲它是完全一樣的XML作爲

<outer> 
    <inner></inner> 
    <inner2></inner2> 
</outer> 

在XSLT有沒有辦法來控制其相當於兩個表示最終的序列化器將用來表示輸出樹。可能存在特定於處理器的方式來影響它,具體取決於您使用的處理器,但通常它並不重要,因爲XML工具會將這兩種格式視爲相同。

+0

這就是我以爲我會問,以確保。有沒有一種方法可以用標籤名稱替換標籤之間的文本? – stormbard

+0

@stormbard您可以使用匹配「葉子」元素的模板(那些沒有子元素的元素,即'match = * [not(*)]''')並執行類似'' –

+0

@stormbard或者您可以在元素內部放置虛擬註釋而不是某些文本,例如' dummy' –