我有以下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行代码。
答案 0 :(得分:1)
<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
的模板。