これはJavascriptで有効なXPathです。
id("priceInfo")/div[@class="standardProdPricingGroup"]/span[1]
そして、これはDOMXPath-> query()で使用される有効なPHPXPathになりました。
//*[@id="priceInfo"]//div[@class="standardProdPricingGroup"]//span[1]
- この変換をすでに実行しているライブラリまたはカスタムコンポーネントを知っていますか?
- 2つの構文の違いをリストした利用可能なドキュメントを知っていますか?
私の主な関心事は、多くの違いがある可能性があることです。私はこれらの違いを特定しようとしていますが、これらを特定するのに問題があります。
質問は別の言い方をすることもできます。Javascriptはさまざまな有効なXPath形式を持つことができるため、PHPで動作するようにそれらを正規化する方法。
更新の1つには、この定義を含む有効なDTDがある場合、id()関数が有効なXPathであることが記載されています。私には入力DTDに対する力がありません。特定のDTDなしで機能するソリューションを見つける方法があれば、それは素晴らしいことです。
アップデート:
アルゴリズムを使用して、最初の形式を2番目の形式に変換したいと思います。私の入力は最初のものであり、2番目のものではありません。これを変更することはできません。
@NisonMaëlが指摘したように、2番目の形式は次のように有効なJavascript XPathです。http://jsbin.com/elatum/2/edit残念ながら、これはJavascriptXPathの「断片化」の問題に追加されます。
@salatheは、文書化された入力に有効なDTDがある場合、有効なJavascript XPathクエリがPHPで正常に機能することを指摘しました(@Dimitre Novatchevはコメントでこれについて言及しましたが、重要性を見落としていました)。残念ながら、入力DTDを制御できないため、これを克服する方法を調査するか、有効なDTDがなくても機能するソリューションを見つける必要があります。