2012-08-14 128 views
2

有沒有辦法可以使用xslt?刪除xml文檔中元素和屬性中的所有前導空格和尾隨空格?刪除xml文檔中的所有前導和尾隨空格

<Root> 
    <a>string </a> 
    <b r="another ">second </b> 
</Root> 

預期輸出

<Root> 
    <a>string</a> 
    <b r="another">second</b> 
</Root> 

注:這是一個示例XML,我有許多元素和我的源XML文檔中的屬性。

回答

2

如果使用normalize-space()函數,結果是字符串的所有前導和尾隨空格字符被刪除

但是,它也用一個空格字符替換任何中間空白字符組。

如果你不想要最後提到的效果,那麼一種解決方案是使用FXSL 1.x(FXSL完全寫在XSLT 1.0中)的模板函數。

下面是使用trim模板/功能的一個小例子:

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

    <xsl:import href="trim.xsl"/> 

    <!-- to be applied on trim.xml --> 

    <xsl:output method="text"/> 
    <xsl:template match="/"> 
    '<xsl:call-template name="trim"> 
     <xsl:with-param name="pStr" select="string(/*)"/> 
    </xsl:call-template>' 
    </xsl:template> 
</xsl:stylesheet> 

當下面的XML文檔應用這種轉變:

<someText> 

    This is some text 

</someText> 

想要的,正確的結果產生:

'This is some text' 
相關問題