0

ネストされたxsdファイルに問題があります。Company.xsdProduct.xsdとPerson.xsdの3つのファイルがあります。

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'の宣言が見つかりません。

なぜなのかご存知ですか??

誰かが私を助けることができますか?

4

3 に答える 3

1

まず、テスト XML にエラーがあります。これ:

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

する必要があります

<Product>
   <Type>Test</Type>
</Product>

また、XML タグには名前空間宣言がありません。名前空間の宣言がない場合、タグは名前空間にまったく属していないと見なされます。スキーマは特定の名前空間 ( URI を使用http://www.company.org) にタグを配置するため、XML を検証できるようにするには、XML で同じことを行う必要があります。

たとえば、<Company>タグで次のようにすることができます。

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

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

この後、すべてが正常に検証されます。

于 2012-05-09T12:05:58.497 に答える
1

名前空間を含める必要があります。

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

XML にもいくつかのエラーがありますが、バリデーターからより適切な出力が得られれば、簡単に修正できるはずです。

于 2012-05-09T12:03:59.837 に答える
0

この例では、JAXP 解析を使用して XSD スキーマに従って XML ファイルを検証する方法を示します。

于 2012-07-20T11:16:17.997 に答える