• 締切済み

入れ子になっているhtmlのXPath指定方法

お世話になります。 下記のようにclassが入れ子になっている部分全体を、XPathで指定したいのですが どのように記述すればよいでしょうか? <div class="A">  <div class="B">   <h1>   </h1>  </div>  <div class="C">   <p>   </p>  </div> </div> XPathについては全く知識がなく調べながらなのですが、なかなか思うようにいきません。 //div[@class="A"]/div[2]/h1/div[3]/p のようにしてみましたが間違っていました。 使用する場所はyahoopipesの XPath fetch pageのモジュールです。 宜しくお願いします。

みんなの回答

回答No.1

//div[@class="A"]/div[@class="B" or @class="C"]/* でどうでしょうか。

tse-sie
質問者

お礼

早速の回答ありがとうございます。 試してみたのですが、<p></p>の中に<br>が含まれているせいでしょうか、<p>内全てを拾えませんでした… できればBとCを一つの結果として出したいのですが、Bの結果、Cの結果、というように別々に出てきてしいました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 条件付きで要素を取得したい

    条件付きで要素を取得したい 次のようなHTMLで、divのclassが「b」内のh2の要素が「ccc」の場合のdivのクラスが「d」の要素を取得したいのです。 つまり下の例では、「111」と「333」を取得したいです。 queryにどのように記述すれば良いのでしょうか? $document =<<<EOF <div class=a>  <div class=b>   <h2 class=c>ccc</h2>   <div class=d>111</div>  </div>  <div class=b>   <h2 class=c>ccc[a]</h2>   <div class=d>222</div>  </div>  <div class=b>   <h2 class=c>ccc</h2>   <div class=d>333</div>  </div> </div> EOF; $xpath = new DOMXPath($document); $xpath->query('ここの記述が知りたい');

    • ベストアンサー
    • PHP
  • テキストがaタグの外にある場合のCSS指定方法

    noteというサービスに公開されている記事について、 既に読んだ記事が分かるように既リンクの色を変えたい(a:visited) と思っています。(現状はリンクを踏んでも変わりません。) stylusというCSSのChromeアドオンを使って実現しようとしています。 HTMLの構成を見てみると下記のように、 タイトルと本文がaタグの外にいる状態なのですが、 このような構成で既リンクのタイトル(もしくは本文)の文字色を 変えたい場合はどのようなCSSを記述したら良いでしょうか。 分かる方居られましたら宜しくお願いいたします。 既読が分かるようになれば、stylusを使う以外の方法でも結構なので、 何かやり方知っている方居られたらご教授お願いいたします。 <div> <a class="link"></a> <div></div> <div> <div> ::before <div></div> <h3 class="title">タイトル</h3> <p class="main">本文</p> <div></div> ::after </div> </div> </div>

    • ベストアンサー
    • CSS
  • children div指定

    こんにちは、 下記のjquetyで自分の下にいる <div class="exp">の'background-image'を表示したいのですが、 うまく指定できません。 'div.exp'をどのように記述すればよいでしょうか? $('#T1').click(function(e) { exp = $(this).children('div.exp').css('background-image'); alert(exp); } html----------------------- <div id="T1"> <h2 class="Title"></h2> <div class="exp"></div> </div>

  • JQuery深い階層を指定するセレクタ

    $('#id1 .class1 .class2')の様な感じでid1の中にあるclass1の中のclass2のように指定することは可能でしょう? 例えば、以下の様な入れ子の階層になっていた時です。 <div id='id1'>  <div>   <div class='class1'>    <div class='class2'>ここです</div>   </div>  </div> </div>

  • DIVの入れ子で、FireFoxだとレイアウトが崩れる。

    DIVの入れ子で、FireFoxだとレイアウトが崩れる。 http://www.cool-vivi.com/?p=222 このサイトの通りにやったのですが、 FireFoxだとうまく表示されません。 下記のソースから<div id="main">を消して、入れ子じゃない状態にするとうまくいきます。 どうすればいいでしょうか? <div id="main"> <div id="menu"> </div> <div id="contents"> </div> </div>

  • タグを切り替えるJavaScriptについて

    下記のurlを参考にして、タグを切り替えるJavaScriptを使いレイアウトをしています。 http://archiva.jp/web/javascript/tab-menu.html やりたいことは各内容をIDセレクタでくくりたいのです。 <div id="page1">  <h2>page1</h2>  <p>パンクズ</p>  <div class="nav">   <ul id="tab">    <li><a href="#page1"><span>page1を選択中</span></a></li>    <li><a href="#page2"><span>page2</span></a></li>    <li><a href="#page3"><span>pave3</span></a></li>   </ul>  </div>  <p>段落1</p> </div> <div id="page2">  <h2>page2</h2>  <p>パンクズ</p>  <div class="nav">   <ul id="tab2">    <li><a href="#page1"><span>page1</span></a></li>    <li><a href="#page2"><span>page2を選択中</span></a></li>    <li><a href="#page3"><span>pave3</span></a></li>   </ul>  </div>  <p>段落1</p> </div> ...page3 このようにやりたいのですが、JavaScriptがIDセレクタの"tab"にしか対応していないため、他のページにいくとクリックが効かなくなってしまいます。 idセレクタをclassセレクタに設定し直してもidセレクタにしか対応していないため効きません。 tag2とtab3に対応させるためにはどのようにすればいいでしょうか。 よろしくお願いします。

  • classの属性の値がない場合の取得について

    次のようなHTMLで、divのclassが「a」内のdivのclassがない場合の要素(つまり下の例では、「ccc」)を 取得したいと思って、「class=''」を記述したのですが、これはマッチしませんでした・・・ かといって「//div[@class='a']」だけだと「<div class=b>」にもマッチしてしまいます。 この場合はどのような記述になるのでしょうか?_ $document =<<<EOF <div class=a><div class=b>bbb</div><div>ccc</div></div> EOF; $doc = DOMDocument::loadHTML($document); $xpath = new DOMXPath($doc); $items = $xpath->query("//div[@class='a']/div[@class='']"); foreach ($items as $item) { $arr[] = $item->nodeValue; } print_r($arr);

    • ベストアンサー
    • PHP
  • CSS classの場合とidの場合の指定方法

    h1などをブロック要素ごとに、違うスタイルを適用させたく、下記のように、記述したのですが、ブロック要素をidで指定する場合は同じように、#mainと#main h1で指定し、<div id="main">とすればよいのでしょうか? それとも、h1は.main h1 とクラス指定して、<div id="main" class="main">とした方がよいのでしょうか?変な質問かもしれませんが、どちらも同じように表示するので、どちらがよいのか分かりません. <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <style type="text/css" media="screen"><!-- .main { width:100px;} .main h1 { color:red;} --></style> </head> <body> <div class="main"> <h1>aaa</h1> </div> </body> </html>

    • ベストアンサー
    • HTML
  • CSSのクラス指定について

    CSSのクラス指定で質問させていただきます。 下記の条件で「a-クラスのついたDIV」の中で、 なおかつ一番初めに表示される[a-]の背景色だけ「赤色」にする方法を教えてください。 「a-1」「a-2」「a-3」はそれぞれ時間によって消えたりし、[x]が挿入されたりします。 以上のように条件が変わっても、常にclass=「a-」のついた一番上のDIVの背景は赤色になります。 HTML------------------- <div class="wrapper"> <div class="x"></div> <div class="a-1"></div> <div class="a-2"></div> <div class="a-3"></div> </div> css----------------------- [class^="a-"]{}; nth-of-typeを使って指定できると思うのですが、いまいちうまくできません>< ぞうぞよろしくお願いします。

    • ベストアンサー
    • CSS
  • divで囲まれたpaddingの指定を特定のタグだけ解除(margin:0px)する方法

    タイトルに上手く書けなかったのですが、divでpaddingを指定して余白を作っています。 そもそもはmargin leftでまかないたかったのですが、ほとんどはfloat指定しているため、IE6で倍に広がりなくなくpadding指定しています。 ただ、中身のテキストや画像はいいのですが、タイトルにあたり<h2>タグだけをどうしても左はしに寄せたいと悪戦苦闘しています。 なんとかいい方法はないものでしょうか? <div class="center-box2"> <h2>あああ</h2> <p id="top-text">いいい</p></p> <h3 class="caution-title1">あああ</h3> <img src="img/aaa.jpg" width="145" height="105" class="caution-img"> <p>いいい</p> </div> <h2>にはCSSで背景画像を使用し、テキストはindentで-9999を指定しています。 <h3>や<img>のpaddingの余白は指定のままで、タイトルの<h3>だけを何とかしたいと考えています。 どうかよろしくお願致します。

    • ベストアンサー
    • HTML