2011-02-16 81 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條件指令。