2017-10-29 6 views

答えて

1

、多くの方法があります!しかし、正確な答えが必要な場合は、要件について少し正確にする必要があります。

あなたは、XQueryを使用することができます。

for $x in /Order/Dates/Date order by $x return $x 

あなたはサクソンを持っていれば、その後、XQueryのではなく、純粋なXPathをだが、XPathの3.0は、FNを通していくつかの並べ替えの能力を持っているソリューションを望んでなければならない特別な理由がありません:ソート機能:最も自明なソートキーを除い

sort(/Order/Dates/Date, function($date){ $date }) 

は、しかしながら、FNは:ソートサクソン-PE以上を必要とする高次関数を含みます。

もちろん、XSLTを使用してソートすることもできます。

あなたが表現を生成している場合、私は、XQueryのフォーム生成の間に大きな違いはないと思う:

for $e in /*/Employee 
order by $e/firstName, $e/LastName 
return e 

とXPathのバージョンが

sort(/*/Employee, 
    function($e){$e/firstName, $e/lastName}) 

となる可能性が非常に高いがありますどんな顕著なパフォーマンスの違い。 XQueryのバージョンは、降順、照合の選択、不在値の処理など、もっと柔軟に対応できます。

これらは標準のXPath/XQueryファシリティであり、W3C仕様に記述されています。 XQueryのソートは1.0以降行われているため、XQueryのすべての書籍に説明されています。 XPathソートはXPath 3.1で新しくなっていますので、多くの書籍やオンラインチュートリアルでそれを見つけることはできません。

+0

まず、私たちはサクソンのエンタープライズ版を持っているので、問題はありません。私たちのシステムは現在、ユーザーが "/ Order/Dates/Date order by"を入力できるように設定されています。ソートされた順番でノードのリストを取得します。現在のところ、Saxonはドキュメントの順序でノードを取得し、それを自分たちでソートするよう呼びます。 もしSaxonがそれを行うことができれば、私はそれを好むでしょう。選択を呼び出すときに、私たちは文法を上記のようにオンザフライに変換します。だから3つの質問。どのアプローチがより良い/より速いのですか?次に、複数のソートノード/属性(LastName、FirstName)を処理できますか?第3に、文書化された構文はどこですか? TIA。 –

+0

私が間違っている場合は私を修正しますが、私たちのライセンスのためにXQueryアプローチを使用できない場合は、XPathのアプローチに制限されています。 XPathのアプローチでは、昇順と降順の並べ替え基準の組み合わせはサポートされていません - 正しいですか? –

関連する問題