2010-05-13 60 views
1

我在xml架構中有點新手。我將不勝感激,如果有人幫助我理解爲什麼我的XML不被與模式驗證:爲什麼我的測試xml與非常簡單的XSD架構失敗?

這裏是我的架構:

<?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是錯誤的。

+0

你可以發佈你試圖驗證的模式嗎? – 2010-05-13 15:29:53

+0

架構現已在原始帖子中顯示。 道歉使用「答案」而不是編輯 – WSK 2010-05-13 15:41:04

回答

1

所有的u需要做的就是增加將elementFormDefault = 「合格」 和u將被罰款。要理解這種行爲,請閱讀「您是否合格?」部分@http://msdn.microsoft.com/en-us/library/ms950796.aspx

+0

謝謝Pangea。這是我的問題的解決方案。 – WSK 2010-05-13 16:41:00

0

看起來你沒有指定如何驗證FirstNameLastName元素;給出type="xsd:string"(當然需要將xsd映射到XML模式數據類型名稱空間)的元素規格,並且一切都會好的。

但是你最好不要嵌套那麼深的元素。將它們全部放在同一層,並使用ref="Name"將它們全部鏈接在一起;它使您的架構更加靈活和可用。

+0

不,我失敗的「名稱」標記,而不是名字或姓氏。這就是爲什麼(可能)類型不起作用。 我的「名稱」元素是複雜類型的,所以我無法設置它的類型。順便提一句,這個例子是我相對複雜的模式的簡化版本。通過不使用嵌套元素,我的模式會使我的生活更加困難 – WSK 2010-05-13 15:51:39

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> 
+0

通過添加xmlns =「」我在xml中得到這個錯誤: cvc-complex-type.2.4.a:發現無效內容以元素'FirstName'開頭。 「{」http://www.example.org/ 其中之一是testSchema「:FirstName}」。 – WSK 2010-05-13 15:59:50