sourcetip

XML에서 "xmlns"는 무엇을 의미합니까?

fileupload 2023. 11. 4. 13:15
반응형

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충돌 이름을 지정할 염려가 없는 네임스페이스를 제공합니다.

참고 항목

언급URL : https://stackoverflow.com/questions/1181888/what-does-xmlns-in-xml-mean

반응형