0

親要素 (font) があり、text() または span 要素のすべての子要素 ​​(直接の子孫) を選択したいと考えています。そのような xpath をどのように構築しますか?

4

1 に答える 1

3

現在のノードがfont要素の場合、次のようになります。

text()|span

それ以外の場合は、常に|2 つの完全な 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()機能しますが、すべての XPath プロセッサでそのように機能するかどうかは 100% 確信が持てず、誤ってコメント ノードと一致する可能性があります。

于 2012-05-30T20:33:51.323 に答える