1. 程式人生 > >XSLT中用normalize-space函式來清除元素的前後空格

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>元素ab都不為空</p>

</xsl:otherwise>

</xsl:choose>

 

結果,對於ab表面上看似乎為空的資料,如<a>  </a><b> </b>,全都輸出了元素ab都不為空這樣的字樣。很顯然,在比較的時候沒有刪除元素裡前後的空格。

要怎樣才能刪除這些空格?如果在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>元素ab都不為空</p>

</xsl:otherwise>

</xsl:choose>

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述