web-dev-qa-db-ja.com

ローカルコンピューター上のスキーマをXMLドキュメントで使用する方法

XML /スキーマファイルの知識が限られています。

したがって、これはかなり単純な質問になるはずです。 schemaLocationのローカルファイルをどのように指定しますか?

<?xml version="1.0"?>

<note
  xmlns="http://www.w3schools.com"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.w3schools.com note.xsd">
  ...
</note>

これはwww.w3.orgのサンプルであり、スキーマを指定する部分はschemaLocationにあります。ドキュメントを見てみましたが、ローカルファイルをどのように指定できますか?

何かのようなもの

xsi:schemaLocation="../relativepath/schemafolder not.xsd">

ありがとう

24
grobartn

schemaLocationには、空白で区切られた2つの値が含まれている必要があります。名前空間URI(これは変更されません)とスキーマURLです。

だからあなたの場合

 xsi:schemaLocation="http://www.w3schools.com ../relativepath/schemafolder/note.xsd">

名前空間URIが一見有効なhttp urlであることに騙されないでください。これは、XMLの人々が発明した小さな狂気の1つにすぎません。 :)

実際、1つのschemaLocationで複数の名前空間のスキーマを指定できます。

xsi:schemaLocation="namespace1 schemaurl1 namespace2 schemaurl2 ..."

(また、注意して相対パスを使用することをお勧めします。ファイルを移動しながら同じコード(またはツール)で検証する場合に非常に役立ちますが、検証コードをアプリケーションに展開するとき、「作業ディレクトリ"期待どおりではない可能性があります。これは、相対パスを使用してはならないということではありません。スキーマが見つからないという奇妙な例外が発生したときにこれに注意してください。)

25
biziclop