XML 네임스페이스
XML namespaceXML 네임스페이스는 XML 문서에서 고유하게 명명된 요소와 속성을 제공하는 데 사용된다. 그것들은 W3C 권고안에 정의되어 있다.[1][2] XML 인스턴스는 둘 이상의 XML 어휘에서 요소 또는 속성 이름을 포함할 수 있다. 각 어휘에 네임스페이스가 주어진다면, 동일한 이름을 가진 요소나 속성 사이의 모호성을 해결할 수 있다.
간단한 예로는 고객과 주문된 제품에 대한 참조가 포함된 XML 인스턴스를 고려하는 것이다. 고객 요소와 제품 요소 모두 id라는 이름의 하위 요소를 가질 수 있다. 따라서 ID 요소에 대한 참조는 모호할 수 있다. 다른 네임스페이스에 배치하면 모호성이 제거된다.
네임스페이스 이름
네임스페이스 이름은 통일된 리소스 식별자(URI)이다. 일반적으로 주어진 XML 어휘의 네임스페이스를 위해 선택된 URI는 저자의 웹 서버 URL과 같이 어휘를 정의하는 저자나 조직의 통제 하에 자원을 설명한다. 그러나 네임스페이스 규격은 정보 검색에 네임스페이스 URI를 사용할 것을 요구하거나 제안하지 않으며 XML 파서(parser)에 의해 문자열로 처리된다. 예를 들어 http://www.w3.org/1999/xhtml의 문서 자체는 코드를 포함하지 않는다. 그것은 단순히 인간 독자들에게 XHTML 네임스페이스를 묘사한다. 단순 문자열(예: "xhtml")이 아닌 네임스페이스를 식별하기 위해 URI(예: "http://www.w3.org/1999/xhtml")를 사용하면 중복 식별자를 사용하여 서로 다른 네임스페이스의 확률을 줄일 수 있다.
네임스페이스 URI라는 용어가 널리 사용되지만 W3C 권장사항은 이를 네임스페이스 이름이라고 부른다. 이 규격은 네임스페이스 이름에 대한 정확한 규칙에 대해 완전히 규범적인 것은 아니며(파서들이 네임스페이스 이름이 유효한 균일 리소스 식별자가 아닌 경우 문서를 거부해야 한다고 명시적으로 말하지 않음), 많은 XML 파서들은 모든 문자열을 사용할 수 있도록 허용한다. 권장 사항의 버전 1.1에서 네임스페이스 이름은 국제화된 리소스 식별자가 되며, 이 식별자는 비 ASC의 사용을 허가한다.실제로 사용되는 II 문자는 거의 모든 XML 소프트웨어에 의해 이미 받아들여졌다. 그러나 네임스페이스 URI라는 용어는 대중적인 용법뿐만 아니라 3C와 그 밖의 다른 많은 규격에서도 지속된다.
그 Namespaces 추천의 출판에 뒤이어 어떻게 상대 URI, 일부 엄격한 그것을 간단히 문자열로 취급 받아서는 안 되고, 다른 이들은 확신을 갖고는 절대적인 매개 변수 의 URI입니다는 그 문서의 기본 URI에 대한 해결에 의해 켜져야 한다고 주장하고 논쟁하고 있서 다루어야 한다에 대해 집중 토론이 벌어졌다.[3] 그 토론의 결과는 상대적인 우리당이 더 이상 사용되지 않는다는 3C의 판결이었다.[4]
HTTP 체계에서 URL의 형태를 취하는 URI의 사용은 HTTP 프로토콜과의 공식적인 관계가 없음에도 불구하고 일반적이다(예: http://www.w3.org/1999/xhtml) 네임스페이스 규격에는 이러한 URL이 참조 해제된 경우(소프트웨어가 이 위치에서 문서를 검색하려고 하는 경우)에 대해 언급되어 있지 않다. 일부 사용자가 채택한 하나의 협약은 RDDL 문서를 해당 위치에 배치하는 것이다.[5] 그러나 일반적으로 사용자는 네임스페이스 URI가 웹 상의 문서 주소가 아닌 이름일 뿐이라고 가정해야 한다.
네임스페이스 선언
예약된 XML 특성을 사용하여 XML 네임스페이스가 선언됨 xmlns
또는 xmlns:prefix
의 값은 유효한 네임스페이스 이름이어야 한다.
예를 들어, 다음 선언은 "xhtml:" 접두사를 XHTML 네임스페이스에 매핑한다.
xmlns:xhtml="http://www.w3.org/1999/xhtml"
이름 접두사 "xhtml:"로 시작하는 모든 요소 또는 속성은 XHTML 네임스페이스에 있는 것으로 간주된다. 만약 그것 또는 상위가 위의 네임스페이스 선언을 가지고 있다면 말이다.
기본 네임스페이스를 선언할 수도 있다. 예를 들면 다음과 같다.
xmlns="http://www.w3.org/1999/xhtml"
이 경우, 네임스페이스 접두사가 없는 요소는 XHTML 네임스페이스에 있는 것으로 간주되며, 이 요소 또는 상위 요소가 위의 기본 네임스페이스 선언을 가지는 경우 해당 요소는 XHTML 네임스페이스에 있는 것으로 간주된다.
범위에 기본 네임스페이스 선언이 없는 경우 네임스페이스 이름에는 값이 없다.[6] 이 경우 명시적 네임스페이스 접두사가 없는 요소는 어떤 네임스페이스에도 없는 것으로 간주된다.
속성은 기본 네임스페이스의 영향을 받지 않는다. 명시적 네임스페이스 접두사가 없는 속성은 어떤 네임스페이스에도 없는 것으로 간주된다.
API 및 XML 개체 모델의 네임스페이스
다른 규격은 네임스페이스 정보가 애플리케이션에 어떻게 표시되는지에 대해 서로 다른 접근방식을 취해왔다.
거의 모든 프로그래밍 모델에서는 요소 또는 속성 노드의 이름을 로컬 이름, 네임스페이스 접두사 및 네임스페이스 URI의 3부분 이름으로 검색하도록 허용한다. 응용 프로그램은 접두사 선택에 유의미한 의미를 부여하지 않아야 하지만, 정보는 인간 독자에게 도움이 될 수 있기 때문에 제공된다. 네임스페이스 URI와 로컬 이름이 일치하는 경우 이름은 동일한 것으로 간주된다.
또한 대부분의 모델은 주어진 요소에 대해 선언된 네임스페이스를 결정하는 방법을 제공한다. 일부 XML 어휘는 이름뿐만 아니라 요소 또는 속성의 내용에도 정규화된 이름(네임스페이스 접두사 포함)을 표시할 수 있기 때문에 이 정보가 필요하다. 이 정보를 제공할 수 있는 세 가지 주요 방법이 있다.
- 속성 노드 이름이 "xmlns" 또는 "xmlns:xxx"로 지정되면 네임스페이스가 원본 XML 문서에 정확히 기록된다. 이것은 DOM이 제시한 모델이다.
- 네임스페이스 선언: 속성과 구별되지만 소스 XML 문서에 관련 속성이 있는 일대일. JDOM이 제시한 모델이다.
- 범위 내 네임스페이스 바인딩: 이 모델에서 응용 프로그램은 주어진 요소에 대해 적용범위에 포함되는 네임스페이스를 결정할 수 있지만 실제 선언을 포함하는 요소를 결정할 수는 없다. 이것은 XPath, XSLT, XQuery에 사용되는 모델이다.
참고 항목
참조
- ^ Bray, Tim; Dave Hollander; Andrew Layman; Richard Tobin; Henry S. Thompson (December 2009). "Namespaces in XML 1.0". W3C. Retrieved 9 October 2010.
- ^ "XML and Semantic Web W3C Standards Timeline" (PDF).
- ^ Dodds, Leigh (24 May 2000). "News from the trenches". O'Reilly Media, Inc.
- ^ Connolly, Dan (11 Sep 2000), W3C XML Plenary decision on relative URI references in namespace declarations
- ^ Harold, Elliotte Rusty (20 Feb 2001). "RDDL Me This: What Does a Namespace URL Locate?". Archived from the original on 7 May 2017.
- ^ "Namespaces in XML 1.0 (Third Edition)". W3C. Retrieved 28 April 2017.