私は現在、http://intranet.servofarma.com/xml/schema/facturas.xsdで見ることができる請求情報のための XSD スキーマを開発しようとしています。
nroFactura
私の質問は、要素のコンテンツを XSD インスタンス ドキュメント全体で一意にするにはどうすればよいかということです。使用しようとしまし<unique>
たが、この制約の使用方法が明確ではありません。
私は現在、http://intranet.servofarma.com/xml/schema/facturas.xsdで見ることができる請求情報のための XSD スキーマを開発しようとしています。
nroFactura
私の質問は、要素のコンテンツを XSD インスタンス ドキュメント全体で一意にするにはどうすればよいかということです。使用しようとしまし<unique>
たが、この制約の使用方法が明確ではありません。
XSD の「一意の」制約により、「特定の Y 内のすべての X は、Z に対して一意の値を持つ必要がある」と言うことができます。制約は Y の定義に適用されます。xs:selector は Y から X を選択する XPath 式を定義し (たとえば、.//nroFactura)、xs:field は X から Z を選択する XPath 式を定義します (たとえば、 "." は要素自体の文字列値を選択します)
@Michaelの(+1)よりも簡潔な答えが得られるとは思いません。それでも、これらの追加の説明からも恩恵を受ける可能性があると思います.
あなたの XSD を考えると、Michael の「表記法」の Y は、facturas
XSD の唯一の要素であるため、 しかありません。
変更:
<element name="facturas" type="tns:facturasType">
<unique name="pk1">
<selector xpath="tns:factura/tns:nroFactura"/>
<field xpath="."/>
</unique>
</element>
結果は次のようになります。
私が言及するもう1つのことは、.//
具体的であることとの使用です。前者は、物事を始めるのに最適な方法です。タグが異なるコンテキストで「再利用」される可能性がある大規模な XSD では、対処が難しいことも判明する可能性があります。すべてを一致させようとするよりも、できるだけ具体的にする方が良い方法だと思います...もちろん、それが要件である場合を除きます。