XSD验证 - " xs" for element" xs:schema"不是绑定错误

时间:2018-04-20 10:30:04

标签: xml xsd xsd-validation xml-validation

我是初学者。这是我的XML Schema代码:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.w3.org/1999/xhtml">
    <xs:element name="breaksfast_menu">

        <xs:complexType>
            <xs:sequence>
                <xs:element name="food">
                    <xs:complexType>
                        <xs:sequence>
                         <xs:element name="name" type="xs:string"/>
                         <xs:element name="price" type="xs:string"/>
                         <xs:element name="description" type="xs:string"/>
                         <xs:element name="calories" type="xs:string"/>

                        </xs:sequence>
                    </xs:complexType>
                </xs:element>

            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

XML文档:

    <?xml version="1.0" encoding="UTF-8"?>
    <breakfast_menu xmlns:xsi="http://www.w3.org/1999/xhtml">

        <food>
            <name>Belgian Waffles</name>
            <price>$5.95</price>
            <description>
                Two of our famous Belgian Waffles with plenty of real maple syrup
            </description>
            <calories>650</calories>
        </food>

  </breakfast_menu>

尝试验证XML文件时,出现错误消息:

  

元素xs的前缀xs:schema未绑定。

1 个答案:

答案 0 :(得分:2)

更正初始错误

  

元素xs的前缀xs:schema未绑定。

在任何使用名称空间(包括XSD)的XML文档中,所有使用的名称空间前缀(例如xs)必须绑定到名称空间URI(例如http://www.w3.org/2001/XMLSchema),以便XML文档成为namespace-well-formed

此外,XSD元素在特定名称空间中定义:http://www.w3.org/2001/XMLSchema(不是http://www.w3.org/1999/xhtml,它是XHTML的名称空间,而不是XSD。)

因此,改变

xmlns="http://www.w3.org/1999/xhtml"

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

消除您的初始错误。

纠正附加错误

完成上述修复后,还有一些问题需要解决。

在您的XSD中

  1. breaksfast_menu应与breakfast_menu匹配 你的XML;
  2. xmlns:xsi="http://www.w3.org/1999/xhtml"是不必要的,但应该 你需要它来定义xsi:noNamespaceSchemaLocation,你会 需要纠正它 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. 完成上述所有更改后,您的XML将对您的XSD有效。

    由于您仍然遇到麻烦,以下是更正的XML和XSD。希望这会有所帮助:

    XML

    <?xml version="1.0" encoding="UTF-8"?>
    <breakfast_menu xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xsi:noNamespaceSchemaLocation="try.xsd">
      <food>
        <name>Belgian Waffles</name>
        <price>$5.95</price>
        <description>
          Two of our famous Belgian Waffles with plenty of real maple syrup
        </description>
        <calories>650</calories>
      </food>
    </breakfast_menu>
    

    XSD

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="breakfast_menu">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="food">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="name" type="xs:string"/>
                  <xs:element name="price" type="xs:string"/>
                  <xs:element name="description" type="xs:string"/>
                  <xs:element name="calories" type="xs:string"/>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>