Xml 连接两个节点值
我有以下XML结构,需要组合Xml 连接两个节点值,xml,xslt,xslt-1.0,Xml,Xslt,Xslt 1.0,我有以下XML结构,需要组合handlingInstructionText的值: <handlingInstruction> <handlingInstructionText>CTAC | MARTINE HOEYLAERTS</handlingInstructionText> </handlingInstruction> <handlingInstruction> <handlingInstructionTe
handlingInstructionText
的值:
<handlingInstruction>
<handlingInstructionText>CTAC | MARTINE HOEYLAERTS</handlingInstructionText>
</handlingInstruction>
<handlingInstruction>
<handlingInstructionText>PHON | 02/7225235</handlingInstructionText>
</handlingInstruction>
我目前正在使用字符串连接函数,但我目前使用的xsl版本似乎不支持该函数
<xsl:value-of select="otxsl:var-put('Join2_handlingInstructionText',
string-join(handlingInstruction/concat(handlingInstructionText/text(),
' ', handlingInstructionText/text())))" />
我已经尝试对每个函数使用来获取每个值,但我希望它只使用一行代码。XSLT1.0
对于给定的输入XML:
<r>
<handlingInstruction>
<handlingInstructionText>CTAC | MARTINE HOEYLAERTS</handlingInstructionText>
</handlingInstruction>
<handlingInstruction>
<handlingInstructionText>PHON | 02/7225235</handlingInstructionText>
</handlingInstruction>
</r>
我已经尝试使用for each函数来获取每个值,但是我想要
它需要使其仅为一行代码
你应该尽可能多地排队。碰巧,您可以使用:
<xsl:apply-templates select="handlingInstruction/handlingInstructionText"/>
产生预期结果,但:
<xsl:for-each select="handlingInstruction">
<xsl:value-of select="handlingInstructionText"/>
</xsl:for-each>
也很好
注意:上述两项建议都假设了一个格式良好的输入,例如:
<root>
<handlingInstruction>
<handlingInstructionText>CTAC | MARTINE HOEYLAERTS</handlingInstructionText>
</handlingInstruction>
<handlingInstruction>
<handlingInstructionText>PHON | 02/7225235</handlingInstructionText>
</handlingInstruction>
</root>
CTAC | MARTINE Hoeylerts
电话| 02/7225235
与root
匹配的模板请不要脱离上下文发布代码片段-这使我们很难给出有意义的答案。我喜欢此解决方案的优雅,但我担心的是,依赖元素之间不重要的空格来实现两个handlingInstructionText
元素的字符串值之间OP想要的空间的健壮性。@kjhughes元素之间不重要的空格可以去掉。但是,我认为它在这里没有任何作用,因为模板的应用范围很窄。事实上,这是正确的——如果不进一步调整,这不会在两个handlingInstructionText
值之间增加空间。
<xsl:value-of select=
"otxsl:var-put('Join2_handlingInstructionText',
concat(handlingInstruction[1]/handlingInstructionText,
' ',
handlingInstruction[2]/handlingInstructionText))"/>
<xsl:apply-templates select="handlingInstruction/handlingInstructionText"/>
<xsl:for-each select="handlingInstruction">
<xsl:value-of select="handlingInstructionText"/>
</xsl:for-each>
<root>
<handlingInstruction>
<handlingInstructionText>CTAC | MARTINE HOEYLAERTS</handlingInstructionText>
</handlingInstruction>
<handlingInstruction>
<handlingInstructionText>PHON | 02/7225235</handlingInstructionText>
</handlingInstruction>
</root>