2017-02-14 81 views
0

我試圖理解爲什麼有些XSD工具(氧氣)接受以下的定義,但別人(尤其是XMLSPY)相同的屬性,請勿:XML架構擴展,其中兩個基地複雜類型和擴展複雜類型使用

<xs:complexType mixed="true" name="al_complextype"> 
    <xs:complexContent> 
     <xs:extension base="block_maximaal"> 
      <xs:attributeGroup ref="agroup"/> 
     </xs:extension> 
    </xs:complexContent> 
</xs:complexType> 

<xs:complexType name="block_maximaal" mixed="true"> 
    <xs:attributeGroup ref="agroup"/> 
</xs:complexType> 

<xs:attributeGroup name="agroup"> 
    <xs:attribute name="property"/> 
</xs:attributeGroup> 

問題似乎是屬性屬性使用了兩次,一次是從基礎complexType,一次是從擴展類。

我知道XML Schema在邊緣情況下是臭名昭着的,但是想知道是否有人可以將我指向Schema規範中討論此問題的相關部分。我覺得很難看:-(

回答

1

撒克遜報道:

Error on line 5 of test.xsd: 
    Attribute @property appears more than once in attribute group 
Schema processing failed: The schema is invalid 

發現禁止這樣的規則,正如你指出,一場噩夢轉到節複雜類型3.4.2 XML表示。定義,並且在這一小節的標題是「具有複雜內容模式組件的複雜類型定義」。在這裏是一個標識爲「{屬性使用}」的行。這表明{屬性使用}是在屬性中定義的屬性的聯合如果這個聯合包含兩個同名的屬性,那麼它肯定是無效的。

但是,你可以爭辯說,一個工會應該消除重複,在這種情況下,你會討論是否和何時兩個屬性使用組件是相同的,並且規範本身承認它沒有回答這個問題(§3.4 .6:「...組件標識的概念只是由本規範的這個版本完全定義的」)。在這種情況下,您有兩次對同一個屬性組的引用,所以肯定會出現這樣的情況,即屬性組以及它們包含的屬性使用是相同的,在這種情況下,會刪除重複項。

所以我認爲在這種情況下,兩種解釋都是合法的。

+0

很好的答案,正是我需要向同事解釋爲什麼我必須花時間重構與我們自己的工具(我們是一家氧氣店)合作的東西,但這對其他人來說不起作用。 –