2013-06-05 100 views
1

我對XSLT的東西有點新。問題是我需要擺脫輸入XML中某些元素內的空格。例如XSLT轉換以刪除元素內的空間

<element id="12"> 


</element> 

應轉變爲

<element id="12"></element> 

並且還

<element id="12"> 

something 

</element> 

<element id="12">something</element> 

和XML的其餘部分應是相同的。用xsl可以進行這種轉換嗎?

回答

4

你喜歡做的是Identity transform

嘗試這樣:

<?xml version="1.0" encoding="utf-8" ?> 
<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="@* | node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@* | node()"/> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="text()"> 
     <xsl:value-of select="normalize-space()"/> 
    </xsl:template> 

</xsl:stylesheet> 
+0

謝謝,人))的工作!順便說一句,如果我想限制這種轉換到一個特定的標籤呢?我應該只是把它放在strip-space elements =「specificTag」中嗎? –

+0

將match =「text()」模板更改爲:「以及其中每個」特定標籤「的更多內容。 –

1

希望,這會幫助你。

<xsl:template match="text()"> 
    <xsl:value-of select="fn:normalize-space()"/> <!-- fn is the prefix bound to xpath functions --> 
</xsl:template> 
+0

嗯......它產生完全空文件)) –

+0

兄弟,我的回答是幫助你在你的文本節點從空間越來越遠。您必須擁有複製邏輯。無論如何,你通過發佈的另一個答案來解決問題。用我在這裏發佈的邏輯。 –

+0

這只是我對xslt的東西一無所知。烏爾輸入讚賞) –