多个名称空间多个模式xml未验证

时间:2013-07-04 05:42:28

标签: java xml validation xsd

我正在尝试使用jing验证多个命名空间,多个架构xml。我的文件如下:
 testtype.xsd

<?xml version="1.0" encoding="utf-8"?>
 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.my.com/testtype"
        xmlns:abcs="http://www.my.com/test1"
        xmlns:childs="http://www.my.com/childs">

 <xsd:import namespace="http://www.my.com/test1" 
       schemaLocation="abc.xsd"/>
 <xsd:import namespace="http://www.my.com/childs"
       schemaLocation="child.xsd"/>

<xsd:complexType name="testtype">
 <xsd:sequence>
   <xsd:element ref="childs:team" />
   <xsd:element ref="abcs:test"/>
 </xsd:sequence>
</xsd:complexType>
</xsd:schema>  

child.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://www.my.com/childs"
xmlns:why="http://www.my.com/childs">

<xs:include schemaLocation="parent.xsd" />
<xs:element name="team" type="why:baseTeam"/>
</xs:schema>  

abc.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.my.com/test1" >

<xs:element name="test" type="xs:string">
</xs:element>
</xs:schema>  

parent.xsd

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.my.com/childs"
    xmlns:whys="http://www.my.com/childs">

<xsd:include schemaLocation="grandparent.xsd" />
<xsd:complexType name="baseTeam">
 <xsd:attribute name="mascot" type="whys:mascotNames" use="required" />
</xsd:complexType>
</xsd:schema>

grandparent.xsd

<?xml version="1.0" encoding="utf-8"?>
 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.my.com/childs">

<xsd:simpleType name="mascotNames">
<xsd:restriction base="xsd:string">
  <xsd:enumeration value="bengals" />
  <xsd:enumeration value="cowboys" />
  <xsd:enumeration value="patriots" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>  

sample.xml中

<?xml version="1.0"?>
<testtype xmlns="http://www.my.com"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

            xsi:schemaLocation="http://www.my.com/testtype  testtype.xsd
                http://www.my.com/childs  child.xsd
                                http://www.my.com/test1 abc.xsd"
            xmlns:testtype="http://www.my.com/testtype"
                xmlns:childs="http://www.my.com/childs"
            xmlns:abcs="http://www.my.com/abcs">

<childs:team mascot="cowboys"/>
<abcs:test>statement</abcs:test>
</testtype>

孩子从父母那里取得它的类型,父母从祖父母那里取得它。 abc是独立的命名空间。 testtype包含child和abc。 问题是当我尝试针对testtype.xsd验证sample.xml时,我得到一个空指针异常。

Exception in thread "main" java.lang.NullPointerException
at org.apache.xerces.impl.xs.XMLSchemaLoader.resolveDocument(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.findSchemaGrammar(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source)

有人可以告诉我为什么可能存在空指针异常或者xsd形成有问题。

由于

0 个答案:

没有答案