본문 바로가기
XML

XML 네임스페이스~문서의 종류

by 요리하다그만둠 2022. 7. 29.

XML 네임스페이스

XML 네임스페이스(namespace)

XMl 네임스페이스는 XML 요소 간의 이름에 대한 충돌을 방지해 주는 방법을 제공합니다.

XML 네임스페이스는 요소의 이름과 속성의 이름을 하나의 그룹으로 묶어주어 이름에 대한 충돌을 해결합니다.

 

이러한 XML 네임스페이스는 URI(Uniform Resource Identifiers)로 식별됩니다.

 

XML 요소 간의 이름 충돌

XML에서는 사용자가 XML 요소의 이름을 직접 정의합니다.

따라서 서로 다른 XML 문서를 통합하려고 할 때 같은 이름을 가진 요소로 인해 충돌이 발생할 수  있습니다.

예제1 )
<body>
    <h1>html에서의 제목</h1>
    <p>html에서의 단락</p>
</body>

 

예제2 )
<body>
    <arm>70</arm>
    <leg>110</leg>
</body>

위의 두 예제에서 <body>요소는 서로 완전히 다른 의미로 사용됩니다.

예제 1에서는 HTML문서의 <body>태그로 사용되었습니다.

예제 2에서는 실제 몸을 의미하여, 각 신체 부위의 치수를 기록하기 위해 사용되었습니다.

하지만 사용자나 XML 응용 프로그램은 두 <body>요소의 이러한 차이점을 어떻게 다뤄야 하는지 알지 못합니다.

 

XML 네임스페이스의 선언

XML에서는 접두사(prefix)를 이용하여 위와 같은 이름의 충돌을 방지하고 있습니다.

서로 같은 이름에 요소마다 서로 다른 접두사를 붙이면 이름의 충돌을방지할 수 있게 됩니다.

 

XML에서 이러한 접두사를 사용하려면, 반드시 먼저 접두사에 대한 네임스페이스를 선언해야 합니다.

XMl에서 네임스페이스를 선언하는 문법은 다음과 같습니다.

<요소이름 xmlns:prefix="URI">

 

XML 네임스페이스의 선언은 xmlns나 xmlns: 로 시작합니다.

prefix 속성값에는 이름 앞에 붙게 되는 네임스페이스 접두사(nameespace prefix)를 명시합니다.

접두사로 사용되는 URI는 네임스페이스 식별자를 의미합니다.

예제)
<root>
    <a:body xmlns:a="https://www.w3.org/TR/html5/">
        <a:h1>html에서의 제목</a:h1>
        <a:p>html에서의 단락</a:p>
    </a:body>
    <b:body xmlns:b="http://codingsam.com/xml/physical/">
        <b:arm>70</b:arm>
        <b:leg>110</b:leg>
    </b:body>
</root>

위의 예제에서 첫 번째 <body>요소의 xmlns 속성은 a: 라는 접두사를 선언합니다.

두 번째<body>요소의 xmlns 속성은 b:라는 접두사를 선언합니다.

 

이렇게 XML요소에 네임스페이스가 선언되면, 해당 요소의 모든 자식(child) 요소에도 같은 네임스페이스가 선언됩니다.

이러한 네임스페이스 선언은 XML루트(root) 요소에도 선언할 수 있습니다.

예제)
<root
    xmlns:a="https://www.w3.org/TR/html5/"
    xmlns:b="http://codingsam.com/xml/physical/">
    <a:body>
        <a:h1>html에서의 제목</a:h1>
        <a:p>html에서의 단락</a:p>
    </a:body>
    <b:body>
        <b:arm>70</b:arm>
        <b:leg>110</b:leg>
    </b:body>
</root>

URI(Uniform Resource Identifiers)

URI란 통합 자원 식별자를 의미하며, 인터넷에세 있는 자원을 나타내는 유일한 주소를 의미합니다.

URI의 존재는 인터넷에서 요구되는 기본조건으로 인터넷 프로토콜에서 항상 명시됩니다.

가장 잘 알려진 URI로는 인터넷 도메인 주소를 나타내는 URL(Uniform Resource Locator)이 있습니다.

또 다른 URI로는 URN(Universal Resource Name)이 있습니다.

 

XML 문서의 종류

W3C의 XML 표준 권고안은 문법적인 측면에서 두 가지 종류의 XML 문서를 정의하고 있습니다.

1.문법에 맞는(well-formed)XMl 문서

2.유효한(valid) XML문서

 

문법에 맞는(well-formed) XML 문서

문법에 맞는(well-formed) XMl 문서로서 가져야 하는 최소한의 필수 요건을 충족한 XML문서를 의미합니다.

따라서 이 문서는 XML의 모든 구문을 허용하지만, DTD(document type definition)나 스키마를 사용하지는 않습니다.

 

문법에 맞는(well-formed) XML 문서가 되기 위한 필수 요건은 다음과 같습니다.

 

1.루트(root) 요소를 하나만 가져야 합니다.

2.모든 XML 요소는 종료 태그를 가져야 합니다.

3.시작 태그와 종료 태그에 사용된 태그 이름이 대소문자까지 완벽해게 일치해야 합니다.

4.모든 XML 요소의 여닫는 순서가 반드시 정확하게 지켜져야 합니다.

5.모든 속성의 속성값이 따옴표로 둘러싸여 있어야 합니다.

 

위에서 언급한 필수 요건을 만족하지 못하는 XML문서는 오류를 발생시킵니다.

HTML 문서와는 달리 XML 문서에서는 오류가 발생하면, 해당 응용 프로그램의 모든 동작을 중지시킵니다.

따라서 모든XML 문서는 반드시 문법에 맞는(well-formed) XML 문서여야만 합니다.

 

유효한(valid) XML 문서

유효한(valid) XML 문서는 문법에 맞는(well-formed) XML 문서를 좀 더 엄격하게 검증한 문서입니다.

따라서 유효한(valid) XML 문서는 모두 문법에 맞는(well-formed) XML 문서입니다.

거기에 추가하여 DTD(document type definition)을 가지고 있으며, 그에 따라 제대로 검증된 문서를 의미합니다.

 

XML에서 사용하는 DTD에는 다음과 같이 두 가지 종류가 있습니다.

 

1.DTD : 일반적인 문서 타입 정의(document type definition)

2.XML 스키마(XSD)

이러한 DTD는 XML문서의 구조 및 해당 문서에서 사용할 수 있는 적법한 요소와 속성을 정의합니다.

 

XML 파서(parser)

XML 파서(parser)란 응용 프로그램이 XML 문서를 읽을 수 있도록 인터페이스를 제공해주는 라이브러리(library)나 패키지(package)를 의미합니다.

XML 파서는 XML 문서가 적합한 형식을 갖추고 있는지와 문법상의 오류는 없는지를 검사합니다.

현재 대부분의 주요 웹 브라우저는 모든 XML 파서를 내장하고 있습니다.

위의 그림은 XML 파서가 어떤 방식으로 XML 문서와 동작하는지를 보여줍니다.

XML 파서의 최종 목적은 XML문서를 응용 프로그램이 읽을 수 있는 코드로 변환하는 것입니다.

 

현재 많이 사용되고 있는 XML 파서의 종류는 다음과 같습니다.

 - MSXML(Microsoft Core XML Services)

 - System.Xml.XmlDocument

 - Java built-in parser

 - Saxon

 - Xerces


'XML' 카테고리의 다른 글

[Spring] Maven, pom.xml  (0) 2022.07.29
XML 요소~속성  (0) 2022.07.29
XML 문법~주석  (0) 2022.07.28
XML 개요~구조  (0) 2022.07.28