2017-08-04 65 views
0

我想給標籤元素值組合成單個值需要將所有的元素放在一起來重視

的Xml我有:

<h1>aaa</h1> 
<h1>bbb</h1> 
<h1>ccc</h1> 

XSL我使用:

<xsl:template match="h1[h1]"> 
     <h1><xsl:value-of select="h1"/></h1> 
    </xsl:template> 

但我目前變得像

<h1>aaa</h1> 
<h1>bbb</h1> 
<h1>ccc</h1> 

但是我需要是這樣的:

<h1>aaa bbb ccc</h1> 

請推薦一些代碼。在此先感謝

+0

如果你想組相鄰'h1'中的元素XSLT 2.0然後在https://www.w3.org/TR/xslt20/#grouping-examples中看到使用'for-each-group group-adjacent'的例子。 –

+0

你的問題不清楚,尤其是,上下文。請發佈[mcve]。 –

回答

1

您的代碼:<h1><xsl:value-of select="h1"/></h1>是好的,但你把它寫在一個錯誤的地方 。

你應該在標籤(方含h1 標籤)匹配的模板使用,並添加一個空模板h1,防止原 h1元素由身份模板的再現。下面給出

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:output method="xml" encoding="UTF-8" indent="yes" /> 
    <xsl:strip-space elements="*"/> 

    <xsl:template match="main"> 
    <xsl:copy> 
     <h1><xsl:value-of select="h1"/></h1> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="h1"/> 

    <xsl:template match="@*|node()"> 
    <xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy> 
    </xsl:template> 
</xsl:transform> 

對於輸入:

請看下面的腳本

<main> 
    <h1>aaa</h1> 
    <h1>bbb</h1> 
    <h1>ccc</h1> 
    <h2>xxx</h2> 
</main> 

它打印:

<main> 
    <h1>aaa bbb ccc</h1> 
    <h2>xxx</h2> 
</main> 
+0

謝謝@Valdi_Bo,它的工作正常 – User501

相關問題