连接多个元素的XPath

连接多个元素的XPath,xpath,concatenation,Xpath,Concatenation,我正在寻找一种使用XPath2.0将每两个元素连接在一起的方法: <item> <element class='1'>el1</element> <element class='2'>el2</element> <break>break</break> <element class='1'>el3</element> <element clas

我正在寻找一种使用XPath2.0将每两个元素连接在一起的方法:

<item>
    <element class='1'>el1</element>
    <element class='2'>el2</element>
    <break>break</break>
    <element class='1'>el3</element>
    <element class='2'>el4</element>
    <break>break</break>
    <element class='1'>el5</element>
    <element class='2'>el6</element>
    <break>break</break>
    <element class='1'>el7</element>
    <element class='2'>el8</element>
</item>
这是两个有意义的元素之间的“休息”,还有一些类可以帮助完成,但我仍然无法完成

因为我对XPath不熟悉,所以到目前为止,我得出的结论是错误的,因为concatenate至少需要两个参数

//item/concat(element[preceding-sibling::break | following-sibling::break])

我不确定您是否也对XSLT 1.0解决方案持开放态度,但这对我来说适用于您的输入xml:

  <xsl:template match="/item">
     <xsl:apply-templates select="element[1]|break"/> 
  </xsl:template>

  <xsl:template match="element[1]">
    <xsl:text>
</xsl:text>
    <xsl:value-of select="."/>
    <xsl:value-of select="following-sibling::*[1]"/>
  </xsl:template>

  <xsl:template match="break">
    <xsl:text>
</xsl:text>
    <xsl:value-of select="following-sibling::*[1]"/>
    <xsl:value-of select="following-sibling::*[2]"/>
  </xsl:template>


我有两个匹配start元素或break元素的模板。我使用的是下两个元素。
元素用于强制换行。

我不确定您是否也打开了XSLT 1.0解决方案,但这对我来说适用于您的输入xml:

  <xsl:template match="/item">
     <xsl:apply-templates select="element[1]|break"/> 
  </xsl:template>

  <xsl:template match="element[1]">
    <xsl:text>
</xsl:text>
    <xsl:value-of select="."/>
    <xsl:value-of select="following-sibling::*[1]"/>
  </xsl:template>

  <xsl:template match="break">
    <xsl:text>
</xsl:text>
    <xsl:value-of select="following-sibling::*[1]"/>
    <xsl:value-of select="following-sibling::*[2]"/>
  </xsl:template>
//item/element[@class='1']/concat(., following-sibling::element[1])

我有两个匹配start元素或break元素的模板。我使用的是下两个元素。
元素用于强制换行

//item/element[@class='1']/concat(., following-sibling::element[1])
您希望结果序列包含每个
class='1'
元素的一个项,该项的值是该元素及其下一个同级元素(匹配的
class='2'
)的串联

您希望结果序列包含每个
class='1'
元素的一个项,该项的值是该元素及其下一个同级元素(匹配的
class='2'
)的串联。