XSLT中用normalize-space函式來清除元素的前後空格
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
XSLT中用normalize-space函式來清除元素的前後空格
左直拳
按照我的理解,XML檔案儲存資料,XSLT負責顯示這些資料。同樣的XML檔案,結合不同的XSLT
可能也是由於功能強大的原因,XSLT有許多語法、函式,但介紹的資料似乎很少,應用起來常常費心勞力。
現在有一個問題,從XML中獲取的資料,在XSLT中進行分析之前怎樣祛除資料前後的空格?如:
<xsl:choose>
<xsl:when test=".[a='']" >
<p>元素a為空</p>
</xsl:when>
<xsl:when test=".[b='']" >
<p>元素b為空</p>
</xsl:when>
<xsl:otherwise>
<p>元素a、b都不為空</p>
</xsl:otherwise>
</xsl:choose>
結果,對於a、b表面上看似乎為空的資料,如<a> </a><b> </b>,全都輸出了元素a、b都不為空這樣的字樣。很顯然,在比較的時候沒有刪除元素裡前後的空格。
要怎樣才能刪除這些空格?如果在C#或者其他什麼語言裡,早一個”Trim”飛過去把它搞定了。
辛辛苦苦跑到網上搜索一翻,發現可以用normalize-space這個函式。
可我怎麼試都沒有成功,說是不支援normalize-space。後來看了看XSLT的檔案頭,差點吐血,原來我用的是老版本的名稱空間:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
改成新版本的名稱空間:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
問題解決了。
<xsl:choose>
<xsl:when test="normalize-space(a)=''" >
<p>元素a為空</p>
</xsl:when>
<xsl:when test="normalize-space(b)=''" >
<p>元素b為空</p>
</xsl:when>
<xsl:otherwise>
<p>元素a、b都不為空</p>
</xsl:otherwise>
</xsl:choose>