1

私は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の何が問題なのか理解できませんでした。

4

3 に答える 3

1

elementFormDefault = "qualified"を追加するだけで、問題ありません。この動作を理解するには、「資格がありますか?」をお読みください。セクション@http ://msdn.microsoft.com/en-us/library/ms950796.aspx

于 2010-05-13T16:08:22.493 に答える
1

elementFormDefault="qualified"をスキーマ属性に追加するだけです。

 <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>
于 2010-05-13T15:47:51.017 に答える
0

FirstNameおよびLastName要素の検証方法を指定していないようです。それらの要素仕様を指定しtype="xsd:string"xsdもちろん、XML Schema Datatypes名前空間にマップする必要がある場合)、すべてが正常である必要があります。

ただし、これらの要素をそれほど深くネストしない方がよいでしょう。それらをすべて同じレベルに置き、ref="Name"代わりにそれらをすべて一緒にリンクするために使用します。これにより、スキーマがはるかに柔軟で使いやすくなります。

于 2010-05-13T15:41:06.283 に答える