在 XSLT 中处理多个节点时删除额外的 space
Remove extra space when handling multiple nodes in XSLT
我有几个节点限制跟踪数据,我想将它们全部连接成一个字符串,成为一个新变量 $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>
所以这是有效的,它将它们连接起来。但是我在一个节点的每一端都有一个 space,我尝试了很多东西 normalize-space
,string-join
等等。但是后来我发现额外的 space 只是由每个处理的节点生成。
<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|'后面的space:
1|1|null|SILENCE|FOURPLAY|null|null| 1|2|null|HAPPINESS|FOURPLAY|null|null| 1|3|null|DREAM|FOURPLAY|null|null|
如何连接来自一个节点和所有其他节点的数据?
好的,在同事的帮助下弄明白了。
由于您正在编辑的是一个节点列表,它将应用标准的内置处理方式,因此在每个节点后添加一个 space。所以通过添加一个 string-join()
你可以操纵它。这也解决了尾部(不必要的)管道的问题。
<xsl:value-of select="string-join(item/concat(@unit, '|', @track, '|null|', @text, '|', $trackArtist, '|null|null'), '|')" />
我有几个节点限制跟踪数据,我想将它们全部连接成一个字符串,成为一个新变量 $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>
所以这是有效的,它将它们连接起来。但是我在一个节点的每一端都有一个 space,我尝试了很多东西 normalize-space
,string-join
等等。但是后来我发现额外的 space 只是由每个处理的节点生成。
<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|'后面的space:
1|1|null|SILENCE|FOURPLAY|null|null| 1|2|null|HAPPINESS|FOURPLAY|null|null| 1|3|null|DREAM|FOURPLAY|null|null|
如何连接来自一个节点和所有其他节点的数据?
好的,在同事的帮助下弄明白了。
由于您正在编辑的是一个节点列表,它将应用标准的内置处理方式,因此在每个节点后添加一个 space。所以通过添加一个 string-join()
你可以操纵它。这也解决了尾部(不必要的)管道的问题。
<xsl:value-of select="string-join(item/concat(@unit, '|', @track, '|null|', @text, '|', $trackArtist, '|null|null'), '|')" />