私はMicrosoftを使用する代わりの方法を研究していましたがXslCompiledTransform
、すべてが主にSaxonを指し、次にXQSharpを指しているようでした。Saxonのドキュメントを調べ始めたとき、XQueryは、XQueryのマークアップほど簡潔ではないXSLTと同等の機能を実行できることがわかりました。
はるかに詳細な構文に値するXSLTはXQueryに対してどのような利点を提供しますか?
作成できるのはテンプレート機能でしょうか?
一般に、多くの重複があります。両方とも、基礎となる XPath 実装に根ざしています。XSLT と XQuery のどちらを使用するかについては、証拠があります。XSLT は変換に優れており、XQuery はクエリに優れています。
したがって、XQuery を次の目的で使用します。
逆に、次の場合は XSLT を使用します。
離れるべき最大の理由XslCompiledTransform
は、それが単なる XSLT 1.0 プロセッサーであるということです。
XSLT 2.0 と XQuery 1.0 の機能の大部分は重複しており、ほとんどの場合、構文が異なる類似の言語です (C# や VB に少し似ています)。
XSLT ははるかに冗長ですが、そのテンプレート機能により多くの機能が追加され、特にノード ツリーに小さな変更を加える場合、XQuery で複製するのはかなり面倒です。XQuery で特に扱いにくい主な機能は、<xsl:template match="..." />
や など<xsl:copy>...</xsl:copy>
です。
XQuery は、テンプレート機能が必要でない限り、はるかに簡潔な構文 (IMHO) を備えており、より高度な計算や大きなドキュメントからのデータの取得にははるかに優れていることがわかりました。
XQuery はデータベース言語と見なされることがよくあります。多くのデータベースがこのように使用していますが、これが唯一の用途ではありません。データベースでの言語の一部の実装は非常に制限されています。別のコメンターは、XQuery は「非常に強く型付けされている」と主張しています。静的型付け機能を使用していない限り、XQuery は XSLT より厳密に型付けされているわけではありません。一部のデータベース実装では静的型付け機能を使用する必要がありますが、他のほとんどの実装ではこれを使用しなくなりつつあります。
彼はまた、XQuery は「より大規模で複雑なもの」には向いていないと主張しています。私は正反対のことを主張したでしょう。構文の簡潔さと風味により、複雑な関数や計算を XQuery で作成することがはるかに簡単になります。私はXQuery でレイトレーサーを作成しましたが、これは非常に自然に感じられます。XSLT でこのように計算が複雑なものを記述するのは、はるかに困難 (確かに冗長) になると思います。
要約すれば:
変換には XSLT の方が自然です。おおむね適切な構造のドキュメントがあり、コンポーネントを変換する場合 (たとえば、XML ファイルの HTML バージョンをレンダリングする場合) に適しています。
さまざまなソースから新しい XML ドキュメントを作成したり、ドキュメントの構造を変更したりする場合は、XQuery の方が自然です。
オーバーラップはかなり大きく、多くの場合、「正しい」選択はありませんが、間違った選択をすると、粒子に逆らって作業する傾向があることに注意してください。
XSLT は、1 つのxml ドキュメントを取得し、それを別のもの (csv、html など) または別の xml 形式 (xhtml など) に変換するように設計されています。
XQuery は、1 つまたは複数のxml ドキュメントから情報を抽出し、その結果を新しい xml ドキュメントに結合するように設計されています。
XQuery と XSLT はどちらも XPath に大きく依存しています。出力が1 つの入力 xml ドキュメントと **1 つの出力 xml ドキュメントに基づいている場合、この 2 つをほぼ交換できます。
XQuery の FLWR 構文は非常に直感的です。SQL のバックグラウンドがある場合、IMO XSLT は、特に出力が xml でない場合に、1 つの入力と 1 つの出力の状況を扱う場合により強力な言語です。
個人的には、XML ベースの構文と XSLT の宣言型の性質は、読み取りと保守が少し難しいと感じています。
「単純な」書式設定に XQuery を使用するのは少し珍しいことですが、それは本当に選択次第です。入力が複数の xml ドキュメントに基づいている場合は、ほとんど XQuery で行き詰まっています。出力が xml ベースでない場合は、ほとんど XSLT で行き詰まっています。
XSLT と XQuery は 2 つの異なることを行います。名前が示すように、XSLT はデータをある形式から別の形式に変換するために使用されます (たとえば、XML から HTML へ)。一方、XQuery は、XML ドキュメントから特定の XML ノードを検索して抽出するために使用される言語であり、さまざまな目的に使用できます。
XSLT は実際には XQuery の機能に依存しています。www.w3schools.comのチュートリアルを参照してください。正しく使用すると、どちらも非常に強力なテクノロジになります。