4.3.3 スキーマ文書をXML文書内で設定する方法

4.3.1 DOMパーサに対するXML Schemaのプロパティの設定方法」,および「4.3.2 SAXパーサに対するXML Schemaのプロパティの設定方法」に示した方法では,プロパティを用いてスキーマ文書を設定しています。これに対して,検証の対象となるXML文書内で,直接スキーマ文書を特定する方法もあります。なお,XML文書内でスキーマ文書を特定し,かつ,プロパティを用いてスキーマ文書を特定した場合は,プロパティを使って特定したスキーマ文書が優先されます。

検証の対象となるXML文書内でスキーマ文書を特定するには,xsi:schemaLocation属性またはxsi:noNamespaceSchemaLocation属性を使用します。これらの属性は,特定するスキーマ文書内で,名前空間を定義しているかどうかによって異なります。特定するスキーマ文書の種類と使用する属性の関係を表4-4に示します。

表4-4 特定するスキーマ文書の種類と使用する属性の関係

特定するスキーマ文書の種類使用する属性
名前空間を定義したスキーマ文書xsi:schemaLocation
名前空間を定義していないスキーマ文書xsi:noNamespaceSchemaLocation

xsi:schemaLocation属性を使用する場合,特定するスキーマ文書内で宣言されている要素や属性の名前空間のURIと,特定するスキーマ文書名を空白で区切って指定します。

xsi:schemaLocation属性,およびxsi:noNamespaceSchemaLocation属性は,どちらも名前空間"http://www.w3.org/2001/XMLSchema-instance"に属します。したがって,これらの属性を使ってスキーマ文書を特定する場合,名前空間"http://www.w3.org/2001/XMLSchema-instance"を宣言する必要があります。

xsi:schemaLocation属性を使用してスキーマ文書を特定する場合の例を次に示します。

[図データ]

  1. xsi:schemaLocation属性の名前空間を宣言します。
    xsi:schemaLocation属性を使ってスキーマ文書を特定するために,この属性の名前空間"http://www.w3.org/2001/XMLSchema-instance"を宣言します。
  2. スキーマ文書を特定します。
    特定するスキーマ文書内で宣言されている要素や属性の名前空間のURI,およびスキーマ文書名を空白で区切って指定します。
    上記の例では,スキーマ文書としてpurchaseOrder.xsdを,スキーマ文書purchaseOrder.xsd内で宣言されている要素や属性の名前空間として"http://www.myshopping.com/schema/purchaseOrder"を指定しています。