2017-09-06 14 views
1

目的: 私はSchema1.xsdという既存の標準XSDを使用しています。 Schema2.xsdのcomplexType( "TVDSection")でSchema1.xsdのcomplexType( "tElementWithIDAndName")を拡張したいとします。 ユニークなパーティクルアトリビューションエラー

私はAltovaのXMLSpyの/酸素XMLエディタでSchema2.xsdを検証しよう

が、私は次のエラーを取得しています:

エラー: [Xercesの] COS-nonambig: "http://www.mySchema.com/Generic/1":要素1とWC [## other: "http://www.mybasic.com/1"、 ""](またはその置換グループの要素)は、 "Unique Particle Attribution"に違反します。このスキーマに対する検証中に、2つのパーティクルに対してあいまい性が作成されます。

Schema1.xsd:

  <?xml version="1.0" encoding="UTF-8"?> 
      <xs:schema xmlns="http://www.mybasic.com/1" 
         xmlns:xs="http://www.w3.org/2001/XMLSchema" 
         xmlns:xml="http://www.w3.org/XML/1998/namespace" 
         targetNamespace="http://www.mybasic.com/1" 
         elementFormDefault="qualified" 
         version="0.1"> 

       <xs:complexType name="tElementWithIDAndName"> 
        <xs:sequence> 
          <xs:element name="additionalName" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> 
          <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded"/> 
        </xs:sequence> 
        <xs:attribute name="id" type="xs:ID" use="required"/> 
        <xs:attribute name="name" type="xs:string" use="required"/> 
       </xs:complexType> 
      </xs:schema>  

Schema2.xsd:

  <?xml version="1.0" encoding="UTF-8"?> 
      <xs:schema xmlns="http://www.mySchema.com/Generic/1" 
         xmlns:xs="http://www.w3.org/2001/XMLSchema" 
         xmlns:myBasic="http://www.mybasic.com/1" 
         targetNamespace="http://www.mySchema.com/Generic/1" 
         elementFormDefault="qualified" version="0.1"> 

       <xs:import namespace="http://www.mybasic.com/1" schemaLocation="schema.xsd"/> 

       <xs:element name="Element1" type="TVDSection"/> 
       <xs:complexType name="TVDSection"> 
        <xs:complexContent> 
         <xs:extension base="myBasic:tElementWithIDAndName"> 
          <xs:sequence> 
           <xs:element name="element1" type="xs:string" minOccurs="0" maxOccurs="unbounded"> 
           </xs:element> 
          </xs:sequence> 
         </xs:extension> 
        </xs:complexContent> 
       </xs:complexType> 
      </xs:schema> 

私は、これはユニークな粒子の帰属に違反している場所/方法を知りません。 上記の問題を解決するのを手伝ってください。

答えて

3

あなたのコンテンツモデルは、 "p:additionalNameという名前の任意の数の要素、名前空間 'p'にない要素の数、q:element1という名前の任意の数の要素の順になります。ここで、aq:element1要素が検出された場合、バリデータは、2番目のグループ(名前空間 'p'にない要素の数)または3番目のグループ(q:element1という名前のもの) 。したがって、あいまいさ。

XSD 1.1では、特定のパーティクルと一致するワイルドカードパーティクルが存在する場合、特定のパーティクルが常に優先されて選択されるように、スペックが変更されました。したがって、XSD 1.1に移行するだけです。 XSD 1.0のままにしたい場合は、xs:anyワイルドカードを変更して、許可された要素の名前空間により多くの制約を設定する必要があります。

+0

残念ながら、別のチームからのプロジェクトの標準的なxsdであるため、私はschema1.xsdを変更できませんでした。また、私の既存のツールはXSD 1.1をサポートしていません。 この問題から何か考えてください。 – VinayCH

+0

なぜschema1.xsdで複合型を拡張したいのですか?それは既にadditionalName要素の後にワイルドカードコンテンツを許可しています。なぜそれを変更する必要がありますか? –

+0

「私の既存ツールはXSD 1.1をサポートしていません」に関しては、積極的に製品を開発して最新の標準に対応しているツールベンダーに切り替えるのはもちろんです。 –