嗨,如果我直接提供逻辑值(<xsl:value-of select="value"/>
),则意味着它正在正确获取
如果我想尝试使用像
这样的逻辑来获取<xsl:variable name ="del50k" select ="(translate(substring-after(value,' '),' ','~'))"/>
<xsl:value-of select="concat(substring(value, 1, 5), ',',substring(substring-before(value,' '),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,' '),' ','~'))"/>
<xsl:value-of select="concat(substring(value, 1, 5), ',',substring(substring-before(value,' '),6), ',',$del50k)" />
</xsl:template>
预期结果TAG 50k剩余标签正在运行
英国,0601 /,045788775099,shanmu~MENENDEZ Y PELAYOA CORUNA SPA 美国,0501 /,045788775099,Praveen~MENENDEZ Y PELAYOA CORUNA SPA
答案 0 :(得分:0)
<xsl:template match="swift/message/block4/tag [name='21']">
在提供的XML文档中,没有tag
元素,其name
子元素具有字符串值'21'
,而tag
元素是block4
元素的子元素1}}元素是message
元素的子元素,它是swift
元素的子元素。
因此,根本不应用模板,并且不会生成必须生成的结果。