0

CSSまたはXPathを使用して、次のコードでテキスト「次へ」のリンクを取得するにはどうすればよいですか?

<div id="pagination">
    <a href="link">2</a>
    <a href="link">3</a>
    <a href="link">4</a>
    <a href="link">5</a>
    <a href="link">6</a>
    <a href="link">7</a>
    <a href="link">8</a>
    <a href="link">9</a>
    <a href="link">10</a>
    <a href="link">Next</a>
    <a href="link">Last</a>
</div>
4

4 に答える 4

2

何が欲しいのかはっきりしていません。10番目のリンクが必要な場合:

require 'nokogiri'

doc = Nokogiri::HTML(<<EOT)
<div id="pagination">
    <a href="link">2</a>
    <a href="link">3</a>
    <a href="link">4</a>
    <a href="link">5</a>
    <a href="link">6</a>
    <a href="link">7</a>
    <a href="link">8</a>
    <a href="link">9</a>
    <a href="link">10</a>
    <a href="link">Next</a>
    <a href="link">Last</a>
</div>
EOT

doc.search('a')[9]
=> #<Nokogiri::XML::Element:0x80763880 name="a" attributes=[#<Nokogiri::XML::Attr:0x80763498 name="href" value="link">] children=[#<Nokogiri::XML::Text:0x80762fd4 "Next">]>

または:

doc.at('//a[9]')

どの要素番号になるかわからないが、テキストをキーオフしていて、CSSを使用したい場合は、次のようにします。

doc.search('a').select{ |n| n.content == 'Next' }.first

残念ながら、CSSはタグのテキストを検索できないため、少し工夫する必要があります。XPathはそれを行うことができます:

doc.at('//a[text()="Next"]')
于 2012-09-10T07:04:08.743 に答える
1
path = "/a[.='Next']"

そのパスをクエリするとa、「次へ」の要素がそのまま取得されtext()ます。

于 2012-09-10T07:01:49.430 に答える
0

a文字列値が"Next"最後であるが、の子が1つであるという規則がある場合はdiv、次を使用します

//div[@id='pagination']/a[last()-1]

ここでは、属性の値が-divのXMLドキュメントに最大で1つ存在すると仮定します。これは、XHTMLドキュメントでは公正な仮定です。id"pagination"

XSLTベースの検証

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="node()|@*">
     <xsl:copy-of select="//div[@id='pagination']/a[last()-1]"/>
 </xsl:template>
</xsl:stylesheet>

この変換が提供されたXMLドキュメントに適用される場合

<div id="pagination">
    <a href="link">2</a>
    <a href="link">3</a>
    <a href="link">4</a>
    <a href="link">5</a>
    <a href="link">6</a>
    <a href="link">7</a>
    <a href="link">8</a>
    <a href="link">9</a>
    <a href="link">10</a>
    <a href="link">Next</a>
    <a href="link">Last</a>
</div>

XPath式が評価され、この評価から選択されたノードが出力にコピーされます。

<a href="link">Next</a>
于 2012-09-10T13:01:09.390 に答える
0

実際には、css を使用してこれを行うこともできます。

 #pagination a:nth-last-child(2)

常に最後から2番目であると仮定し、css 3セレクターを使用できます

于 2012-09-10T22:16:22.327 に答える