Differences between a 'local name' and 'qualified name' in a xml attribute

后端 未结 2 633
感情败类
感情败类 2021-02-13 12:35

Can you please help me understand what is the difference between \'local name\' and \'qualified name\' in a xml attribute? From http://developer.android.com/reference/org/xml/sa

相关标签:
2条回答
  • 2021-02-13 13:14

    A local name is one which isn't qualified by a namespace. The fully qualified one includes the namespace, if any.

    It's probably worth reading the W3C recommendation on XML names to get the full details.

    Basically if you don't have xmlns anywhere in your XML file, you probably won't need to worry about namespaces. If you do have namespaces, you'll probably want to create a fully qualified name when checking for element names etc.

    Note that attributes are generally less likely to use namespaces than elements, in my experience.

    0 讨论(0)
  • 2021-02-13 13:40

    The qualified name includes both the namespace prefix and the local name: att1 and foo:att2.

    Sample XML

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

    Java Code:

    att1

    Attributes without a namespace prefix do not pick up the default namespace. This means while the namespace for the root element is "http://www.example.com/DEFAULT", the namespace for the att1 attribute is "".

    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 讨论(0)
提交回复
热议问题