如何定位字符串的第九个位置

时间:2011-02-16 10:14:04

标签: xml xslt

hii所有人都可以帮助我

 <block2>

  <receiverAddress>BKTRUS33XBRD</receiverAddress>

  </block2>

在上面的接收者地址中,如果x出现在第九个位置,我们需要取1到8个数字,如果x没有出现在第九个位置,我们需要修剪该字符串的最后一个字母

输出如果x是9位置: BKTRUS33 如果x不在第九位: BKTRUS33XBR

如何在xslt

中完成

1 个答案:

答案 0 :(得分:2)

此转化

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="receiverAddress[substring(.,9,1)='X']">
     <xsl:value-of select="substring(.,1,8)"/>
     <xsl:text>&#xA;</xsl:text>
 </xsl:template>

 <xsl:template match="receiverAddress[not(substring(.,9,1)='X')]">
     <xsl:value-of select="substring(.,1,string-length() -1)"/>
     <xsl:text>&#xA;</xsl:text>
 </xsl:template>
</xsl:stylesheet>

应用于此XML文档时:

<block2>
    <receiverAddress>BKTRUS33XBRD</receiverAddress>
    <receiverAddress>BKTRUS33YBRD</receiverAddress>
</block2>

会产生想要的正确结果:

BKTRUS33
BKTRUS33YBR

请注意:

  1. 使用标准XPath函数 substring()

  2. 如何使用标准XPath 1.0函数 substring() string-length() 来定位/排除字符串另一个字符串的结尾。

  3. 您可以在XPath 2.0中使用标准的XPath 2.0函数 ends-with()

  4. 如何使用模式匹配,以便模板内不需要XSLT条件指令。