我有xsd和xml文件。在验证关闭时xml很好地解析。 但用xsd验证它抱怨xsd中的根元素为空。xom xsd验证失败,因为根元素为空
我的xsd文件有多个全局元素。所以基本上这可能是一个问题。 我想从xsd中,XOM将根元素视为null。如果你能在它确认
如何声明的XSD文件和根元素什么做的最好的办法,在XSD限制全局元素,只是1元does not看起来对我好
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.popcornmonsters.com/"
xmlns="http://www.popcornmonsters.com/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="address_book" >
<xs:complexType>
<xs:sequence>
<xs:element ref="entry" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="email" type="xs:string"/>
<xs:element name="first_name" type="xs:string"/>
<xs:element name="last_name" type="xs:string"/>
<xs:element name="entry">
<xs:complexType>
<xs:sequence>
<xs:element ref="first_name" minOccurs="0"/>
<xs:element ref="last_name" minOccurs="0"/>
<xs:element ref="email" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<address_book xmlns="http://www.popcornmonsters.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.popcornmonsters.com/address_book.xsd">
<entry>
<first_name>Ken</first_name>
<last_name>Cochrane</last_name>
<email>[email protected]</email>
</entry>
<entry>
<first_name>Emily</first_name>
<last_name>Cochrane</last_name>
<email>[email protected]</email>
</entry>
</address_book>
是的我需要改变它maxOccurs无界但这不是问题在这一点上。为验证我创建一个生成器实例传递TRUE作为参数,我猜是哪些设置它是验证生成器。我传递给构建器的xml文件具有schemaLocation atrribute,因此应该进行验证。但生成器抱怨模式中的根元素为null,而xml文件的根元素为adress_book,这是一个未命中匹配,因此错误。所以我认为问题在于模式中的多个全局元素,因此它不会选择根元素。请分享这里可能会出错的地方 – nBhati 2011-03-24 18:51:07
我认为这会创建一个解析器来验证DTD。在这里看看如何创建一个解析器来验证模式:http://www.xom.nu/faq.xhtml#d0e390 – 2011-03-25 15:20:54
感谢大家指出这一点....我在其他前面努力奋斗,没有运气 – nBhati 2011-03-26 13:52:16