問題 :在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>