2016-02-03 44 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代码片段是无效的。