1

JSONiq クエリ言語が XM の処理もサポートしているという記述を見たことがありますが、私が見つけた唯一の例は、JSONiq ウィキペディアの記事にあります。XML処理は「XQueryのJSONiq拡張機能」でしかできないようですが、これはJSONiqと同じではありませんね。JSONiq仕様には XML 構文が含まれていないため、禁止する必要がありますか?

4

1 に答える 1

1

コアの JSONiq 言語は JSON のみをサポートし、コアの XQuery 言語は XML のみをサポートします。ただし、同じプログラムで XML と JSON の両方をクエリしたい、たとえば一方を他方に変換したいという人がたくさんいます。これが、拡張機能がある理由です (双方向)。禁止されているというよりは、オプションである (実際に推奨されている) と言えます。

データが JSON と XML の混合である場合は、「XQuery への JSONiq 拡張機能」または「JSONiq への XQuery 拡張機能」のいずれかを使用できます。違いはわずかで、利便性を中心に展開しています。機能的には、どちらも同等です。

正確な違いはここに包括的に文書化されています

JSONiq を使用した完全な文法、XQuery 拡張機能、さらには更新とスクリプトもここで入手できます。

大量の JSON と少しの XML がある場合は、「「JSONiq への XQuery 拡張機能」がより適切です。ドットを使用して JSON をクエリでき、文字列のエスケープはバックスラッシュで行われ、 、 、 などのリテラルnulltrue認識falseされますが、 XML 名に対する XPath 名のクエリに./fooは、単にfoo)ではなく ./ をプレフィックスとして付ける必要があります。

XML が多く、JSON が少しある場合は、「XQuery への JSONiq 拡張機能」が適しています。これは逆です。正確な W3C 準拠の XPath 構文がサポートされており、アンパサンドを使用した文字列エスケープがサポートされていますが、たとえばブール値と null は、XPath に干渉しないようtrue()に , false(),と記述する必要があります。null()

Zorbaエンジンは両方のバリアントをサポートしており、クエリのヘッダーで または を使用して切り替えることができますxquery version "3.0"jsoniq version "1.0"追加の構成は必要ありません。JSONiq を使用する場合、XQuery 拡張機能も常に使用できます。常に利用可能です。

ヘッダーが存在しない場合は、使用されている言語を推測するために拡張子.xqor.jqが使用されます。

JSONiq プロセッサが XQuery 拡張機能をサポートするかどうかは、ソフトウェア プロバイダーの決定です。一般に、リソースがある場合は、JSONiq エンジンの実装者が XQuery 拡張機能をサポートすることをお勧めします。非常に軽量なエンジンを維持したいプロバイダーは、コア JSONiq に固執します。

逆に言えば、既存の XQuery エンジンを JSONiq 拡張機能で拡張するのは非常に簡単です。JSON のサポートを開始したときに Zorba でこれを行った場合、JSON データ モデルが非常に単純であるため、数日しかかかりませんでした。Youtubeで、このトピックに関する経験を共有するジョナサン・ロビーによるトークがあります。

于 2019-09-24T13:39:12.310 に答える