如何在XPath中连接节点所有子节点的内容?

如何在XPath中连接节点所有子节点的内容?,xpath,Xpath,使用XPath是否可以获得节点所有子节点的连接视图?我正在寻找类似JQuery.html()方法的东西 例如,如果我有以下XML: <h3 class="title"> <span class="content">this</span> <span class="content"> is</span> <span class="content"> some</span> <s

使用XPath是否可以获得节点所有子节点的连接视图?我正在寻找类似JQuery.html()方法的东西

例如,如果我有以下XML:

<h3 class="title">
    <span class="content">this</span>
    <span class="content"> is</span>
    <span class="content"> some</span>
    <span class="content"> text</span>
</h3>
像这样

h3[@class='title']/descendant::*/text()

还是这个?

是的,这似乎有帮助,但它扭转了我的问题。现在,它将拾取“Title 2 is complex”中的文本,但不会拾取没有跨距的“Title”中的文本。是否有XPath可以同时处理这两个问题?最糟糕的是,目前只有跨距,但实际上可能有任何标记。我真的很希望有一个解决方案可以从任何标签中提取文本。一个新的解决方案:这将提取所有后代的内容(递归!)啊!解决方案似乎是您的建议,使用//运算符代替span(它将从当前节点中选择与选择匹配的节点,无论它们位于何处)。这似乎奏效了。似乎我无法在注释中放入代码片段,但select子句的h3部分现在看起来是这样的:h3[1][@class='title'][//text()=current()//text()])。我在XSL中尝试了子体解决方案,它与/span…/text()选项具有相同的效果。它与复杂标题匹配,但与简单标题不匹配。似乎//text()是唯一一个同时匹配这两个元素的。如果元素没有子元素,最好使用
后代或self
来检索元素本身的文本。已添加完整样式表以响应添加的完整所需输出。这是一个方便的工具(适用于具有类似任务的任何其他人)
<xsl:template match="h3[@class='title']">
...
    <xsl:apply-templates select="following-sibling::p[
        generate-id(preceding-sibling::h3[1][@class='title'][text()=current()/text()])
        =
        generate-id(current())
    ]"/>
...
</xsl:template>
<section>
    <title>Title</title>
    <p>
        <content>Some</content>
        <content> text</content>
        <content> for</content>
        <content> this</content>
        <content> section</content>
    </p>
    <p>
        <content>Another</content>
        <content> paragraph</content>
    </p>
</section>
<section>
    <title>
        <content>Title</content>
        <content> 2</content>
        <content> is</content>
        <content> complex</content>
    </title>
    <p>
        <content>Here</content>
        <content> is</content>
        <content> some</content>
        <content> text</content>
    </p>
</section>
h3[@class='title']/span[@class='content']/text()
h3[@class='title']/descendant::*/text()