4.4.3 スキーマ文書をXML文書内で設定する方法
「4.4.1 DOMパーサに対するXML Schemaのプロパティの設定方法」,および「4.4.2 SAXパーサに対するXML Schemaのプロパティの設定方法」に示した方法では,プロパティを用いてスキーマ文書を設定しています。これに対して,検証の対象となるXML文書内で,直接スキーマ文書を特定する方法もあります。なお,XML文書内でスキーマ文書を特定し,かつ,プロパティを用いてスキーマ文書を特定した場合は,プロパティを使って特定したスキーマ文書が優先されます。
検証の対象となるXML文書内でスキーマ文書を特定するには,xsi:schemaLocation属性またはxsi:noNamespaceSchemaLocation属性を使用します。これらの属性は,特定するスキーマ文書内で,名前空間を定義しているかどうかによって異なります。特定するスキーマ文書の種類と使用する属性の関係を次の表に示します。
特定するスキーマ文書の種類 |
使用する属性 |
---|---|
名前空間を定義したスキーマ文書 |
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属性を使用してスキーマ文書を特定する場合の例を次に示します。
-
xsi:schemaLocation属性の名前空間を宣言します。
xsi:schemaLocation属性を使ってスキーマ文書を特定するために,この属性の名前空間"http://www.w3.org/2001/XMLSchema-instance"を宣言します。
-
スキーマ文書を特定します。
特定するスキーマ文書内で宣言されている要素や属性の名前空間のURI,およびスキーマ文書名を空白で区切って指定します。
上記の例では,スキーマ文書としてpurchaseOrder.xsdを,スキーマ文書purchaseOrder.xsd内で宣言されている要素や属性の名前空間として"http://www.myshopping.com/schema/purchaseOrder"を指定しています。