连接多个元素的XPath
我正在寻找一种使用XPath2.0将每两个元素连接在一起的方法:连接多个元素的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
<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'
)的串联。