2011-06-21 12 views
13

xml属性の 'ローカル名'と '修飾名'の違いを教えてください。 http://developer.android.com/reference/org/xml/sax/Attributes.htmlから :この例ではxml属性の 'ローカル名'と '修飾名'の相違点

/** Look up an attribute's local name by index. */ 
abstract String getLocalName(int index) 

/** Look up an attribute's XML qualified (prefixed) name by index. */  
abstract String getQName(int index) 

<anelement attr1="test" attr2="test2"> </anelement> 

何の違いになりますか?

答えて

13

修飾名には、名前空間接頭辞とローカル名の両方が含まれます(att1およびfoo:att2)。

サンプルXML

<root 
    xmlns="http://www.example.com/DEFAULT" 
    att1="Hello" 
    xmlns:foo="http://www.example.com/FOO" 
    foo:att2="World"/> 

Javaコード:デフォルトの名前空間をピックアップしていない名前空間接頭辞なし

ATT1

属性。つまり、root要素のネームスペースは"http://www.example.com/DEFAULT"ですが、att1属性のネームスペースは""です。

int att1Index = attributes.getIndex("", "att1"); 
attributes.getLocalName(att1Index); // returns "att1" 
attributes.getQName(att1Index); // returns "att1" 
attributes.getURI(att1Index); // returns "" 

ATT2

int att2Index = attributes.getIndex("http://www.example.com/FOO", "att2"); 
attributes.getLocalName(att2Index); // returns "att2" 
attributes.getQName(att2Index); // returns "foo:att2" 
attributes.getURI(att2Index); // returns "http://www.example.com/FOO" 
+0

Skeet&あなたの答えは完璧な答えで構成されています。 –

7

ローカル名は、名前空間で修飾されていないものです。完全修飾名には、名前空間があればそれも含まれます。

詳しくは、W3C recommendation on XML namesをお読みください。

XMLファイルのどこにでもxmlnsがない場合、おそらく名前空間について心配する必要はありません。あなたはが名前空間を持っている場合など私の経験では、一般的要素よりも、名前空間を使用する可能性が低い属性

注要素名をチェックするとき、あなたはおそらく完全修飾名を作成することをお勧めします。

+0

明確な答えは、まだ簡単な例なし。 –

関連する問題