2

私はMicrosoftを使用する代わりの方法を研究していましたがXslCompiledTransform、すべてが主にSaxonを指し、次にXQSharpを指しているようでした。Saxonのドキュメントを調べ始めたとき、XQueryは、XQueryのマークアップほど簡潔ではないXSLTと同等の機能を実行できることがわかりました。

はるかに詳細な構文に値するXSLTはXQueryに対してどのような利点を提供しますか?

作成できるのはテンプレート機能でしょうか?

4

4 に答える 4

5

一般に、多くの重複があります。両方とも、基礎となる XPath 実装に根ざしています。XSLT と XQuery のどちらを使用するかについては、証拠があります。XSLT は変換に優れており、XQuery はクエリに優れています。

したがって、XQuery を次の目的で使用します。

  • 小さくて複雑でないもの
  • 高度に構造化されたデータ (XQuery は非常に厳密に型付けされ、不平を言いやすい)
  • データベースからのデータ
  • 小さな情報を抽出する

逆に、次の場合は XSLT を使用します。

  • 増分変更のみのドキュメントのコピー
  • より大きく、より複雑なもの
  • 大まかに(またはひどく)構造化されたデータ
于 2009-12-15T14:47:37.347 に答える
2

離れるべき最大の理由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 の方が自然です。

オーバーラップはかなり大きく、多くの場合、「正しい」選択はありませんが、間違った選択をすると、粒子に逆らって作業する傾向があることに注意してください。

于 2009-12-15T17:01:12.370 に答える
2

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 で行き詰まっています。

于 2009-12-15T16:42:29.350 に答える
1

XSLT と XQuery は 2 つの異なることを行います。名前が示すように、XSLT はデータをある形式から別の形式に変換するために使用されます (たとえば、XML から HTML へ)。一方、XQuery は、XML ドキュメントから特定の XML ノードを検索して抽出するために使用される言語であり、さまざまな目的に使用できます。

XSLT は実際には XQuery の機能に依存しています。www.w3schools.comのチュートリアルを参照してください。正しく使用すると、どちらも非常に強力なテクノロジになります。

于 2009-12-15T14:49:07.390 に答える