0

如何将 xsd:element 类型设置为 XMLSchema(定义 XSD 文件的结构)?甚至可能吗?

例如,我需要一个在其根元素下列出多个 XSD 的 XML 文件:

<schemas xmlns:xs=''>
  <xs:schema...>
    <xs:element name='...'/>
  </xs:schema>
  <xs:schema...>
  </xs:schema>
</schemas>

此 XML 的架构如下所示:

<xs:schema xmlns:xs=''>
  <xs:element name='schemas'>
    <xs:complexType>
      <xs:sequence>
        <xs:element name='schema' type='xs:schema' 
            minoccurs='0' maxoccurs='unbounded'/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

当然,不存在xs:schema. 我怎样才能使这项工作?

4

1 回答 1

3

是的,这很有可能。就是这样:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <!-- 
    Any XML schema processor does know XML schema language,
    but it is not supposed to know an XML schema for it.
    You need to import it!
  -->
  <xs:import namespace="http://www.w3.org/2001/XMLSchema"
             schemaLocation="http://www.w3.org/2001/XMLSchema.xsd"/>

  <xs:element name="schemas">
    <xs:complexType>
      <xs:sequence>
        <!-- 
          You don't need an 'xs:schema' type. Rather you just need
          to reference an already existing 'xs:schema' element
        -->
        <xs:element minoccurs="0" maxoccurs="unbounded" ref="xs:schema"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>

您还可以查看 XSLT 的 XML 模式:http: //www.w3.org/2007/schema-for-xslt20.xsd。他们在<xsl:import-schema>元素的定义中做同样的事情。

于 2013-08-06T13:18:27.797 回答