我正在使用 xsd,试图让它验证 xml。
xml 用于创建对象。列表中的元素可以创建两种类型的对象:SC 和 SMSC。SMSC 是一个 SC,并对其进行了扩展。
SMSC 不包含任何新属性。从 xml 的角度来看,SMSC 在各方面都与 SC 相同,只是定义其属性的元素是用<SMSC>
标签而不是<SC>
标签包装的。
我们的 XSD 如下所示:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name='Definitions'>
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="SC">
<!--SNIP properties of SC and SMSC -->
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
除了复制 SMSC 元素中的所有属性定义之外,有没有办法改变它以允许 SC 或 SMSC 作为元素?我们不想将文档的长度加倍并复制所有的属性定义。
就目前而言,我们在 XML 中唯一的验证错误是我们有一个 SMSC 元素。如果在不复制所有属性定义的情况下无法解决此问题,我们将保持原样,但如果可行,我们显然更愿意消除此引发的警告。