Xml 连接两个节点值

Xml 连接两个节点值,xml,xslt,xslt-1.0,Xml,Xslt,Xslt 1.0,我有以下XML结构,需要组合handlingInstructionText的值: <handlingInstruction> <handlingInstructionText>CTAC | MARTINE HOEYLAERTS</handlingInstructionText> </handlingInstruction> <handlingInstruction> <handlingInstructionTe

我有以下XML结构,需要组合
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>