Xml xsd-SAXParseException无效

Xml xsd-SAXParseException无效,xml,xsd,Xml,Xsd,我目前正在使用xsd,并试图为带有一些订单项的订单定义一个简单的xsd文件。但是如果我验证xsd文件,我会得到一个SAXParsexException。谁能看到这个问题?到目前为止,我无法修复它:( 还有一个示例xml文件: <?xml version="1.0" encoding="UTF-8"?> <order orderId='1001' orderDate='2015-05-22'> <orderItem> <tit

我目前正在使用xsd,并试图为带有一些订单项的订单定义一个简单的xsd文件。但是如果我验证xsd文件,我会得到一个SAXParsexException。谁能看到这个问题?到目前为止,我无法修复它:(


还有一个示例xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<order orderId='1001' orderDate='2015-05-22'>
    <orderItem>
        <title>Nikon D5200</title>
        <manufacturer>
            <name>Nikon</name>
            <adress>
                <street>Hauptstr. 12</street>
                <city>Mannheim</city>
                <zip>68161</zip>
                <country>DE</country>
            </adress>
        </manufacturer>
        <quantity>1</quantity>
        <price>559.25</price>
    </orderItem>
</order>

尼康D5200
尼康
豪普斯特街12号
曼海姆
68161
判定元件
1.
559.25
例外情况:

线程“main”org.xml.sax.saxpasseeption中出现异常;systemId:file:/C:/Users/andre/Documents/dtd/order.xsd;行号:8;列号:16;s4s elt无效内容。1:来自“#AnonType_order”的内容无效。元素“sequence”无效、出现频率太高或位置错误


编辑:对我来说,另一个谜团是什么时候我需要一个标签?我在标记中使用了它,这样我就可以插入几个标记,这是有意义的。但是在标记定义中需要它吗?因为一个orderItem对象应该只有一个标题,依此类推-所以我需要周围有一个标记吗?

由于您的架构不正确,所以出现了错误建造

元素顺序
xs:sequence
必须位于
xs:attribute
声明之前。正确的版本是:

<xs:element name="order">
    <xs:complexType>
        <xs:sequence>
            <xs:element name='orderItem' type='OrderItem'/>
        </xs:sequence>
        <xs:attribute name='orderId' type='xs:string' use='required'/>
        <xs:attribute name='orderDate' type='xs:date' use='required'/>
    </xs:complexType>
</xs:element>

这些都是非常基本的功能。强烈建议您阅读任何关于XML模式的教程来了解这一点。

Edit:对我来说,另一个谜团是什么时候我需要一个?我在标记中使用了它,所以我可以插入几个标记,这是有意义的。但是在标记定义中是否需要它?因为一个orderItem对象应该只有一个标题和一个属性那么,我需要一个标记吗?在您的输入XML中,您已经编写了
68161
,它应该是
68161
。是的,我这样做了:)但是问题在于xsd,因为在线xsd验证器在xsd文件上引发了相同的异常。是的,您需要ad标记,在complexType下有一个元素是无效的。您可以使用XSD编辑器来提示您可以编写什么,或者最坏的情况下,您可以尝试验证XSD
<xs:element name="order">
    <xs:complexType>
        <xs:sequence>
            <xs:element name='orderItem' type='OrderItem'/>
        </xs:sequence>
        <xs:attribute name='orderId' type='xs:string' use='required'/>
        <xs:attribute name='orderDate' type='xs:date' use='required'/>
    </xs:complexType>
</xs:element>
<xs:complexType name='Company'>
    <xs:sequence>
      <xs:element name='name' type='xs:string'/>
      <xs:element name='adress' type='Adress'/>
    </xs:sequence>
</xs:complexType>

<xs:complexType name="Adress">
    <xs:sequence>
      <xs:element name="street" type="xs:string"/>
      <xs:element name="city" type="xs:string"/>
      <xs:element name="zip" type="xs:string"/>
      <xs:element name="country" type="xs:string"/>
    </xs:sequence>
</xs:complexType>