2011-01-18 5 views
2

XMLスキーマのユニークで重要な要素である を、特にその中のセレクタとフィールド要素に関してまっすぐにしようとしています。ローカルで一意ですか?

セレクタとフィールドについては不明ですが、これを真似する必要があります。

機能グループ内にリストされた企業とのXMLファイルがあるとします。 私は、各グループ内に固有のフィールド(それぞれ特定のグループ を参照)を持つ要素を持っています。

内の各企業リスト内に、その特定のグループ内でのみ一意の固有のフィールドを作成したいとします。もしそうなら

これが正しい?:

<xs:unique id="company_group_refs" name="company_group_refs"> 
     <xs:selector xpath="root/all_companies/company_group"/> 
     <xs:field xpath="company_group_ref"/> 
    </xs:unique> 

    <xs:unique id="company_refs" name="company_refs"> 
     <xs:selector xpath="root/all_companies/company_group"/> 
     <xs:field xpath="company/company_ref"/> 
    </xs:unique> 

だろう、私はこれまで以上に凝縮でき、特にどのような企業名を参照するには

<xs:unique id="company_refs" name="company_refs"> 
     <xs:selector xpath="root/all_companies/company_group"/> 
     <xs:field xpath="company_group_ref"/> 
     <xs:field xpath="company/company_ref"/> 
    </xs:unique> 

を?:、私のことができるようにしたいです

ルート/ all_companies/company_group [company_group_ref = X1] /会社[company_ref = X2] /名前

: はこのようなXPath式を与えます

ここで、x1 =企業グループの一意の参照。
と:x2 =そのグループ内の会社の一意の参照。

以下は、このシナリオを例示したXMLファイルの抜粋です:

<all_companies> 

    <company_group> 
     <company_group_name>Cleaning</company_group_name> 
     <company_group_ref>1</company_group_ref> 
     <company> 
      <name>Ajax</name> 
      <company_ref>1</company_ref> 
     </company> 
     <company> 
      <name>Bloomburg</name> 
      <company_ref>2</company_ref> 
     </company> 
     <company> 
      <name>Morris</name> 
      <company_ref>3</company_ref> 
     </company> 
    </company_group> 

    <company_group> 
     <company_group_name>Electrical</company_group_name> 
     <company_group_ref>2</company_group_ref> 
     <company> 
      <name>Armstrong</name> 
      <company_ref>1</company_ref> 
     </company> 
     <company> 
      <name>Bloomburg</name> 
      <company_ref>2</company_ref> 
     </company> 
     <company> 
      <name>Zap Electrical</name> 
      <company_ref>3</company_ref> 
     </company> 
     <company> 
      <name>Morris</name> 
      <company_ref>4</company_ref> 
     </company> 
    </company_group> 

</all_companies> 

THANKS !!!

答えて

1

group_refsの一意性を要求するという制約は正しいです。グループ内company_refsを一意にするために制約が「「company_group内」として、すべての会社を選択する」とすることを要求し、「company_ref」は、それらの間で一意であることを読む

<xs:element name="company_group"> 
    <xs:unique name="company_unique_within_group"> 
    <xs:selector xpath="company"> 
    <xs:field xpath="company_ref"> 
    </xs:unique> 
    ... 
</xs:element> 

次のように読んでください。

あなたのcompany_ref制約によれば、「グローバルに」「すべてのcompany_groupsに対して」は、「company/company_refが一意である」ことを要求します。

あなたの凝縮された制約は全く異なっています:「グローバルに」「すべてのcompany_groupsに対して」は、「company_group_refとcompany/company_refの組み合わせが一意です」ことを要求します。無意味。

+0

こんにちはマーティン!応答とその答えをありがとう。それは意味をなさない。 – user304607

関連する問題