XPathで2つのクエリをまとめる方法

このQ&Aのポイント
  • XPathを使用して2つのクエリをまとめる方法についてアドバイスをお願いします。
  • 現在、3行目のクエリを一時的に使用していますが、より効率的な方法があれば教えてください。
  • また、ソースに不定期に<storong>が入ることがあり、これに対処する方法も知りたいです。
回答を見る
  • ベストアンサー

XPathで、2クエリをまとめたい

下のコメントアウトしている2つのクエリをまとめたいと思っています。今のところ3行目のものを暫定で使っています。 ソースに不定期に<storong>が入ってくるので困っています。 //$entries = $xpath->query("//div[@style='FONT-SIZE: 1.4em']/ol/li/strong"); //$entries = $xpath->query("//div[@style='FONT-SIZE: 1.4em']/strong/ol/li/strong"); $entries = $xpath->query("//li/strong"); 是非アドバイスお願いします。

  • fabu
  • お礼率69% (384/554)
  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

<?php $xmlstr = <<<XML <?xml version="1.0" encoding="UTF-8"?> <hoge> <div style='FONT-SIZE: 1.4em'> <ol> <li><strong>あああ</strong></li> </ol> <strong> <ol> <li><strong>いいい</strong></li> </ol> </strong> </div> <ul> <li><strong>ううう</strong></li> </ul> </hoge> XML; $dom = new domDocument(); $dom->loadXML($xmlstr); $xpath = new domXPath($dom); $xpathstr1 = "//div[@style='FONT-SIZE: 1.4em']/ol/li/strong"; $xpathstr2 = "//div[@style='FONT-SIZE: 1.4em']/strong/ol/li/strong"; // http://www.w3.org/TR/xpath#node-sets // The | operator computes the union of its operands, which must be node-sets. $entries = $xpath->query($xpathstr1 . "|" . $xpathstr2 ); for ($i=0; $i < $entries->length; $i++){ $node = $entries->item($i); print $node->textContent; //うううは表示されない } ?>

fabu
質問者

お礼

テストしていたらお礼をするのを忘れていました。。すみません。 バッチリ動きました。 コツをつかむ必要がありそうです。Xpath。。 ありがとうございました。

