XMLスキーマを使用すると、XMLドキュメントのコンポーネント間にID/IDREFリンクを定義できます。私は、特定のIDだけがIDREFとして使用できるように、つまりスキーマ設計のコンテキストで論理的に意味を成す値だけを使用するために、XPathを使用する方法を探しています。XPathを使用するとID/IDREFの使用をチェックできますか?
以下の例を使用して、書籍のlibrary_idが実際には利用可能なlibrary_idsの1つであり、メッセージに表示され、全く異なる目的で使用される可能性のある他のIDではなく、 。
<books>
<book library_id="lib1">
<author>A</author>
<title>B</title>
</book>
<book library_id="lib2">
<author>C</author>
<title>D</title>
</book>
<library id="lib1">
<name>X</name>
<city>Y</city>
</library>
<library id="lib2">
<name>X</name>
<city>Y</city>
</library>
</books>
これを動作させるために最も近いのは、XPathに関数などが含まれている関数を使用することです。
contains(//library/@id,//book/@library_id)
しかし、contains()( "lib1"、 "lib2")の最初の引数として複数の項目のシーケンスが許可されていないため、このエラーが発生します。私はあなたがライブラリーリストでlibrary_id存在と
ブックス間違ったlibrary_idと
//book[@library_id = //library/@id]
ブックス
//book[not(@library_id = //library/@id)]
ありがとう、これは私が必要としたものです! –