XML 네임스페이스(XML namespace)는 XML 문서에서 고유하게 명명된 요소와 속성을 제공하는 데 사용된다. 이는 W3C 권장 사항에 정의되어 있다.[1][2] XML 인스턴스에는 둘 이상의 XML 어휘의 요소 또는 속성 이름이 포함될 수 있다. 각 어휘에 네임스페이스가 제공되면 동일한 이름의 요소나 속성 간의 모호성을 해결할 수 있다.
간단한 예는 고객과 주문한 제품에 대한 참조가 포함된 XML 인스턴스를 고려하는 것이다. 고객 요소와 제품 요소 모두 id라는 하위 요소를 가질 수 있다. 따라서 id 요소에 대한 참조는 모호하다. 이를 다른 네임스페이스에 배치하면 모호함이 제거된다.
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 네임스페이스에 있는 것으로 간주된다.
범위에 기본 네임스페이스 선언이 없으면 네임스페이스 이름에는 값이 없다.[3] 이 경우 명시적인 네임스페이스 접두사가 없는 요소는 어떤 네임스페이스에도 없는 것으로 간주된다.
속성에는 기본 네임스페이스가 적용되지 않는다. 명시적인 네임스페이스 접두사가 없는 특성은 어떤 네임스페이스에도 없는 것으로 간주된다.