2016-02-03 76 views
1

所以我有這樣的代碼片斷就可以在這裏:xsd:擴展名,xsd:限制,並使用=「禁止」?

<xs:complexType name="TT1"> 
    <xs:simpleContent> 
     <xs:extension base="xs:string"> 
      <xs:attribute name="A1" type="xs:integer" use="required"/> 
      <xs:attribute name="A2" type="xs:integer" use="optional"/> 
     </xs:extension> 
    </xs:simpleContent> 
</xs:complexType> 

<xs:complexType name="TT2"> 
    <xs:simpleContent> 
     <xs:restriction base="TT1"> 
      <xs:attribute name="A1" use="prohibited"/> 
     </xs:restriction> 
    </xs:simpleContent> 
</xs:complexType> 

,問題是:這是整個事情是否有效?

我唯一看到的是TT1

<xs:extension base="xs:string"> 

因爲對於A1A2類型應該是整數,這是荒謬的。

還有什麼我看不到的?

P.S.我不太清楚TT2中的使用意義=「禁止」,但我不知道爲什麼。

回答

1

這是無意義的,因爲A1和A2的類型應該是 整數。

不,這不是無意義的。 A1A2是屬性,它們的類型可以獨立於其關聯元素(TT1),xs:string的內容的類型來定義。

P.S.我不太清楚TT2 中的使用意義=「禁止」,但我不知道爲什麼。

如果這種嘗試覆蓋讓你感到不安,它應該。禁止將其切換爲禁止來覆蓋所需的屬性。所以,不,這個XSD代碼片段是無效的。