【发布时间】:2014-07-02 13:09:34
【问题描述】:
在 Altova XMLSpy 2014 中,我有一个 XSD 文档,它定义了:
- 一种抽象类型,“t_abs”。
- 具体类型“t_con”定义为一系列元素,其中一个元素定义为类型“t_abs”。
- 定义为“t_con”类型的元素(可实例化)“e_con”。
正确吗?我认为它应该会产生一个错误,因为抽象类型没有被用作具体类型的基础(通过扩展或限制),抽象类型(t_abs)被用作具体元素的类型到可实例化的具体元素 (t_con)。
XMLSpy 是否应该返回一个抽象类型被用于具体元素的警告?
例子:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" elementFormDefault="qualified" attributeFormDefault="unqualified" vc:minVersion="1.1">
<xs:complexType name="t_abs" abstract="true">
<xs:sequence>
<xs:element name="el" type="xs:string"/>
<xs:element name="e2" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="t_con">
<xs:sequence>
<xs:element name="e_t_con_1" type="xs:string"/>
<xs:element name="e_t_abs" type="t_abs"/>
<xs:element name="e_t_con_2" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="e_con" type="t_con"/>
</xs:schema>
【问题讨论】:
-
作为记录,我发现撒克逊模式处理器没有很好地处理这种情况(诊断不正确)。我已经修复了 Saxon 错误(请参阅 saxonica.plan.io/issues/2100),并将您的测试用例作为 Saxonica/complex/complex021 添加到 W3C XSD 测试套件中。
标签: xml xsd xmlspy abstract-type