Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Xsd验证错误_Java_Xml_Xsd_Validation - Fatal编程技术网

Java Xsd验证错误

Java Xsd验证错误,java,xml,xsd,validation,Java,Xml,Xsd,Validation,我对嵌套的xsd文件有问题。我有3个文件:Company.xsd Product.xsd和Person.xsd Company.xsd <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.company.org" xmlns="http://www.company.org"

我对嵌套的xsd文件有问题。我有3个文件:Company.xsd Product.xsd和Person.xsd

Company.xsd

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.company.org"
        xmlns="http://www.company.org"
        elementFormDefault="qualified">

<xsd:include schemaLocation="Person.xsd"/>
<xsd:include schemaLocation="Product.xsd"/>

<xsd:element name="Company">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="Person" type="PersonType" 
                         maxOccurs="unbounded"/>
            <xsd:element name="Product" type="ProductType"
                         maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>  

Product.xsd

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified">

<xsd:complexType name="ProductType">
    <xsd:sequence>
       <xsd:element name="Type" type="xsd:string"/>
    </xsd:sequence>
</xsd:complexType>   
</xsd:schema>

Person.xsd

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified">

<xsd:complexType name="PersonType">
    <xsd:sequence>
       <xsd:element name="Name" type="xsd:string"/>
       <xsd:element name="SSN" type="xsd:string"/>
    </xsd:sequence>
</xsd:complexType>   
</xsd:schema>

我尝试验证这个简单的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<Company>
<Person>
    <Name>Test</Name>
    <SSN>test</SSN>
</Person>
<Product>
    <name>Test</name>
</Product>
</Company>

试验
测试
试验
但是我有一个错误:cvc elt.1:找不到元素“Company”的声明

你知道为什么吗


有人能帮我吗???

您需要包括一个名称空间:

<Company xmlns="http://www.company.org">
... <!-- rest of XML --->

... 

XML中也有一些错误,但一旦从验证器获得更合理的输出,就应该很简单地修复它们。

首先,测试XML有错误。这:

<Product>
   <name>Test</name>
</Product>

在此之后,一切都会正常验证。

将向您展示如何使用JAXP解析根据XSD模式验证XML文件。

确定tnk以获得回复,但我的问题没有得到解决,因为我不想在标记中指定XMLN。在本例中,我如何修改XSD模式??为什么不指定名称空间?您可以控制哪个部分,XSD和XML,或者两者都可以?
<Product>
   <Type>Test</Type>
</Product>
<?xml version="1.0" encoding="UTF-8"?>

<Company xmlns="http://www.company.org">
   ....
</Company>