在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>
 

 

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