XML 네임스페이스는 XML 문서의 요소와 특성 이름을 사용자 지정 및 미리 정의된 URI와 연결합니다. 이러한 연결을 만들려면 네임스페이스 URI에 대한 접두사를 정의하고 이러한 접두사를 사용하여 XML 데이터의 요소 및 특성 이름을 한정합니다. 네임스페이스는 요소 및 특성 이름 충돌을 방지하고 동일한 이름의 요소와 특성을 다르게 처리하고 유효성을 검사할 수 있도록 합니다.
네임스페이스 선언
요소에서 네임스페이스를 선언하려면 다음 특성을 사용합니다 xmlns:
.
xmlns:<name>=<"uri">
는 <name>
네임스페이스 접두사이며 <"uri">
네임스페이스를 식별하는 URI입니다. 접두사를 선언한 후에는 이 접두사를 사용하여 XML 문서의 요소와 특성을 한정하고 네임스페이스 URI와 연결할 수 있습니다. 네임스페이스 접두사는 문서 전체에서 사용되므로 길이가 짧아야 합니다.
이 예제에서는 두 BOOK
요소를 정의합니다. 첫 번째 요소는 접두사 mybook
로 한정되고, 두 번째 요소는 접두사 bb
로 한정됩니다. 각 접두사는 다른 네임스페이스 URI와 연결됩니다.
<mybook:BOOK xmlns:mybook="http://www.contoso.com/books.dtd">
<bb:BOOK xmlns:bb="urn:blueyonderairlines" />
</mybook:BOOK>
요소가 특정 네임스페이스의 일부임을 나타내려면 네임스페이스 접두사를 추가합니다. 예를 들어, Author
요소가 mybook
네임스페이스에 속하는 경우 <mybook:Author>
로 선언됩니다.
선언 범위
네임스페이스는 선언 시점부터 선언된 요소의 끝까지 유효합니다. 이 예제에서는 BOOK
요소에 정의된 네임스페이스가 BOOK
요소 외부의 다른 요소, 예를 들어 Publisher
요소에는 적용되지 않습니다.
<Author>Joe Smith</Author>
<BOOK xmlns:book="http://www.contoso.com">
<title>My Wonderful Day</title>
<price>$3.95</price>
</BOOK>
<Publisher>
<Name>MSPress</Name>
</Publisher>
네임스페이스를 사용하려면 먼저 선언해야 하지만 XML 문서의 맨 위에 표시할 필요는 없습니다.
XML 문서에서 여러 네임스페이스를 사용하는 경우 하나의 네임스페이스를 기본 네임스페이스로 정의하여 보다 깔끔한 문서를 만들 수 있습니다. 기본 네임스페이스는 루트 요소에 선언되며 문서의 모든 정규화되지 않은 요소에 적용됩니다. 기본 네임스페이스는 특성이 아닌 요소에만 적용됩니다.
기본 네임스페이스를 사용하려면 요소의 선언에서 접두사 및 콜론을 생략합니다.
<BOOK xmlns="http://www.contoso.com/books.dtd">
...
</BOOK>
네임스페이스 관리
클래스는 XmlNamespaceManager 네임스페이스 URI 및 해당 접두사 컬렉션을 저장하고 이 컬렉션에서 네임스페이스를 조회, 추가 및 제거할 수 있습니다. 특정 컨텍스트에서는 XML 처리 성능을 향상시키려면 이 클래스가 필요합니다. 예를 들어 XsltContext 클래스는 XPath 지원을 위해 XmlNamespaceManager를 사용합니다.
네임스페이스 관리자는 네임스페이스에 대한 유효성 검사를 수행하지 않지만 접두사 및 네임스페이스가 이미 확인되었으며 W3C 네임스페이스 사양을 준수한다고 가정합니다.
비고
C# 및 Visual Basic의 LINQ TO XML은 네임스페이스를 관리하는 데 사용되지 XmlNamespaceManager 않습니다. LINQ to XML을 사용할 때 네임스페이스 관리에 대한 자세한 내용은 LINQ 설명서에서 XML 네임스페이스 작업(C#) 및 XML 네임스페이스 작업(Visual Basic) 을 참조하세요.
다음은 클래스를 사용하여 수행할 수 있는 몇 가지 관리 및 조회 작업입니다 XmlNamespaceManager . 자세한 내용과 예제를 보려면 각 메서드 또는 속성에 대한 참조 페이지의 링크를 따르세요.
에게 | 사용하세요 |
---|---|
네임스페이스 추가 | AddNamespace 메서드 |
네임스페이스 제거 | RemoveNamespace 메서드 |
기본 네임스페이스의 URI 찾기 | DefaultNamespace 속성 |
네임스페이스 접두사에 대한 URI 찾기 | LookupNamespace 메서드 |
네임스페이스 URI의 접두사 찾기 | LookupPrefix 메서드 |
현재 노드에서 네임스페이스 목록 가져오기 | GetNamespacesInScope 메서드 |
네임스페이스 범위 지정 | PushScope 및 PopScope 메서드 |
현재 범위에서 접두사를 정의했는지 확인합니다. | HasNamespace 메서드 |
접두사 및 URI를 조회하는 데 사용되는 이름 테이블 가져오기 | NameTable 속성 |
참고하십시오
.NET