.xsdファイルで定義したとおり、ブラウザーでxmlファイルを表示したい。次の2つのファイルを確認して、何をする必要があるかを指摘してください。これらの2つのファイルは同じフォルダーの下にあります。
employee.xml
<?xml version="1.0"?>
<employee xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="employee.xsd">
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
employee.xsd
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string" fixed="red" />
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
2つのエラーが発生しました。1つはスキーマファイルにあり、もう1つはXMLファイルのxsi:schemaLocation
属性の値の構文にあります。
主なエラーは、employee.xsdファイルがXMLスキーマのフラグメントにすぎないことです。 employee.xsdの包含を完了する必要があります。例えば、
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://www.w3schools.com/RedsDevils"
elementFormDefault="qualified"
xmlns="http://www.w3schools.com/RedsDevils employee.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string" fixed="red" />
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
およびemployee.xml:
<?xml version="1.0" encoding="utf-8"?>
<employee xmlns="http://www.w3schools.com/RedsDevils"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com/RedsDevils employee.xsd">
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
XMLファイルでデフォルトの名前空間を定義するため、スキーマの場所属性xsi:schemaLocation
は、名前空間と、空白で区切られたスキーマへのパスで構成する必要があります。 "http://www.w3schools.com/RedsDevils"
の代わりに"http://www.w3schools.com"
のように名前空間名をもう少し一意になるように変更しました。
最後に、XMLファイルemployee.xmlがスキーマemployee.xsdに対応していないことを追加できます。これは、要素<firstname>John</firstname>
の値がred
以外の値になっているためですが、おそらくこれはテストしたいものです。