我有一个父元素(字体),我想选择 text() 或 span 元素的所有子元素(直接后代)。我将如何构建这样的 xpath?
问问题
4981 次
1 回答
3
如果当前节点是font
元素,则如下所示:
text()|span
否则,您必须始终结合|
两个完整的 XPath - 一个用于文本,一个用于跨度,例如:
font/text()|font/span
如果当前节点就在上面font
- 或
//a[text()='View Larger Map']/../../../../div[contains(@class, 'paragraph')][3]/font/span|//a[text()='View Larger Map']/../../../../div[contains(@class, 'paragraph')][3]/font/text()
如果从具有一些复杂选择标准的根开始。
如果您有像最后一个这样的复杂路径,最好将部分路径存储在变量中 - 例如在 XSLT 中:
<xsl:variable name="font" select="//a[text()='View Larger Map']/../../../../div[contains(@class, 'paragraph')][3]/font"/>
. . .
<xsl:for-each select="$font/span|$font/text()">
. . .
</xsl:for-each>
另一种可能性是做这样的事情:
//a[text()='View Larger Map']/../../../../div[contains(@class, 'paragraph')][3]/font/node()[name()='span' or name()='']
之所以有效,是因为name()
它为节点返回了一个空字符串text()
——但我不能 100% 确定它是否适用于所有 XPath 处理器,并且它可能会错误地匹配注释节点。
于 2012-05-30T20:33:51.323 回答