関連するQ&A

  • jQuery 子孫セレクタがうまくいかない

    最近jQueryを勉強しはじめた者です。勉強していく中で、 疑問が生じたので、質問させていただきます。 jQueryの子孫セレクタが意図したとおりに動きません。 具体的には : $(function(){ $("p strong").remove(); }); : <p><em><strong>削除される</strong>abcdefg</em></p> <p><div><strong>削除されるはず</strong>abcdefg</div></p> : と記述した時、  <strong>削除されるはず</strong>  の部分が削除されません。   <strong>削除される</strong>  の部分は削除されます。 以下のときは、2つとも削除されます。 : $(function(){ $("li strong").remove(); }); : <ol> <li><em><strong>削除される</strong>abcdefg</em></li> <li><div><strong>削除されるはず</strong>abcdefg</div></li> </ol> : 私は、どの場合であっても削除されると考えていました。 ブロックレベル要素とインライン要素が関係していそうな感じはするのですが、 なぜ、このようになるか理由がわかりません。 よろしくお願い申し上げます。

  • google画像検索のように画像を表示させたい

    http://oshiete1.goo.ne.jp/qa4869855.html で質問した者です。 「googleのように 画像」で検索したところ http://okwave.jp/qa4567914.html このページがHITしました。 そこでNo3の方のソースを元に画像を表示させてみました。 ---ここから--- <style type="text/css"> <!-- p{ text-indent: 1em;} body>h1,body>h2{ text-align:center;} p.abstract{ margin-left: 20%; margin-right: 20%;} div.ImageList{ position: relative; margin-left:20%;margin-right:10%;width: auto; border: solid 2px blue;} div.ImageList ol{ display:block; margin:0px; padding:0px;} div.ImageList>ol>li{display: block; margin: 2px;padding:0px;border:solid 1px gray; width:160px;height: 100px;float:left;text-align:center;} div.ImageList>ol>li>ol>li{display:block;font-size:0.8em;text-align:left;padding:0.2em;text-indent:1em;} div.ImageList hr{ clear:both;visibility:hidden;} div.ImageList div{ position: absolute; width: 21%; left: -23%;top: 0px;font-size:0.9em} --> </style> ---ここまで--- このスタイルシートについてなのですが、 画像のまわりについている黒の薄い線と、大きな青い線を消すことは出来ないでしょうか? この二つの枠線を消してもっと画像どうしをギュッと詰め込みたいのです。 どの部分を削れば削除することが出来ますか?

    • ベストアンサー
    • HTML
  • IE6だと表示がおかしく表示される。

    添付写真の上がIE9での表示で、下はIE6(IETesterで表示)ですが。 殆んど同じ記述で「写真」の無いページは、正しく表示しています。 必要と思われるタグは、下記の内容です。なお親ホントは100%です。 <div style="width:32%;float:left;"><img src="省略></a></div> <div style="width:59%;float:left;"><img src="省略"></a></div> <div style="font:1em/2.8em 'MS 明朝',serif;width:27.9em;float:clear:both;"> <div style="margin-left:9.52em;font-weight:bold;clear:both;">九月十八日</div> <div style="clear:both;width:27.9em;"> <div style="width:11.63em;font:1em/2.8em 'MS 明朝',serif;float:left;">省略</div> <div style="width:5.81em;font:1em/1.4em 'MS 明朝',serif;float:left;">省略</div> <div style="width:10.34em;font:1em/2.8em 'MS 明朝',serif;float:left;">省略</div> 省略 </div> <div style="font:1em/2.8em 'MS 明朝',serif;width:27.9em;float:"> <div style="clear:both;width:27.9em;"> <div style="width:11.63em;font:1em/2.8em 'MS 明朝',serif;float:left;margin-top:1.5em;">省略</div> <div style="width:5.81em;font:1em/1.4em 'MS 明朝',serif;float:left;margin-top:1.5em;">省略</div> <div style="width:10.34em;font:1em/2.8em 'MS 明朝',serif;float:left;margin-top:1.5em;">省略</div> 省略 </div> 誤り内容を教えて下さい。 http://ryuso.info/test/ryu180_250.htm

    • ベストアンサー
    • CSS
  • わたしはメモ帳でホームページをつくったのですがどうしても画像の上にマウ

    わたしはメモ帳でホームページをつくったのですがどうしても画像の上にマウスのカーソルをかさねても 文字が表示させることが出来ません。 htmlに詳しい方どうか教えてください。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 TRANSITIONAL//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <title>welcome!有限会社ロイヤルハイネスのホームページへ</title> <style type="text/css"> body {color:#444444; background-color:#66aa66; text-align:center} div#container {border-style:solid; border-width:2px; border-color:#bbffaa; padding:20px; background-color:#ffffff; width:600px; margin-left:auto; margin-right:auto} h1 {font-size: 1.25em; font-family:helvetica,sans-serif; color:#66aa66} p {font-size: 0.1em} address {font-size: 0.1em; font-style:normal} a {color:#33aa88} a:hover {color:#88aaff} address a:hover {color:#ffaa00} ul {list-style-type:none; margin-left:0; padding-left:0; background-color:#bbffaa; padding-top:3px; padding-bottom:3px; padding-left:20px; padding-right:20px} li {display:inline; padding-right:12px; font-size:0.75em} li a {text-decoration:none} p#message {width:300px; margin-left:auto; margin-right:auto; text-align:left; line-height:1.3} </style> </head> <body> <div id="container"> <h1>royal hyness homepage</h1> <p>ホームページ開設してみました。</p> <ul> <li><a href="about.html">有限会社ロイヤルハイネスの管理物件について</a></li> <li><a href="toiawase">お問い合わせ</a></li> <li><a href="http://>ブログ</a></li> <li><a href="2ldkapato">2LDK</a></li> <li><a href="2dkapato">2DK</a></li> <li><a href="1kapato">1K</a></li> </ul> <p><img src="top.jpg"alt="ニューヨーク・レコード日記"/> <p> <strong>倉敷市中畝のペットOKのアパート物件</strong>の情報を公開しています。 <strong>是非問い合わせ</strong>の方お願いします。 </p> <address>Copyright(C)<a href="mailto:royalhyness@bridge.ocn.ne.jp"> royal hyness Diary</address> </div> </body> </html>

  • ワードプレス

    ワードプレス初心者です。 記事内ジャンプタグが何か間違っているようで、リンクが404エラーになります。 使っているのはSImplicity2です。 例 <span style="font-size: 16px;"><a href="a#08">入院準備</a></span> リンク先 <h3 id="a08"><span style="color: #800080; font-size: 18px;"><strong><em>入院準備</em></strong></span></h3> 何が間違っているでしょうか? ご教示くださいませ。

    • ベストアンサー
    • HTML
  • ヘッダー部分に背景色をつける。

    森の工房について 季節のイベント お問い合わせ ブログ、の部分について背景色をつけたいのですがどうもうまくついていません。 ちなみに僕が書いたhtmlを書いておきます。誤りがありましたらご指摘お願いいたします。 <!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transititional//EN""http://www.w3.org/TR/xhtml1/DTD xhtml1-transitional.dtd"> <html xmlns="http://www.w3g.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" Content="text/html;charset=utf-8"> <title>森の工房[Forest Studio]-森の工房について</title> <style type="text/css"> body {color:#444444; background-color:#66aa66} div#container {border:solid 2px #bbffaa; padding:20px; background-color:#ffffff} div#header {background-color:#66aa66} div#header p {color:#222222} h1 {font-size:1.25em; font-family:Verdana,Helvetica,sans-serif; color:#ffffff} p {font-size:0.75em; line-height:1.4} address {font-size:0.75em; font-style:normal} li {text-decoration:none} h2 {font-size:1em; border-left:solid 16px #66aa66; padding-left:5px} h3 {dont-size:0.875em; border-bottom:solid 2px #66aa66; padding-bottom:3px} a {color:#33aa88} a: {hover:#88aaff} address a:hover {color:#ffaa00} ul {list-style-type:none; margin-left:0; padding-left:0; back-ground-color:#bbffaa; padding:3px 20px} li {display:inline; padding-right:10px; font-size:0.75em} li a {text-decoration:none} </style> </head> <body> <div id="container"> <div id="header"> <h1>Forest Studio</h1> <p>自然のあれこれをお届けする森の工房です</p> </div> <ul> <li><a href="about.html">森の工房について</a></li> <li><a href="event.html">季節のイベント</a></li> <li><a href="contact.html">お問い合わせ</a></li> <li><a href="http://.xxx.xxx/">ブログ</a></li> </ul> <h2>森の工房について</h2> <p>Forest Studioでは、自然の中にある「森の工房」を 運営しています。森の工房では、四季を通してイベント を開催したり、さまざまな商品の開発を行っています。 </p> <h3>森の中にある工房</h3>

    • ベストアンサー
    • HTML
  • 同じ内容をフレーム分割と対象ページで異なる

    ルビーもFirefoxでも表示しようと作成しましたがIE9で下記の写真のように表示されました。 下の写真は、左側がフレーム分割の表示 右側が対象ページの内容です。 なおMACブラザーでも縦書きは、IE6のみ 1文書を除いて問題なく表示していますが。 ソース <div style="margin-left:9em;"><div style="margin-bottom:-0.6em;font-size:0.71em;">うえ</div></div> <div style="width:9.2em;float:left;margin-top:0.4em;">1駿州庵原之郡樽野</div><div style="width:1.2em;float:left;margin-top:0.4em;">上</div><div style="width:25em;float:left;vertical-align:top;">村武田甚右<sup>衛</sup>門子ニ、兄に左次右衛門</div></div> <div style="width:57em;clear:both;margin-top:0.4em;"><div style="margin-left:7em;width:9em;float:left;vertical-align:top;">額</div><div style="width:6em;float:left;vertical-align:top;"><div style="font-size:0.71em;">おなじく</div></div><div style="width:7em;float:left;vertical-align:top;">房</div></div> <div style="width:57em;clear:both;"> て、しゝのひたゐしろく、せすじ 同  <a href="javascript:gk_c1('t-03');">しゝふさ</a>のことく成</div> お分かりの方いましたら教えて下さい。 フレーム分割ページ http://ryuso.info/h/h002e5m.htm 対象ページ http://ryuso.info/h/heng2da.htm

    • 締切済み
    • CSS
  • リストタグ firefoxでは表示されるがIE7ではマーカーが表示されない

    ご教授ください。 リストタグで、<ul>と<ol>を入れ子で使っています。 firefoxでは意図どおりに表示されるのですが、IE7ではマーカーがどちらも表示されません。 [html] (略) <ol><li>こんなことをしています</li>   <li>あんなこともしています   <ul><li>あんなことその1</li>     <li>あんなことその2</li>     <li>あんなことその3</li></ul></li>     <li>ちょっとしたこともしてます</li>   <li>どえらいこともしています</li>   </ol> (略) [css] ol { list-style-type:decimal; line-height:1.6em; width:600px; } ul { list-style-type:disc; line-height:1.2em; width:600px; } [firefoxでは] 1.こんなことをしています 2.あんなこともしています  ・あんなことその1  ・あんなことその2  ・あんなことその3 3.ちょっとしたこともしてます 4.どえらいこともしています [IE7では] こんなことをしています あんなこともしています  あんなことその1  あんなことその2  あんなことその3 ちょっとしたこともしてます どえらいこともしています このように表示されます。 以前、同じようにリストタグを使ったときはできたような気がするのですが、何か間違っているのでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • CSSのタグについて

    今CSSを勉強中の者です。一つ質問させて下さい。 とあるサイトで --------------------------------------------- <div id="album"> <ul> <li><a id="photo" href="#">  <em><img src="album/img/photo.jpg" /></em>    <span>写真1</span></a></li> </ul> </div> --------------------------------------------- とHXTML表記があり、CSSの設定は下記のようになっていました。 (※一部抜粋) --------------------------------------------- div#album ul li a em, div#album ul li a span  {  display: none;  } --------------------------------------------- そこで質問です。<em>や<span>のタグを単独で使った 事がなく、どうしてこの二つのタグが使われているの かがわかりません。 特にemはフォントサイズの指定ではないのでしょうか? それともCSSで効果の設定をするために無理に入れて いるだけなのでしょうか。 勉強中の為に訳の分からない質問なのかも知れませんが どなたか分かりやすく教えて頂けますと幸いです。

  • div の改行に関して

    div の使い方に関して教えてください。 添付した画像1のHTMLの場合、改行されて■の次の段に「Grade」が来てしまいます。 しかし、画像2のHTMLの場合、なぜか「Grade」の次の段落に■がきてしまいます。 改行なしで■の右隣にGradeが来るようにするにはどうすればいいでしょうか? 添付画像の中の画像1のHTML ■<div style="font-family: Arial,sans-serif,Verdana; font-size: 20px;"><b><STRONG>Grade:</STRONG></b> <br> Near Mint: </div> <br> 添付画像の中の画像2のHTML ■<div style="font-family: Arial,sans-serif,Verdana; font-size: 20px; display: inline-block; _display: inline;"><b><STRONG>Grade:</STRONG></b> <br> Near Mint: </div> <br>

    • 締切済み
    • CSS

専門家に質問してみよう