2011-02-16 84 views
1

的第九位HII都可以在任何一个请帮我如何指定字符串

<block2> 

    <receiverAddress>BKTRUS33XBRD</receiverAddress> 

    </block2> 

在上面的接收器地址如果X是在我们需要1至8位数字othervise如果x第九位呈现在第九的位置没有出现,我们需要修剪该字符串

输出,如果x是9位的最后一个字母有:BKTRUS33 如果x没有出现在第九位:BKTRUS33XBR

如何在XSLT

+0

你使用什么语言? – jcfrei 2011-02-16 10:18:11

+0

使用XPath字符串函数。你可以从`substring`开始http://www.w3.org/TR/xpath/#function-substring – jasso 2011-02-16 10:24:44

回答

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条件指令。