以前に書いたものXML
に対してファイルを検証しようとしています。XSD Schema
私の xml ファイルを検証するための Java コードを以下に示します。XML を検証しようとすると、「ルート要素の宣言が見つかりません」のようなエラーが常に発生します。
この問題を解決するのを手伝ってくれませんか?
XML ファイル
<?xml version="1.0" encoding="UTF-8"?>
<AllBooks xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://myNameSpace.com"
schemaLocation="http://myNameSpace.com book.xsd">
<book>
<id>1</id>
<title>aşk ve gurur</title>
<author>james brown</author>
<category>science</category>
<availablity>100</availablity>
<price>5000</price>
</book>
<book>
<id>2</id>
<title>kskkdn</title>
<author>mşlfke</author>
<category>love</category>
<availablity>50</availablity>
<price>5000</price>
</book>
</AllBooks>
スキーマ ファイル
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com" elementFormDefault="qualified">
<xs:element name="AllBooks">
<xs:complexType>
<xs:sequence>
<xs:element name="book" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:integer"/>
<xs:element name="title" type="xs:string"/>
<xs:element name="author" type="xs:string"/>
<xs:element name="category" type="xs:string"/>
<xs:element name="availability" type="xs:integer"/>
<xs:element name="price" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
そしてJavaコード
static boolean validateAgainstXSD(InputStream xml, InputStream xsd)
{
try
{
SchemaFactory factory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new StreamSource(xsd));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(xml));
return true;
}
catch(Exception ex)
{
return false;
}
}