質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
XPath(XML Path)

XML Path Language (XPath; XMLパス言語)は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文の事をいいます。XPathはXMLとは別の構文を使用します。XMLドキュメントの抽象、論理ストラクチャ上で動作します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

600閲覧

document.evaluateで指定するUNORDERED系の結果タイプのメリット

_kari_

総合スコア34

XPath(XML Path)

XML Path Language (XPath; XMLパス言語)は、マークアップ言語 XML に準拠した文書の特定の部分を指定する言語構文の事をいいます。XPathはXMLとは別の構文を使用します。XMLドキュメントの抽象、論理ストラクチャ上で動作します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/10/20 14:08

編集2021/10/20 14:21

document.evaluate()でノードを検索するとき、どのように結果を返すかをXPathResultの定数で指定しますよね。

その際、snapshotが欲しいならUNORDERED_NODE_SNAPSHOT_TYPEORDERED_NODE_SNAPSHOT_TYPEを、イテレータが欲しいならUNORDERED_NODE_ITERATOR_TYPEORDERED_NODE_ITERATOR_TYPEを指定しますが、このUNORDERED系の結果タイプにはどのようなメリットがあるのでしょうか?

ドキュメント内の順番にソートされているORDERED系のほうが何かと便利な気がします。
UNORDERED系の、順番が保証されていないことによるメリットがどんなものなのか、いまいちわかりません。
もちろん順番が保証されていなくても問題ない場面で使えることはわかりますが、別にORDERED系を使ってもいいわけですし、積極的にUNORDERED系を採用する場面が想像できません。

どのような場面で、UNORDERED系の指定はORDERED系よりも有用になるのでしょうか?
あるいは、UNORDERED系にあってORDERED系にないメリットは何なのでしょうか?

追記
「問題・課題が含まれていない質問」ぽい気がしてきたので少し補足を…
いつもdocument.evaluate()でノードセットが欲しいときは、なんとなくでORDERED_NODE_SNAPSHOT_TYPEORDERED_NODE_ITERATOR_TYPEを指定しています。
それで一応はうまくいっているのですが、UNORDERED系が適する場面でも気づかぬうちにORDERED系を使ってしまっているのではないかと思い、UNORDERED系がベターな場面を調べてみました。
ところが、document.evaluate()関連はネット上の情報量が比較的少なく、なかなか情報が得られませんでした。
そこで、質問投稿に至った次第です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

UNORDERED 系の方が、対応する ORDERED 系のタイプより高速に処理されます。
WebKit (Safari) と Blink (Chrome) のソースを見る限り、UNORDERD の方が常に高速になるはずです。

とは言え結果のノードセットが相当大きくないと体感できるような差にはならないと思います。「XPathの処理速度が遅くて気になったら UNORDERED 系を試してみる」、ぐらいの心構えでよいのではないかと思います。

投稿2021/10/20 14:34

編集2021/10/20 14:50
int32_t

総合スコア21695

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_kari_

2021/10/21 07:51

ありがとうございます! 速度面で違いが出てくるんですね。 遅さが気になったら速度に優れるUNORDERED系を試してみる、ということを覚えておきます。 お世話になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問