连接两个节点值

时间:2016-01-08 13:44:56

标签: xml xslt xslt-1.0

我有以下XML结构,我需要结合handlingInstructionText

的值
<handlingInstruction>
    <handlingInstructionText>CTAC  |  MARTINE HOEYLAERTS</handlingInstructionText>
</handlingInstruction>
<handlingInstruction>
    <handlingInstructionText>PHON  |  02/7225235</handlingInstructionText>
</handlingInstruction>

我的预期输出是

CTAC  |  MARTINE HOEYLAERTS PHON  |  02/7225235

我目前正在使用字符串连接函数,但我目前正在使用的xsl版本似乎不支持它。

<xsl:value-of select="otxsl:var-put('Join2_handlingInstructionText',
string-join(handlingInstruction/concat(handlingInstructionText/text(),
' ', handlingInstructionText/text())))" />

我已经尝试使用for-each函数来获取每个值,但我希望它只使它成为1行代码。

2 个答案:

答案 0 :(得分:1)

XSLT 1.0

<xsl:value-of select="concat(handlingInstruction[1]/handlingInstructionText,
                             ' ',
                             handlingInstruction[2]/handlingInstructionText)"/>

将返回您的预期输出:

CTAC | MARTINE HOEYLAERTS PHON | 02/7225235

用于您的输入XML:

<r>
  <handlingInstruction>
      <handlingInstructionText>CTAC  |  MARTINE HOEYLAERTS</handlingInstructionText>
  </handlingInstruction>
  <handlingInstruction>
      <handlingInstructionText>PHON  |  02/7225235</handlingInstructionText>
  </handlingInstruction>
</r>

假设r是当前节点。的 Click to try

更新:因此,在var-put扩展名的上下文中,这将是:

<xsl:value-of select=
              "otxsl:var-put('Join2_handlingInstructionText',
                              concat(handlingInstruction[1]/handlingInstructionText,
                                     ' ',
                                     handlingInstruction[2]/handlingInstructionText))"/>

答案 1 :(得分:1)

  

我已经尝试过使用for-each函数来获取每个值,但我想要   它只使它成为1行代码。

你应该尽可能多地使用它。碰巧,您可以使用:

<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>

和一个匹配root的模板。