2009-05-27 14 views
6

こんにちは、XSD、XML、ネームスペースについて考えていますが、私が望むやり方で作業することはできません。XSDのインポートとネームスペース

私は、現時点では、このように始まり、XSD持っている:私はその後

<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" 
      targetNamespace="http://www.example.com" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns="http://www.example.com"> 

<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns="http://www.example.com"> 
    <xs:import namespace="http://www.example.com" schemaLocation="Include.xsd" /> 

あなたが見ることができるように、それは次のように開始し、別のXSDファイルを、インポートします

<foobar> 
    <whatever>.... 

基本的に私は名前空間が何であっても気にしませんstはうまくいくものがうまくいくようにしたい。以前はネームスペースを使用していませんでしたが、別のXSDを別のXSDにインポートするためにはネームスペースを使用する必要があります。私がしたくないことは、XML文書のすべての要素に接頭辞を付けることです。

これを達成するには、XSD文書とXML文書のさまざまな属性(targetNamespace、namespace、xmlns、elementFormDefaultなど)にどのような値の組み合わせが必要ですか?

現在、インポートされたXSDドキュメントで定義されている要素は、XMLで名前空間の修飾が必要です。

+0

は、あなたの文書では、実際にはスキーマのいずれかで定義された「XML」の要素を持っている、またはあなたはドキュメントがで始まる意味ですかmeaninging で開始していますか? – Jherico

+0

私はルートがxmlであることを意味しました - 私は混乱を避けるためにそれを修正しました。 – cbp

答えて

13

あなたが名前空間を使用していないか、あなたのスキーマが同じ名前空間を共有している場合、あなたは、xsを使用してオフにはるかに良いでしょう:XSではなく、次のとおりインポートを。スキーマAは、BがAと同じ名前空間を持つか、または名前空間が宣言されていない場合にスキーマBを含むことができます(後者の場合、B 'はインクルード時にincluderの名前空間を採用します)。だから、...のようなもの:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns="http://www.example.com"> 
    <xs:include schemaLocation="Include.xsd" /> 

<!-- ... --> 

</xs:schema> 
+0

ああよろしく!ありがとう – cbp

1

XML要素の接頭辞を避けるには、elementFormDefaultを "unqualified"に設定する必要があると思います。残りはうまくいくはずです。ネームスペースはマスターとインポートされたXSDの間で同じです - それは問題ありません。接頭辞なしでxmlns =を指定すると問題ありません。あなたは行かなくてはなりません。マルク・

+0

ありがとう、あなたは正しい - 私は私が思ったよりも近くにいた。しかし、XML文書を作成するとき、インポートされたXSDで定義されている要素では、ネームスペースを指定する必要があります(インポートされたXSDと実際のXSDの両方ともelementFormDefaultに 'unqualified'が設定されています)。 – cbp

関連する問題