在XSL中利用遞歸,進行字符串切割

問題 :在XSL解析XML的時候,在XML中有這樣一個字符串2.16.840.1.113883.6.1數據 ,需要根據最後一個“.”後面的數字來進行輸出格式化。當等於1的時候,輸出門診;爲2的時候,輸出急診;爲3的時候,輸出住院。

 

思路 :因爲最後“."前面有多少數據值不清楚,怎樣才能獲得那個數值呢?所以利用遞歸的方法,利用substring-after(var,pattern) function, 循環的去除最後一個“."前面的數據值,直到沒有“."了之後,則表明達到最後一個”."後面的數據了

 

程式

<xsl:template name="showStatus">
    	 <xsl:param name="status"/>
         <xsl:variable name="newStatus" select="substring-after($status,'.')"/>
         <xsl:choose>
            <!-- 當截取之後的字符串中,依然含有. 的時候,遞歸處理 -->     
            <xsl:when test="contains($newStatus,'.')">
                 <xsl:call-template name="showStatus">
                    <xsl:with-param name="status" select="$newStatus" />
                 </xsl:call-template> 
            </xsl:when>
            <xsl:otherwise>
              <xsl:choose>
                 <xsl:when test="$newStatus = '1'">
                   <xsl:text>門診</xsl:text>
                 </xsl:when>
                 <xsl:when test="$newStatus = '2'">
                    <xsl:text>急診</xsl:text>
                 </xsl:when>
                 <xsl:when test="$newStatus = '3'">
                    <xsl:text>住院</xsl:text>
                 </xsl:when>
              </xsl:choose>  
            </xsl:otherwise>
         </xsl:choose> 
</xsl:template>
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章