Xml 同名的XSD:ComplexType元素

Xml 同名的XSD:ComplexType元素,xml,xsd,xsd-validation,Xml,Xsd,Xsd Validation,我需要知道,具有两个名为相同值的ComplexType的XSD文件是有效的公共XSD文件吗 不能将两个全局xsd:complexType命名为同一名称。您也不能有两个名为相同的全局xsd:complexType元素 但是,您可以使用不同的名称空间来区分两者 您还可以将非全局xsd:complexType元素命名为相同的元素。请参见以下示例中的Book: <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/

我需要知道,具有两个名为相同值的ComplexType的XSD文件是有效的公共XSD文件吗

不能将两个全局
xsd:complexType
命名为同一名称。您也不能有两个名为相同的全局
xsd:complexType
元素

但是,您可以使用不同的名称空间来区分两者

您还可以将非全局
xsd:complexType
元素命名为相同的元素。请参见以下示例中的
Book

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="BookStore">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Book" maxOccurs="unbounded">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="Author"/>
              <xsd:element name="Title"/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="Shelf">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Book" maxOccurs="unbounded">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="Author"/>
              <xsd:element name="ISBN"/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>


解释答案的好例子。为了补充您的答案,我们应该单独编写复杂类型,并在定义元素时使用这些类型的引用。因为复杂类型可以在需要时重用。@Joshi,如果我理解你的建议,当然,这里用来定义两个不同的
Book
元素的匿名
complexTypes
,如果我们希望它们可以用于其他元素的定义,那么可以全局定义并给出(不同的)名称。