我想加入与表达式匹配的所有节点的值,并用逗号分隔。例如,以下xml应返回" num1,num2,num3"
<products>
<product>
<id>1</id>
<other>y</other>
<notarget>x</notarget>
<target>num1</target>
<target>num2</target>
<target>num3</target>
</product>
</products>
XPath /*[name()='products']/*[name()='product']/*[name()='target']
应该获取元素,但我不了解如何加入它们。
答案 0 :(得分:1)
如果没有主机语言的帮助,则无法在纯XPath 1.0中完成。事实上,即使在宿主语言的帮助下也很难,因为XPath 1.0没有“字符串序列”的概念。
答案 1 :(得分:1)
<xsl:value-of select="[set of nodes]" separator="."/>
我想做同样的事情,并使用XSLT 2.0使用spacer属性来解决它
答案 2 :(得分:0)
<xsl:for-each select="/products/product/target">
<xsl:if test="position() != 1">,</xsl:if><xsl:value-of select="text()"/>
</xsl:for-each>
如果您想稍后重复使用它,可以将它放在变量中:
<xsl:variable name="concat">
<xsl:for-each select="products/product/target">
<xsl:if test="position() != 1">,</xsl:if><xsl:value-of select="text()"/>
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="$concat"/>
答案 3 :(得分:0)
答案 4 :(得分:0)
将concat
与分隔符(每https://stackoverflow.com/a/25766054/148889)
concat(//SomeElement/text(),'_',//OtherElement/text())