2011-12-21 3 views
1

名前空間に関する以下のxmlスニペットの違いは何ですか?XML名前空間接頭辞を使用し、属性としてxmlns = "blah"を指定することの相違点

をForm1

<prf:XmlElement1 xmlns:prf="namespacename"> 
    ...snip... 
</prf:XmlElement1> 

Form2の

<XmlElement1 xmlns="namespacename"> 
    ...snip... 
</XmlElement1> 

私は、その名前空間はForm2ののように記述されている場合要素にチョークのWebサービスとの相互作用が、あれば正常に動作しています名前空間はForm1のように記述されます。残念ながら、私はWebサービスフレームワークがForm1のような要素を放出するように説得することはできませんでした。これまで私が得ることのできる最高のものはForm2です。両方のフォームが名前空間を正しく指定しているようですが、これはおそらくWebサービス側のバグです。

+1

あなたとやり取りしているWebサービスが壊れています。それは明らかにXMLを理解していません。 –

+2

Form2は、指定されたXML名前空間を** default **名前空間 - 明示的な接頭辞なしで適用される名前空間として記述します。機能的には、これらの2つのXMLスニペットは同等でなければなりません。同じXML名前空間内のいくつかのXML構造を記述します.2つの別々のアプローチを使用します。 –

答えて

3

@marc_sはすでに彼のコメントで説明されている違いは何ですか。

また、@JohnSaundersはおそらくサービスが壊れているという点で正しいです。デフォルトネームスペースを使用してドキュメントを分割する理由の1つは、おそらくハードコードされた名前空間接頭辞に依存しているということです。これを確認するには、同じ名前空間を使用するが、接頭辞がprf(またはそれが常に使用するもの)以外のものを使用することでこれを確認することができます。 接頭辞の名前空間を宣言していない場合は、その接頭辞をどこでも使用してください(、要素名または属性名では使用しないでください)。宣言されていない接頭辞を使用すると、文書は正しく整形されません(名前空間)。

また、適切な機能を持つXMLサービスは、ドキュメントがDTDで検証されている場合、固定名前空間接頭辞に依存することがあります。他のスキーマ言語とは異なり、DTDは名前空間を意識していないため、名前空間宣言の処理が難しく、宣言と接頭辞の位置が固定される可能性があります。

+0

OK。それは私が推測したものであり、何らかの理由で(私は疲労を悲しんでいる)私は仕様でそれを見つけることができませんでした。レコードの場合:http://www.w3.org/TR/xml-names/#scoping-defaulting – Gus

関連する問題