답변:
XML 네임 스페이스를 정의합니다 .
귀하의 예에서 네임 스페이스 접두사 는 " android "이고 네임 스페이스 URI 는 " http://schemas.android.com/apk/res/android "입니다.
이 문서에는 다음과 같은 요소가 있습니다. <android:foo />
네임 스페이스 접두사를 전체 네임 스페이스 URI에 대한 짧은 이름 별칭을 가진 변수로 생각하십시오. <http://schemas.android.com/apk/res/android:foo />XML 파서가 문서를 읽을 때 "의미 한"내용과 관련하여 글을 쓰는 것과 같습니다 .
참고 : 실제로 XML 인스턴스 문서에서 네임 스페이스 접두사 대신 전체 네임 스페이스 URI를 사용할 수 없습니다.
네임 스페이스에서이 자습서를 확인하십시오. http://www.sitepoint.com/xml-namespaces-explained/
<LinearLayout접두사가없는 작품을 의미 합니까?
XML 네임 스페이스를 의미 합니다 .
기본적으로 XML의 모든 요소 (또는 속성) 는 요소 이름을 "자격을 정하는"방법으로 네임 스페이스에 속합니다.
당신과 내가 우리 자신의 XML을 발명했다고 상상해보십시오. 당신은 사람들을 설명하기 위해 XML을 발명했습니다. 저는 도시를 설명하기 위해 발명했습니다. 우리 둘 다라는 요소를 포함합니다 name. 당신의 이름은 그 사람의 이름을 나타내며 나의 이름은 도시의 이름을 나타냅니다.
<person>
<name>Rob</name>
<age>37</age>
<homecity>
<name>London</name>
<lat>123.000</lat>
<long>0.00</long>
</homecity>
</person>
두 XML이 단일 문서로 결합 된 경우 두 이름을 어떻게 구분할 수 있습니까? 위에서 볼 수 있듯이 두 가지 name요소가 있지만 둘 다 다른 의미를 갖습니다.
대답은 귀하와 저는 XML에 네임 스페이스를 할당한다는 것입니다.
<personxml:person xmlns:personxml="http://www.your.example.com/xml/person"
xmlns:cityxml="http://www.my.example.com/xml/cities">
<personxml:name>Rob</personxml:name>
<personxml:age>37</personxml:age>
<cityxml:homecity>
<cityxml:name>London</cityxml:name>
<cityxml:lat>123.000</cityxml:lat>
<cityxml:long>0.00</cityxml:long>
</cityxml:homecity>
</personxml:person>
이제 우리는 XML을 완전히 검증했으며 각 name요소의 의미에 대해 모호하지 않습니다 . 로 시작하는 모든 태그는 personxml:XML에 속하는 태그이며, 시작하는 모든 태그 는 내 태그 cityxml:입니다.
몇 가지주의 할 사항이 있습니다.
네임 스페이스 선언을 제외하면 기본 네임 스페이스에있는 것으로 간주됩니다.
식별자가없는 네임 스페이스를 선언하면 즉 xmlns="http://somenamespace",이 아닌 xmlns:rob="somenamespace"문서의 기본 네임 스페이스를 지정합니다.
실제 이름 공간 자체, 종종 IRI 는 실제 결과가 아닙니다. 고유해야하므로 사람들은 자신이 소유 한 IRI / URI를 선택하는 경향이 있지만 그보다 더 큰 의미는 없습니다. 때때로 사람들은 지정된 IRI에 XML에 대한 스키마 (정의)를 배치하지만 이는 일부 사람들의 관례 일뿐입니다.
접두사도 아무런 영향을 미치지 않습니다. 중요한 것은 접두사가 정의 된 네임 스페이스입니다. 다른 접두어로 시작하는 여러 태그는 모두 동일한 네임 스페이스에 매핑되는 것으로 간주됩니다.
접두사 경우 예를 들어, personxml와 mycityxml같은 네임 스페이스에 매핑 모두 (아래 조각 같이)를, 다음은 당신이 주어진 요소를 접두사로 문제가되지 것입니다 경우 personxml또는 mycityxml, 그들은 모두 XML 파서로 같은 일로서 취급 할 것 . 요점은 XML 파서는 접두사로 선택한 것을 신경 쓰지 않고 매핑하는 네임 스페이스 만 신경 쓴다는 것입니다. 접두사는 네임 스페이스를 가리키는 간접적 입니다.
<personxml:person
xmlns:personxml="http://example.com/same/url"
xmlns:mycityxml="http://example.com/same/url" />속성은 규정 될 수 있지만 일반적으로 그렇지 않습니다. 또한 요소와 달리 현재 존재하는 요소에서 네임 스페이스를 상속 하지 않습니다 (아래 참조).
또한 요소 네임 스페이스는 부모 요소에서 상속됩니다. 즉, 위의 XML을 동등하게 작성할 수 있습니다.
<person xmlns="http://www.your.example.com/xml/person">
<name>Rob</name>
<age>37</age>
<homecity xmlns="http://www.my.example.com/xml/cities">
<name>London</name>
<lat>123.000</lat>
<long>0.00</long>
</homecity>
</person>
가장 큰 혼란은 xml 네임 스페이스가 정보가없는 일종의 URL을 가리키고 있다는 것입니다. 그러나 진실은 네임 스페이스 아래에서 발명 한 사람이
xmlns:android="http://schemas.android.com/apk/res/android"
다음과 같이 호출 할 수도 있습니다.
xmlns:android="asjkl;fhgaslifujhaslkfjhliuqwhrqwjlrknqwljk.rho;il"
이것은 유일한 식별자입니다. 그러나 고유하고 고유 한 네임 스페이스에서 사용 된 태그 / 속성의 사양을 가리킬 수있는 URL을 입력해야합니다. 필요하지 않습니다.
왜 독특해야합니까? 네임 스페이스의 목적은 네임 스페이스를 고유하게하는 것이므로 네임 스페이스의 background 와 같은 속성을 다른 네임 스페이스 의 배경 과 구별 할 수 있습니다 .
이러한 고유성으로 인해 사용자 지정 특성을 만들면 이름 충돌이 발생할 염려가 없습니다.
네임 스페이스가 있으므로 전역 적으로 고유 한 요소를 가질 수 있습니다. 그러나 99 %의 시간은 문제가되지 않지만 시맨틱 웹 의 관점에서 보면 중요해지기 시작합니다.
예를 들어, 적절한를 사용하여 다른 스키마의 XML 매시업을 만들 수 xmlns있습니다. 예를 들어, vCard 등으로 친구의 친구를 매쉬업하십시오 .