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

What is the use of XSD complexType without element reference?

我的任务是验证和解释 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. 用于[信用@MichaelKay]
  5. 计划在当前 XSD 中将来使用。
  6. 干脆不用。

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