我一直在負責編寫XML文檔的解析與被人據稱更聰明,比我更有經驗,我沒有XML專家,但是從我所知道的,我相信有一些創造了一個支持架構他們的模式中缺少的考慮。XML架構:AttributeGroup沒有支持元素?重複的屬性?
這裏的架構的簡化版本,我一直在考慮:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:attributeGroup name="Group1">
<xsd:attribute name="attrib1" type="xsd:NMTOKENS"/>
<xsd:attribute name="attrib2" type="xsd:NMTOKENS"/>
</xsd:attributeGroup>
</xsd:schema>
我走之前回到我的客戶,並批評他們的架構設計,我會很感激的集體智慧計算器證實或否認對我來說如下:
- attributeGroup應該被模式中的某種元素使用。僅在模式中獨立存在attributeGroup是沒有意義的。 (除非此架構旨在被導入到另一個)
一個attributeGroup內的屬性只能有效的XML文檔的單個元件內出現一次。例如:
<?xml version="1.0"?> <element1 attrib1="first second third" attrib1="first second third"/>
是無效的,因爲有一個重複的'attrib1',正確嗎?
- 我被告知可能會收到具有重複屬性的文檔。我想告訴我的客戶,模式需要反映這種可能性(如果這甚至可能......)。有沒有辦法定義一個可能出現多次的屬性?我知道'maxOccurs'屬性,但我不認爲這對屬性定義有效。
在此先感謝您的意見。
感謝您的回覆。我同意你的意見,我的代碼示例之前的聲明是錯誤的。我打算解釋我的代碼示例中明確的內容。我會解決這個問題。我想我理解你關於「主機」元素的觀點,以及他們的模式定義在技術上不是一個錯誤。我的問題是這個模式是出於所有的意圖和目的,'父'模式如此不會在_this_模式中缺少「主機」元素,從本質上限制了在有效實例文檔中attributeGroup中使用這些屬性?再次感謝您的輸入! – Thedaego 2011-05-26 14:20:41
@Taeaego你的假設是正確的。如果這個模式**沒有:** 1)任何具有'foobar'屬性的元素,2)任何帶有的元素(因此它可以包含任何屬性)以及3)任何''或''定義,那麼即使模式具有這種屬性的全局屬性定義,作爲該模式文件的實例的文檔也不能包含屬性'foobar'。 –
jasso
2011-05-27 12:59:49