没有元素引用的XSD complexType有什么用?



我的任务是验证和解释XSD架构,这个模式以:

<xsd:schema xmlns:xsd="http://....">
<xsd:complexType name="TemplateType"> <!-- Nowhere referenced -->
<xsd:sequence>
<xsd:element name="DataType" type="DocumentDataType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DocumentDataType">

距离我上次执行 XSD 任务已经太久了,但在某个地方我期望<element type="templateType">,但事实并非如此。

这是怎么回事?我生锈的 XSD 知识还是交付的 XSD?

复杂类型名称 (xsd:complexType/@name) 可以是

  1. 用于定义元素的类型(xsd:element/@type),如您所说。
  2. 用于通过扩展(xsd:extension/@base)或定义派生类型 限制 (xsd:restriction/@base)。
  3. 在包含或导入此 XSD 的 XSD 中使用。
  4. 通过xsi:type在 XML 实例中使用。[信用@MichaelKay]
  5. 计划将来在当前 XSD 中使用。
  6. 只是不使用。

因此,除了直接定义元素类型之外,您的TemplateType可能还有其他用途,或者它可能在 XSD 的发展过程中变得退化。

最新更新