2016-12-20 15 views
0

XMLの名前空間の主な目的は何か分かりますが、なぜそれほど多くの属性があるのか​​わかりません。 W3Cの学校には、次の例を示します:XS、のtargetNamespaceとのxmlns:XSD:xs:schema要素の「URL属性」の意味

<?xml version="1.0"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://www.w3schools.com" 
xmlns="http://www.w3schools.com" 
elementFormDefault="qualified"> 
... 
... 
</xs:schema> 

のxmlnsの違いは何ですか?それらのどれもがスキーマにとって「有用」でない場合、なぜ3つの異なるURLを指定すべきですか?そして、このURLはどう違うべきでしょうか?

答えて

1

のxmlns:XS = "http://www.w3.org/2001/XMLSchema"

これは、名前空間 "http://www.w3.org/2001/XMLSchema" の名前空間の別名 'XS' を宣言します。これはXMLスキーマ(XSD)の構造を定義する名前空間です。すべてのXMLスキーマがこの名前空間内に存在する必要があります。

のxs:スキーマ

文書のルート要素は、我々はこれがエイリアスは、名前空間「http://www.w3.org/2001/XMLSchema」を指しXSとしてXMLスキーマ文書で伝えることができます。

のtargetNamespace = "http://www.w3schools.com"

これは、スキーマのターゲット名前空間です。これは、このスキーマのすべての要素がその一部になる名前空間です。このスキーマに準拠するXML文書を作成する場合、要素は名前空間「http://www.w3schools.com」で修飾されていなければなりません。

これは、すべての要素が空の名前空間に存在する場合、スキーマから省略できます。これは、XML文書がこのように与えられたとき、あなたが見ているXML文書の種類を特定するのが難しいというような悪い習慣です(インボイスを記述するスキーマを作成している多くの企業があります。彼らを創造した会社)。

のxmlns =「http://www.w3schools.com」これはデフォルトの名前空間を設定します

、それは基本的に言って、その名前空間の別名を持つ修飾されていないあなたは今から見つけるの任意の項目(すなわちxs:element)は、この名前空間にあるとみなされます。これを追加する理由は、ターゲットの名前空間が設定されているため、この型の修飾名はAddressType @http://www.w3schools.comであるため、スキーマ内のアイテムを参照できるようになります。たとえば、aを宣言すると、値のアドレス型はデフォルトの名前空間(http://www.w3schools.com)を使用して解決されます。ターゲットの名前空間に使用される名前空間が、xmlns:ns = "http://www.w3schools.com"のようにエイリアスになることがよくあります。この場合、AddressTypeが明示的に修飾されているスキーマでこれが表示されます。

のelementFormDefault = "資格"

これは、より複雑であり、ほとんど無視することができます。これは、あなたが遭遇するほぼすべてのスキーマに設定されています。

だからそれは何ですか?単純に、出力XML文書の名前空間の修飾方法を制御します。 修飾子がの場合、すべての要素はXML文書で修飾されている必要があります。

<ns:root xmlns:ns="http://www.w3schools.com"> 
    <ns:other/> 
</ns:root> 

修飾されていない(または省略 - 修飾されていないにそれがデフォルトた場合)にその設定した場合、親であるため、あなたがその想定し、XML文書内の子項目を修飾する必要はありません指定された名前空間では、その子は(、その他のには名前空間のエイリアスがありません)。

<ns:root xmlns:ns="http://www.w3schools.com"> 
    <other/> 
</ns:root> 
関連する問題