2011-06-03 54 views
0

喜通过xml得到标签的值,如果我直接提供逻辑类似值(<xsl:value-of select="value"/>)意味着它被正确读取如何使用XSLT

如果想,如果我尝试与像

<xsl:variable name ="del50k" select ="(translate(substring-after(value,'&#13;'),'&#13;','~'))"/> 
    <xsl:value-of select="concat(substring(value, 1, 5), ',',substring(substring-before(value,'&#13;'),6), ',',$del50k)" /> 
一些逻辑来取

此XML

<swift> 
<message> 
    <block2 type="input"> 
    <messageType>102</messageType> 
    <receiverAddress>BKTRUS33XBRD</receiverAddress> 
    <messagePriority>N</messagePriority>  
</block2> 
<block3> 
<tag> 
    <name>32</name> 
    <value>praveen</value> 
</tag> 
<tag> 
    <name>42</name> 
    <value>pubby</value> 
</tag> 
</block3> 
<block4> 
<tag> 
    <name>32A</name> 
    <value>051008EUR1009.43</value> 
</tag> 
<tag> 
    <name>77</name> 
    <value>PUBBYPRAVZ</value> 
</tag> 
<tag> 
    <name>21</name> 
    <value>UK</value> 
</tag> 
<tag> 
    <name>21</name> 
    <value>USA</value> 
    </tag> 
    <tag> 
<name>50K</name> 
<value> 
0601/045788775099 
shanmu 
MENENDEZ Y PELAYOA CORUNA SPA 
</value> 
    </tag> 
    <tag> 
<name>50K</name> 
<value> 
0501/045788775099 
Praveen 
MENENDEZ Y PELAYOA CORUNA SPA 
</value> 
</tag> 
    <tag> 
     <name>76</name> 
     <value>shanmu</value> 
    </tag> 
</block4> 
</message> 
</swift> 

`

我已经申请日是XSLT逻辑这样的波纹管

<xsl:template match="swift/message/block4/tag [name='21']">  

    <xsl:value-of select="value"/>,<xsl:text/> 

    <xsl:variable name="posi" select="position()"/> 
    <xsl:apply-templates select="../../block4/tag [name='50K'] [position()=$posi]"/>clrf 



</xsl:template> 

<xsl:template match="/swift/message/block4/tag [name='50K']"> 
    <xsl:variable name ="del50k" select ="(translate(substring-after(value,'&#13;'),'&#13;','~'))"/> 
    <xsl:value-of select="concat(substring(value, 1, 5), ',',substring(substring-before(value,'&#13;'),6), ',',$del50k)" /> 
</xsl:template> 

预期结果TAG 50K剩下的标签正在

英国,0601 /,045788775099,山姆〜MENENDEZŸPELAYOA CORUNA SPA 美国,0501 /,045788775099,普利文〜 MENENDEZŸPELAYOA CORUNA SPA

+0

目前尚不清楚您的预期结果和实际结果。请使用更多标点符号。看来你在说''元素的预期结果''为'50k'为'0601 /,045788775099,shanmu〜MENENDEZ Y PELAYOA CORUNA SPA'。但我不知道下一行是什么。实际结果? – LarsH 2011-06-03 11:58:09

+0

@larsh为我得到结果为空 – pubby 2011-06-03 12:02:43

+0

可能你的模板没有得到应用。为此,我们需要看到这个模板应该应用的上下文;还有一些输出在出现“null”之前和之后的输出。 – LarsH 2011-06-03 12:07:14

回答

0
<xsl:template match="swift/message/block4/tag [name='21']"> 

在提供的XML文档没有tag元件,其name孩子有字符串值'21'和那个(tag元素)是block4元素的子元素,它是swift元素的子元素的message元素的子元素。

因此,该模板根本没有应用,它必须生成的结果不会生成。

+0

novachev的不便之处.....现在我编辑xml即使我有编辑也不执行记录我有什么预期输出 – pubby 2011-06-03 19:59:39

+0

novachev我希望我的逻辑是正确的ryt ..? – pubby 2011-06-04 15:46:49