<block2 type="input">
<messageType>103</messageType>
<receiverAddress>BKTRUS33XBRD</receiverAddress>
<messagePriority>N</messagePriority>
<deliveryMonitoring>3</deliveryMonitoring>
</block2>
我需要输出,好像消息类型是103.然后我们传递一个像CTD一样的字符串。
输出:CTD,I103N
答案 0 :(得分:1)
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:variable name="vUpper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:variable name="vLower" select="'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:template match="/">
<xsl:for-each select="block2[messageType = '103']">
<xsl:value-of select="
concat(
'CTD,',
translate(substring(@type, 1, 1), $vLower, $vUpper),
messageType,
messagePriority
)"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
输出为CTD,I103N
。
在XSLT 2.0中,可以使用fn:upper-case
和fn:lower-case
。
答案 1 :(得分:0)
for-each循环不是必需的,即
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:variable name="vUpper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:variable name="vLower" select="'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:template match="//block2[messageType = '103']">
<xsl:value-of select="concat('CTD,',
translate(substring(@type, 1, 1), $vLower, $vUpper),
messageType, messagePriority )"/>
</xsl:template>
</xsl:stylesheet>