2016-07-22 6 views
0

と仮定I以下のXSDファイルがあります、私は「OwnerEnglishName」要素の属性のminOccursとmaxOccursを追加する必要があります制限をXSDファイルの発生インジケータと組み合わせるにはどうすればよいですか?

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="PACIDemoSignedDoc" type="PACIDemoSignedDocType" /> 
    <xs:complexType name="PACIDemoSignedDocType"> 
     <xs:all> 
      <xs:element name="OwnerEnglishName" type="OwnerEnglishNameType" /> 
     </xs:all> 
    </xs:complexType> 
    <xs:complexType name="OwnerEnglishNameType"> 
     <xs:simpleContent> 
      <xs:restriction base="NameType"> 
       <xs:enumeration value="John"/> 
       <xs:enumeration value="Jack"/> 
      </xs:restriction> 
     </xs:simpleContent> 
    </xs:complexType> 
    <xs:complexType name="NameType"> 
     <xs:simpleContent> 
      <xs:extension base="xs:string"/> 
     </xs:simpleContent> 
    </xs:complexType> 
</xs:schema> 

私の質問をされましたか?私も、私はできません推測している

...私は順番に私のXMLファイルを注文することを避けるためにしたいが、それは<xs:element name="OwnerEnglishName" type="OwnerEnglishNameType" /> ラインで直接発生を追加してから私を禁止しているように、すべての:私はXSを維持したいですOwnerEnglishNameType内にOccur属性を追加してください。

+0

「あなたが追加することを禁止しているのは誰ですか?なぜなら、 '(またはそれに類似する)は動作しないはずです。 –

+0

私はあなたが 'F [Saxon-EE 9.4.0.4]というエラーを意味すると思います。の中では、は0または1に等しい@maxOccursを持つ必要があります。 'minOccurs'と' maxOccures'の値を指定してください。 –

+0

正確には、0と1と異なる発生値を追加したいと思います。値はありません。これらの属性の値を入力するだけで済みます。 – Yohann

答えて

-1

さて、私は他の人が同じ問題があればここに答えがあります、私の問題を解決した:

<?xml version="1.0" encoding="UTF-8"?> 
<animal xmlns="d" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="test schema.xsd"> 
    <cats> 
     <cat>John</cat> 
     <cat>Jack</cat> 
    </cats> 
</animal> 
:次のXMLを検証し

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema attributeFormDefault="unqualified" targetNamespace="test" xmlns="test" elementFormDefault="qualified" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="animal" type="AnimalType" /> 
    <xs:complexType name="AnimalType"> 
     <xs:all> 
      <xs:element name="cats" type="Cats" /> 
     </xs:all> 
    </xs:complexType>  
    <xs:simpleType name="CatType"> 
     <xs:restriction base="xs:string"> 
      <xs:enumeration value="John"/> 
      <xs:enumeration value="Jack"/> 
     </xs:restriction> 
    </xs:simpleType>  
    <xs:complexType name="Cats"> 
     <xs:sequence> 
      <xs:element maxOccurs="5" minOccurs="2" name="cat" type="Cat"/> 
     </xs:sequence> 
    </xs:complexType>  
    <xs:complexType name="Cat"> 
     <xs:simpleContent> 
      <xs:extension base="CatType"/> 
     </xs:simpleContent> 
    </xs:complexType>  
</xs:schema> 

xs:sequenceの後に子要素を追加して、xs:allの発生制限をバイパスしました。

+0

*私は正常に 'xs:all'の発生制限をバイパスしました*:**いいえ、あなたはありません** **(1)**は例を変更しました(なぜ?)、* *(2)**は依然として 'xs:all'を単一の子要素(何も購入しません)で使用し、**(3)**は[よく知られているラッパー手法]を適用しました(http://stackoverflow.com/questions/37969890/unordered-elements-in-xsd-with-obligatory-and-unbounded-elements)(制限をバイパスするのではなくXMLデザインが変更されます)。 – kjhughes

0

私の質問は、要素OwnerEnglishNameのminOccursと のmaxOccursをどこに追加すればよいですか?

<xs:element name="OwnerEnglishName" type="OwnerEnglishNameType" 
      minOccurs="0" maxOccurs="1"/> 
私はXSを維持したい

:私は私のXMLファイルを注文することを避けるために必要なすべてのよう>シーケンス

OwnerEnglishNameの(非グローバル)宣言で

XSD 1.0では、xs:allの下にmaxOccurs = "unbounded"を設定することはできません。 XSD 1.1では、可​​能です。

ただし、単一の子要素を持つxs:allは必要ありません。問題の順序の第2要素がないため、xs:sequenceを使用できます。


更新xs:allに追加の子要素を含むように、コメントの例のOP当たりの変化):

あなたは次の3つのオプションがあります。

  1. は順序を課します。これはほとんどの場合、最良の答えです。 の注文は、ほとんどの場合、ほとんどの場合常に不要です。実際には です。
  2. xsd:allの子はmaxOccurs="unbounded"を持つことができるXSD 1.1を使用してください。
  3. 繰り返すことを許可する子要素の周りのラッパー要素を使用するようにXMLデザインを変更します。xsd:all。 (例えばhereを参照してください。)
+0

問題は、最終的には、複数の子要素があることです。実際には回避策はありませんか?だから、 :私は必死にこのような何かを動作させるためにしようとしてきました基本的に、シーケンスを「すべて」要素の子として定義して、発生制限を回避します。 私は最終的には無意味なことをするのに苦労しているのですか?そうした回避策がうまくいくと思いますか? – Yohann

+0

あなたの例では、 'xsd:all'の複数の子要素が1つではなく複数あったはずです。 3つのオプションがあります:** [義務的要素と無制限要素を持つXSDの無秩序要素](http://stackoverflow.com/questions/37969890/unordered-elements-in-xsd-with-obligatory-and-unbounded-elements)を参照してください。 )** – kjhughes

関連する問題