XML에서 "xmlns"는 무엇을 의미합니까?
XML 파일에서 다음 행을 보았습니다.
xmlns:android="http://schemas.android.com/apk/res/android"
나는 또한 본적이 있습니다.xmlns
다른 많은 XML 파일에서 볼 수 있습니다.
그것은 무엇일까요?
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를 선택하는 경향이 있지만 그 이상의 큰 의미는 없습니다.때때로 사용자는 XML에 대한 스키마(정의)를 지정된 IRI에 배치할 수 있지만, 이는 일부 사용자만의 규칙입니다.
접두사도 중요하지 않습니다.유일하게 중요한 것은 접두사가 정의된 네임스페이스입니다.서로 다른 접두사로 시작하는 여러 태그는 모두 동일한 네임스페이스에 매핑된 것으로 간주됩니다.
예를 들어, 만약 접두사가
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 네임스페이스를 정의합니다.
예에서 네임스페이스 접두사는 " android"이고 네임스페이스 URI는 "http://schemas.android.com/apk/res/android "입니다.
문서에는 다음과 같은 요소가 있습니다.
네임스페이스 접두사는 전체 네임스페이스 URI에 대한 짧은 이름 별칭을 가진 변수라고 생각합니다.이것은 XML 파서가 문서를 읽을 때 "의미"에 관해 쓰는 것과 같은 것입니다.
참고:XML 인스턴스 문서의 네임스페이스 접두사 대신 전체 네임스페이스 URI를 실제로 사용할 수 없습니다.
네임스페이스에 대한 이 튜토리얼을 확인해보세요: http://www.sitepoint.com/xml-namespaces-explained/
가장 큰 혼란은 xml 네임스페이스가 어떤 종류의 URL을 가리킨다는 것입니다.그러나 진실은 이름 공간 아래에서 발명한 사람은
xmlns:android="http://schemas.android.com/apk/res/android"
이렇게 부를 수도 있습니다.
xmlns:android="asjkl;fhgaslifujhaslkfjhliuqwhrqwjlrknqwljk.rho;il"
이것은 고유 식별자일 뿐입니다.그러나 고유하고 해당 네임스페이스에서 사용된 태그/속성의 규격을 가리킬 수 있는 URL을 지정해야 한다고 설정되어 있습니다.꼭 필요한 것은 아닙니다.
왜 독특해야 합니까?네임스페이스의 목적은 네임스페이스가 고유하도록 하는 것이므로, 네임스페이스의 백그라운드라는 속성을 다른 네임스페이스의 백그라운드와 구별할 수 있습니다.
이러한 고유성 때문에 사용자 지정 특성을 만들 경우 이름 충돌이 발생할 것을 걱정할 필요가 없습니다.
xmlns - xml 네임스페이스.요소 이름 충돌을 피하기 위한 방법일 뿐입니다.예를 들어,
<config xmlns:rnc="URI1" xmlns:bsc="URI2">
<rnc:node>
<rnc:rncId>5</rnc:rncId>
</rnc:node>
<bsc:node>
<bsc:cId>5</bsc:cId>
</bsc:node>
</config>
두개의 다른node
요소를 하나의 xml 파일에 저장합니다.네임스페이스가 없으면 이 파일은 유효하지 않습니다.
이름 공간이 있으므로 전역 고유 요소를 가질 수 있습니다.그러나 99%의 경우 이것은 실제로 중요하지 않지만 시맨틱 웹의 관점에서 볼 때 중요해지기 시작합니다.
예를 들어, 다른 스킴의 XML 매시업을 해당 스킴을 사용하는 것만으로 만들 수 있습니다.xmlns
. 예를 들어 친구의 친구를 vCard 등으로 매시업합니다.
새롭고, 간결하며, 완벽한 답은 오래된 질문에...
xmnls
에서는 XML Namespaces를 지원하므로 별도로 개발된 어휘를 이름 충돌 없이 결합할 수 있도록 XML 요소 및 특성 이름을 지정하는 표준 방법을 제공합니다.
XML 네임스페이스의 용도
XML 네임스페이스를 사용하면 XML 스키마 작성자가 독립적으로 개발된 스키마에서 동일한 요소와 속성 이름을 구별할 수 있습니다.URI에 네임스페이스 이름을 기반으로 하는 것은 도메인 이름의 고유성과 소유권 측면을 사용하여 이름 충돌을 방지하고(유일성), 이름 지정 권한(소유권)을 설정하는 수단으로 활용합니다.
목적xmlns
xmlns
는 XML 네임스페이스에서 두 가지 다른 방식으로 사용됩니다.
기본 네임스페이스 선언
<element xmlns="http://www.example.org">
라고 선언합니다.
element
그리고 그 후의 모든 요소들은http://www.example.org
기본적으로 네임스페이스입니다.네임스페이스 접두사 선언
<ex:element xmlns:ex="http://www.example.org">
라고 선언합니다.
ex:element
그리고.- 그 속성
- 그 후의 요소.
- 그 후의 요소의 속성.
가 앞에 붙어있는 것들은
http://www.example.org
네임스페이스.
밑줄
사용.xmlns
기본 네임스페이스 선언 또는 네임스페이스 접두사 선언을 통해 XML과 XML을 안전하게 혼합할 수 있습니다.http://www.example.org
충돌 이름을 지정할 염려가 없는 네임스페이스를 제공합니다.
참고 항목
- XML 네임스페이스 이름 URI를 검색할 수 있어야 합니까?
- XML에서 네임스페이스와 접두사의 차이점은 무엇입니까?
- XML의 사양은 무엇입니까?
- namespace-well-formed는 XML에서 무엇을 의미합니까?
언급URL : https://stackoverflow.com/questions/1181888/what-does-xmlns-in-xml-mean
'sourcetip' 카테고리의 다른 글
PHP PDO 및 MySQLi (0) | 2023.11.04 |
---|---|
jQuery 플러그인을 확장하는 가장 좋은 방법 (0) | 2023.11.04 |
Oracle에서 regexp_replace vs translate의 성능? (0) | 2023.11.04 |
업로드하기 전에 HTML5를 사용하여 이미지 크기 조정 (0) | 2023.11.04 |
Angular에서 "track by"란 무엇입니까?JS는 어떻게 작동합니까? (0) | 2023.11.04 |