2011-01-31 9 views
24

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のサンプルであり、schemaを指定する部分はschemaLocationにあります。 ドキュメントを見てみましたが、どのようにローカルファイルを指定できますか?名前空間URI(これは変更されません)とスキーマURL:

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

おかげ

答えて

24

schemaLocationよう

何かが空白で区切られた2つの値を含める必要があります。あなたのケースではそう

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

は一見有効なHTTP URLをされた名前空間URIによってだまされてはいけないが、それは単にXMLの人々が発明少しmadnessesの一つです。 :)

実際に、あなたは1 schemaLocationにいくつかの名前空間のスキーマを指定することができます。

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

を(私も注意して相対パスを使用することをアドバイス:あなたの周りのあなたのファイルを移動するとき、彼らは非常に有用であるが、しかし、それでも同じコード(またはツール)で検証すると、アプリケーションに検証コードをデプロイするときに、 "作業ディレクトリ"が期待どおりにならない可能性があります。スキーマについての奇妙な探して例外を取得するときにこのことを認識していません。)

+0

だからリンクが有効である必要はありません?私はまだそこに何かを置く必要がありますか?たとえそれが全く使われなくても? – grobartn

+2

@grobartnリンクではありません。それはちょうどリンクのように見えますが、実際それはちょうど名前です。これは名前空間URI(URLではなく)と呼ばれ、リンクとは何の関係もありません。 schemaLocationの2番目の引数は、スキーマファイルを指すURL(またはパス)です。 – biziclop

+2

@biziclop - 名前空間URIは「単なる名前」ではなく、有効なURIでなければなりません。しかし、構文上有効なHTTP URL(URLは単なるURIのサブセットである)を使用することは、人にとって恐ろしいことです。私はいつもURNを使用するOASIS/ODFのアプローチを好んでいました。 –

関連する問題