我想使用XPath从<li>
列表中的所有specialList
元素中提取所有文本,并返回一个以空格或逗号分隔的字符串。这可能吗?
让我们说DOM包含以下HTML:
<ul class="specialList">
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
</ul>
期望输出
one, two, three, four
OR
one two three four
答案 0 :(得分:9)
在 XPath 1.0 中,只有在使用concat(...)
提前了解元素数量时才可以使用此选项:
concat(//li[1], ', ', //li[2], ', ', //li[3], ', ', //li[4])
如果你很幸运,你可以返回//li/text()
的所有结果字符串,并设置XPath处理器的输出参数,以便按需要连接它们。这取决于处理器,所以没有通用的解决方案,如果你想在XPath中进一步处理结果,这是没办法的。
在 XPath 2.0 中,您可以使用fn:string-join($sequence, $delemiter)
输入任意长度:
fn:string-join(//li, ', ')
答案 1 :(得分:1)
虽然这可能使用XSLT 1.0
<xsl:for-each select="ul/li">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:for-each>