Saxonは、返されたノードの1つ以上のノード/属性によって "順序"が定義されているソート順でノードを返す方法がありますか?言い換えればSaxonは返されたノードをソートする方法を提供していますか?
、XPathクエリは次のようになります。
/Order/Dates/Date order by .
ありがとう - 答えはイエスであるデイブ
Saxonは、返されたノードの1つ以上のノード/属性によって "順序"が定義されているソート順でノードを返す方法がありますか?言い換えればSaxonは返されたノードをソートする方法を提供していますか?
、XPathクエリは次のようになります。
/Order/Dates/Date order by .
ありがとう - 答えはイエスであるデイブ
、多くの方法があります!しかし、正確な答えが必要な場合は、要件について少し正確にする必要があります。
あなたは、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で新しくなっていますので、多くの書籍やオンラインチュートリアルでそれを見つけることはできません。
まず、私たちはサクソンのエンタープライズ版を持っているので、問題はありません。私たちのシステムは現在、ユーザーが "/ Order/Dates/Date order by"を入力できるように設定されています。ソートされた順番でノードのリストを取得します。現在のところ、Saxonはドキュメントの順序でノードを取得し、それを自分たちでソートするよう呼びます。 もしSaxonがそれを行うことができれば、私はそれを好むでしょう。選択を呼び出すときに、私たちは文法を上記のようにオンザフライに変換します。だから3つの質問。どのアプローチがより良い/より速いのですか?次に、複数のソートノード/属性(LastName、FirstName)を処理できますか?第3に、文書化された構文はどこですか? TIA。 –
私が間違っている場合は私を修正しますが、私たちのライセンスのためにXQueryアプローチを使用できない場合は、XPathのアプローチに制限されています。 XPathのアプローチでは、昇順と降順の並べ替え基準の組み合わせはサポートされていません - 正しいですか? –