1

xsdで以下の警告を削除するにはどうすればよいですか。mymain.xsdはmysecond.xsdを指します

私のmain.xsd

<?xml version="1.0" encoding="UTF-8"?><xsd:schema elementFormDefault="qualified" targetNamespace="http://abc.com" version="2.0" xmlns:tyu="http://abc.com" xmlns:my="def.com"  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:import namespace="def.com" schemaLocation="mysecond.xsd"/>
  <xsd:complexType name="myType">
    <xsd:complexContent>
     <xsd:restriction base="my:myType">
      <xsd:sequence>
        <xsd:element minOccurs="0" name="rty" type="tyu:myagainType"/>
      </xsd:sequence>
    </xsd:restriction>
   </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="myagainType">
    <xsd:complexContent>
     <xsd:restriction base="my:myagainType">
      <xsd:sequence>
        <xsd:element minOccurs="1" name="uid">
        <xsd:simpleType>
           <xsd:restriction base="xsd:string">
          <xsd:maxLength value="1"/>
           </xsd:restriction>
        </xsd:simpleType>
        </xsd:element>
      </xsd:sequence>
    </xsd:restriction>
   </xsd:complexContent>
  </xsd:complexType>  
</xsd:schema>

mysecond.xsd

<?xml version="1.0" encoding="UTF-8"?><xsd:schema elementFormDefault="qualified" targetNamespace="def.com" version="2.0" xmlns:my="def.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:complexType name="myagainType">
    <xsd:sequence>
      <xsd:element minOccurs="0" name="klo" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="myType">
    <xsd:sequence>
      <xsd:element minOccurs="0" name="rty" type="my:myagainType"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>

警告

Warning 1   Invalid particle derivation by restriction - 'Derived element 'http://abc.com:rty' is not a valid restriction of base element 'def.com:rty' according to Elt:Elt -- NameAndTypeOK.'.    D:\files\mymain.xsd 3   4
4

1 に答える 1

1

簡単に言えば、できません。まず、rtyinmySecond.xsdはローカルで定義され、修飾されており、の「同等」rtymain.xsdは異なる名前空間にあります。後者もローカルで定義され、異なる名前空間で修飾されています。

XMLスキーマ仕様のパート2に目を通すと、有効な制限に適用される各ルールの説明が表示されます。あなたの場合、同じ名前の要素を使用するか(rty要素を「修飾しない」ことから始めます)、または置換グループのメンバーを使用します。

同じコンテンツモデルが提供されるため、明らかに同じ要素は必要ありません。要素は1つだけです。制限を使用する理由の1つは、コンテンツモデルを減らす(リストから要素を削除する)か、パーティクルのmin/maxOccursをいじることです。

rtyローカルで定義したため、置換グループを使用して処理を行うことはできません。置換グループのヘッドはグローバルに定義する必要があります。

あなたが望むものを可能にするために、あなたはあなたのXSDを完全に書き直す必要があります。XSDオーサリングに課す制約(たとえば、置換グループの使用、再定義、またはXSDが使用されるコンテキスト)とともに、達成しようとしていることについてのより適切な説明は、他の人がより良い答えを提供するのに役立つ場合があります。

于 2012-06-30T06:44:47.443 に答える