我有几个节点禁止跟踪数据,我想将它们连接在一个字符串中,成为一个新的变量$tracks
。
<xsl:template match="tracks">
<xsl:variable name="trackArtist">
<xsl:apply-templates select="/artists/item/@artist" />
</xsl:variable>
<xsl:value-of select="item/concat(@unit, '|', @track, '|null|', @text, '|', $trackArtist, '|null|null|')" />
</xsl:template>
所以这是有效的,它将它们连接起来。但是我在节点的每一端都有一个空格,我尝试了很多事情normalize-space
,string-join
等等。但后来我发现额外的空间只是由处理过的每个节点生成的。
<tracks>
<item text="SILENCE" track="1" unit="1"/>
<item text="HAPPINESS" track="2" unit="1"/>
<item text="DREAM" track="3" unit="1"/>
</tracks>
结果(注意'| null | null |'后面的空格:
1|1|null|SILENCE|FOURPLAY|null|null| 1|2|null|HAPPINESS|FOURPLAY|null|null| 1|3|null|DREAM|FOURPLAY|null|null|
如何连接节点中的数据加上所有其他节点?
答案 0 :(得分:0)
好的,在同事的帮助下弄清楚了。
由于它是您正在编辑的节点列表,因此它将应用标准的内置处理方式,从而在每个节点之后添加一个空格。因此,通过添加string-join()
,您可以操纵它。这也解决了有一个尾随(不必要的)管道的问题。
<xsl:value-of select="string-join(item/concat(@unit, '|', @track, '|null|', @text, '|', $trackArtist, '|null|null'), '|')" />