なぜ私のテストXMLは、非常に単純なXSDスキーマで失敗していますか?
-
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>
あなたのようなルックスはFirstName
とLastName
要素を検証する方法を指定するために失敗しています。 (type="xsd:string"
ニーズはもちろん、XMLスキーマデータ型名前空間にマッピングする)ものxsd
の要素の仕様を与え、すべてが良くなければならない。
しかし、あなたはより良いオフに深くそれらの要素を入れ子ではありません。代わりに、すべてのそれらを一緒にリンクするために、すべて同じレベルと使用ref="Name"
でそれらを置きます。それはあなたのスキーマがはるかに柔軟で使用可能になります。
所属していません StackOverflow