なぜ私のテストXMLは、非常に単純なXSDスキーマで失敗していますか?

StackOverflow https://stackoverflow.com/questions/2827989

  •  26-09-2019
  •  | 
  •  

質問

私は、XMLスキーマ内のビットの初心者です。

:私のXMLは、スキーマで検証されていない理由を誰かの助けが私出て理解することがあれば、私は感謝されます

ここに私のスキーマがあります:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/testSchema" xmlns="http://www.example.org/testSchema">
  <xs:element name="Employee">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Name">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="FirstName" />
              <xs:element name="LastName" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

ここに私のテストXMLは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<Employee xmlns="http://www.example.org/testSchema">
 <Name>
  <FirstName>John</FirstName>
  <LastName>Smith</LastName>
 </Name>
</Employee>

私はEclipseのXMLエディタ/バリデータによって、次のエラーを取得しています:

cvc-complex-type.2.4.a: Invalid content was found starting with element 'Name'. One of '{Name}' is expected.

私はこのスキーマや私のxmlと間違っているのか理解できませんでした。

役に立ちましたか?

解決

uがしなければならないすべてはのelementFormDefault =「資格」を追加し、uは罰金になりますです。この動作を理解するために、「あなたは資格がある?」読みセクション@ http://msdn.microsoft.com/en-us/library/ ms950796.aspxする

他のヒント

ただ、スキーマattribuesへのelementFormDefault = "資格" を追加します。

 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"         
       targetNamespace="http://www.example.org/testSchema"
       elementFormDefault="qualified"
       xmlns="http://www.example.org/testSchema">

そして、あなたのオリジナルの意志の作業

 <?xml version="1.0" encoding="utf-8"?>
   <Employee xmlns="http://www.example.org/testSchema">
     <Name>
      <FirstName>John</FirstName>
      <LastName>Smith</LastName>
   </Name>
 </Employee>

あなたのようなルックスはFirstNameLastName要素を検証する方法を指定するために失敗しています。 (type="xsd:string"ニーズはもちろん、XMLスキーマデータ型名前空間にマッピングする)ものxsdの要素の仕様を与え、すべてが良くなければならない。

しかし、あなたはより良いオフに深くそれらの要素を入れ子ではありません。代わりに、すべてのそれらを一緒にリンクするために、すべて同じレベルと使用ref="Name"でそれらを置きます。それはあなたのスキーマがはるかに柔軟で使用可能になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top