验证 XML 和相应的 XSD 文件时出错

Getting errors while validating an XML and corresponding XSD file

我是 XML 的新手,我遇到了一个错误,

S4s-elt-invalid-content.1: The Content Of '#AnonType_queue' Is Invalid. Element 'Sequence' Is Invalid, Misplaced, Or Occurs Too Often

在尝试验证我的 xml 和 xsd 文件时,我不确定为什么..

这是 XML 文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="queue.xsl"?>
<queue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="queue.xsd">
<!DOCTYPE queue SYSTEM "queue.dtd">
    <queue>
        <link>
            <name>Alfa Romeo Giulia</name>
            <uri>https://en.wikipedia.org/wiki/Alfa_Romeo_Giulia_(952)</uri>
            <prodYear>2015</prodYear>
            <tophp>533</tophp>
            <availablecolors>
                <color1>Alfa Black</color1>
                <color2>Alfa White</color2>
                <color3>Alfa Rosso</color3>
            </availablecolors>
        </link>
        <link>
            <name>Audi A5</name>
            <uri>https://en.wikipedia.org/wiki/Audi_A5</uri>
            <prodYear>2007</prodYear>
            <tophp>444</tophp>
            <availablecolors>
                <color1>Tango red metallic</color1>
                <color2>Gotland Green Metallic</color2>
                <color3>Ibis White</color3>
            </availablecolors>
        </link>

    <!--
        <link>
            <name></name>
            <uri></uri>
            <prodYear></prodYear>
            <tophp></tophp>
            <availablecolors>
                <color1></color1>
                <color2></color2>
                <color3></color3>
            </availablecolors>
        </link>
    -->
    </queue>

这里是 XSD 文件:

<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="queue">
    <xs:complexType>
        <xs:Sequence>
            <xs:element name="link" />
            <xs:complexType>
                <xs:element name="name" type="xs:string" />
                <xs:element name="uri" type="xs:string" />
                <xs:element name="prodYear" type="xs:string" />
                <xs:element name="availablecolors" />
                <xs:complexType>
                    <xs:element name="color1" type="xs:string" />
                    <xs:element name="color2" type="xs:string"  />
                    <xs:element name="color3" type="xs:string" />
                </xs:complexType>
            </xs:complexType>
        </xs:Sequence>
    </xs:complexType>
</xs:element> 
</xs:schema>

如有任何帮助,我们将不胜感激。

您的 XSD 和 XML 的问题和更正如下。

更正 XSD

你的 XSD 有很多问题:

  1. XML和XSD区分大小写,所以把xs:Sequence改成xs:sequence
  2. <xs:element name="link"/> 在包含预期的后续 xs:complexType 定义之前关闭元素。 availablecolors.
  3. 再次发生这种情况
  4. 您在 xs:complexType 下缺少 xs:sequence 个元素。
  5. 无法容纳多个 link 元素。
  6. 缺少 tophp 的声明。
<?xml version="1.0"?>
<xs:schema elementFormDefault="qualified"
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="queue">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="link" maxOccurs="unbounded" >
          <xs:complexType>
            <xs:sequence>
              <xs:element name="name" type="xs:string" />
              <xs:element name="uri" type="xs:string" />
              <xs:element name="prodYear" type="xs:string" />
              <xs:element name="tophp" type="xs:string" />
              <xs:element name="availablecolors" >
                <xs:complexType>
                  <xs:sequence>
                  <xs:element name="color1" type="xs:string" />
                  <xs:element name="color2" type="xs:string"  />
                  <xs:element name="color3" type="xs:string" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element> 
</xs:schema>

更正 XML

您的 XML 有很多问题,甚至无法 well-formed:

  1. doctype <!DOCTYPE queue SYSTEM "queue.dtd"> 不能出现在文档中间。
  2. 有一个额外的开始 queue 标签。
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="queue.xsl"?>
<queue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:noNamespaceSchemaLocation="queue.xsd">
  <link>
    <name>Alfa Romeo Giulia</name>
    <uri>https://en.wikipedia.org/wiki/Alfa_Romeo_Giulia_(952)</uri>
    <prodYear>2015</prodYear>
    <tophp>533</tophp>
    <availablecolors>
      <color1>Alfa Black</color1>
      <color2>Alfa White</color2>
      <color3>Alfa Rosso</color3>
    </availablecolors>
  </link>
  <link>
    <name>Audi A5</name>
    <uri>https://en.wikipedia.org/wiki/Audi_A5</uri>
    <prodYear>2007</prodYear>
    <tophp>444</tophp>
    <availablecolors>
      <color1>Tango red metallic</color1>
      <color2>Gotland Green Metallic</color2>
      <color3>Ibis White</color3>
    </availablecolors>
  </link>
  <!--
      <link>
        <name></name>
        <uri></uri>
        <prodYear></prodYear>
        <tophp></tophp>
        <availablecolors>
          <color1></color1>
          <color2></color2>
          <color3></color3>
        </availablecolors>
      </link>
      -->
</queue>