Xml xsd-SAXParseException无效
我目前正在使用xsd,并试图为带有一些订单项的订单定义一个简单的xsd文件。但是如果我验证xsd文件,我会得到一个SAXParsexException。谁能看到这个问题?到目前为止,我无法修复它:(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
还有一个示例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>