在生成XML文件時,我使用由OMG定義的xsd文件。通過互聯網驗證需要太長時間。所以,我下載了所有這些文件進行本地驗證。這適用於簡單的情況。但是在繼續前進時,必須驗證更復雜的結構。這包括驗證xhtml結構。大多數從http://www.w3.org/MarkUp/SCHEMA下載的xsd文件都有驗證錯誤。在試圖解決它們時,我將注意力集中在文件xhtml11-model-1.xsd上,因爲這個文件包含了很多其他xsd文件使用的基本定義。最初的下載文件顯示71個驗證錯誤!下載的文件沒有聲明目標名稱空間,因此我添加了聲明。這樣做可以將錯誤的數量減少到4個。但是在這一點上,我陷入了困境。我根本沒有發現任何意思來糾正其餘的錯誤。我挑出其中一個來分析它作爲孤立的案例。見下面的代碼。 attributeGroup name =「xhtml.dir.attrib」的聲明可以在文件xhtml-bdo-1.xsd中找到。但是這個文件沒有通過驗證,因此我將聲明覆制到我的測試文件中,以便將所有文件放在一個地方。但在確認與日食開普勒這個簡單的例子,我得到的錯誤如下的裁判xhtml.dir.attrib:在驗證xhtml11-model-1.xsd時出現驗證錯誤
<xs:attributeGroup ref="xhtml.dir.attrib" />
s4s-elt-must-match.1: The content of 'xhtml.I18n.extra.attrib' must match (annotation?, ((attribute | attributeGroup)*, anyAttribute?)). A problem was found starting at: attributeGroup.
什麼是錯的?爲什麼在聲明顯示正確時引用聲明瞭錯誤。這是eclipse驗證器的問題嗎?我的誤解?我應該忽略這些驗證錯誤嗎?爲什麼從w3.org下載的xsd文件沒有targetNamespace聲明,因爲它似乎需要驗證和使用這些文件? 感謝您的任何提示。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3.org/1999/xhtml/datatypes/"
xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
elementFormDefault="qualified" >
<xs:attributeGroup name="xhtml.dir.attrib">
<xs:annotation>
<xs:documentation>
"dir" Attribute from Bi Directional Text (bdo) Module
</xs:documentation>
</xs:annotation>
<xs:attribute name="dir">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="ltr" />
<xs:enumeration value="rtl" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="xhtml.I18n.extra.attrib">
<xs:annotation>
<xs:documentation>Extended I18n attribute</xs:documentation>
</xs:annotation>
<xs:attributeGroup ref="xhtml.dir.attrib" />
<xs:attribute name="lang" type="xh11d:LanguageCode" />
</xs:attributeGroup>
</xs:schema>
在我的代碼片段添加默認名稱空間的錯誤消失了。到目前爲止,提示是正確的。修改爲: \t \t 但是這並未」 t真的有幫助他原來的xsd和問題是,爲什麼我應該修改w3站點的xsd? –
juerg
我想這些文件是公開的,已經過徹底測試,爲什麼他們在w3網站工作,但不在本地?此外,我觀察到循環依賴,這實際上沒有幫助!你如何處理這種情況? – juerg
我個人認爲這些文件已經過徹底測試。至少基於可用的工具(基於.NET和Java),某些XSD無效。 (我仍在研究它...例如,我得到一個cvc-enumeration-aria-attributes-1.xsd文件中'aria-related'屬性的默認值無效...)循環依賴性很差在包裝方面...但它不應該是一個問題......如果您刪除所有架構位置並手動將所有文件放在模式集合中......循環依賴關係消失,而內容仍然正確...... –