元素类型“xsd:schema”必须以匹配的结束标签“</xsd:schema>”结尾

问题描述

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://xml.netbeans.org/schema/books"
    xmlns:tns="http://xml.netbeans.org/schema/books"
    elementFormDefault="qualified">
    
    <xsd:complexType name="Mcdonalds">
        <xsd:sequence>
            <xsd:element name="Apple pie" type="xsd:date"/>
            <xsd:element name="Mcflurry" type="xsd:string"/>
            <xsd:element name="Fries" type="xsd:double"/>
        </xsd:sequence>
    </xsd:complexType>
    
      <xsd:complexType name="Five guys">
        <xsd:sequence>
            <xsd:element name="Large fries" type="xsd:string"/>
            <xsd:element name="small burger" type="xsd:string"/>
            <xsd:element name="hotdog" type="xsd:int"/>
            <xsd:element name="cost" type="xsd:double"/>
        </xsd:sequence>
      </xsd:complexType>
</xsd:schema>

我正在尝试绑定我的 XSD 文件,但我一直收到此错误并且我没有发现任何问题。

错误

元素类型:

"[ERROR] 元素类型 "xsd:schema" 必须以匹配的结束标记 "" 结束

解决方法

您没有在发布的同一个 XSD 上运行验证器(或者您的 XSD 处理器严重损坏)。

您发布的 XSD 应该不会导致发布的关于 xsd:schema 缺少结束标记的错误。

为元素使用适当的 NCNames - 没有空格,正如@YitzhakKhabinsky 已经提到的那样 (+1):

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://xml.netbeans.org/schema/books"
            xmlns:tns="http://xml.netbeans.org/schema/books"
            elementFormDefault="qualified">
  
  <xsd:complexType name="Mcdonalds">
    <xsd:sequence>
      <xsd:element name="ApplePie" type="xsd:date"/>
      <xsd:element name="Mcflurry" type="xsd:string"/>
      <xsd:element name="Fries" type="xsd:double"/>
    </xsd:sequence>
  </xsd:complexType>
  
  <xsd:complexType name="FiveGuys">
    <xsd:sequence>
      <xsd:element name="LargeFries" type="xsd:string"/>
      <xsd:element name="SmallBurger" type="xsd:string"/>
      <xsd:element name="hotdog" type="xsd:int"/>
      <xsd:element name="cost" type="xsd:double"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>

上述 XSD 在语法上是正确的。将它完全用于您的下一次测试。但是,请注意以下几点:

  1. cost 元素与 FiveGuys 而不是与每个菜单项相关联的语义(可能作为属性而不是元素)是可疑的。

  2. 您当前没有定义根级元素,只有类型。

,

我使用 Saxon 验证了 XSD。这是它的输出。

请尝试删除元素名称中的空格。

Running custom validation engine Saxonica 9.7.0.15 Validator...

file:/e:/Temp/dummy.xsd:9 Fatal Error: Invalid QName {Apple pie}
file:/e:/Temp/dummy.xsd:15 Fatal Error: Invalid QName {Five guys}
file:/e:/Temp/dummy.xsd:17 Fatal Error: Invalid QName {Large fries}
file:/e:/Temp/dummy.xsd:18 Fatal Error: Invalid QName {small burger}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...