如何在XSLT中引用AddressLine3-6这类含数字的子节点子集
解决方案
你可以通过在XPath表达式中提取地址行的数字后缀,并限定其范围来实现需求,无需使用if语句。修改后的select表达式会精准匹配AddressLine3到AddressLine6节点:
<out:AddressLine> <xsl:value-of select="$nodeOfAddress/*[ starts-with(name(), 'in:AddressLine') and number(substring-after(name(), 'in:AddressLine')) >= 3 and number(substring-after(name(), 'in:AddressLine')) <= 6 ]/text()[normalize-space()]/normalize-space()" separator=" "/> </out:AddressLine>
表达式说明
substring-after(name(), 'in:AddressLine'):从节点名称中提取数字部分(比如从in:AddressLine3得到3)number(...):将提取到的字符串转换为数字,方便进行范围判断>=3 and <=6:限定只处理数字在3到6之间的地址行节点
测试效果
针对你提供的XML示例,这段代码会将AddressLine3到AddressLine6的内容拼接成单个字符串输出,忽略其他地址行。
内容的提问来源于stack exchange,提问作者TheUltimateHack
相关产品推荐
相关产品推荐

