본문 바로가기

Back/XML

XML 간단하게 알아보기 - 4 (네임스페이스)

XML에 대한 기본적인 내용을 알아봤다. 사실 내용을 전달하는 데는 0~3까지 내용만 알면 충분하다.

이제부터는 규모가 큰 XML 문서를 작성할 때, element 이름이 겹치는 경우를 해결하기 위한 방법이다.

다음을 보자.

 

<?xml version="1.0" encoding="utf-8"?>
<league>
    <champion>
    	<position>AD Carry</position>
        <name>Ezreal</name>
    </champion>
    <champion>
    	<item>Knife</item>
    </champion>
</league>

 

champion element의 이름이 겹친다. 하지만 두 챔피언은 다른 내용을 포함하고 있다.

이 경우 동일한 champion 태그의 구조가 완전히 달라서 에러가 발생한다.

하지만 champion에 대한 내용임에는 분명하다.

그렇다면 prefix를 활용하면 된다!

 

<?xml version="1.0" encoding="utf-8"?>
<league>
    <ad:champion>
    	<position>AD Carry</position>
        <name>Ezreal</name>
    </ad:champion>
    <sp:champion>
    	<item>Knife</item>
    </sp:champion>
</league>

 

prefix를 사용해서 element를 구분하는 데 성공했다.

하지만, prefix가 무슨 내용을 담고 있는지 미리 선언해야만 한다.

여기서 xmlns attribute를 사용하게 된다.

 

<?xml version="1.0" encoding="utf-8"?>
<league>
    <ad:champion xmlns:ad="https://troll.league.com/position/ad">
    	<position>AD Carry</position>
        <name>Ezreal</name>
    </ad:champion>
    <sp:champion xmlns:ad="https://troll.league.com/position/sp">
    	<item>Knife</item>
    </sp:champion>
</league>

 

xmlns:prefix="URI" 방식으로 선언하면 된다.

parser는 해당 uri에서 정보를 얻지 않고, 단순히 고유의 namespace를 선언하기 위한 방법이다.

만약 child에 모두 적용되는 ns를 적용하고 싶다면, parent 혹은 subchild를 포함하는 child에 xmlns를 선언하면 된다.

 

xml에 담긴 정보를 다른 언어로 변경하고 싶을 때, XSLT를 사용한다.

eXtensible Stylesheet Language Transformations라는 용어답게, stylesheet를 선언한 것이라고 보면 된다.

공식적으로 "http://www.w3.org/1999/XSL/Transform" 해당 URI를 참고하여 변경할 언어를 선택한다.

 

XSLT를 활용하면 XML 문서를 작성해서 HTML 문서로 출력할 수 있다.

중견 SI 회사에서 만든 다양한 솔루션을 보면 이러한 방식을 사용하는 것을 볼 수 있다.

 

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<!-- 이 안은 html 형식으로 작성하면 됩니다>

    <html>
        <head>
            ...
        </head>
        <body>
            ...
        </body>
    </html>
    
<!-- 다만, 순수 html 형식과는 문법이 다소 다릅니다. -->
</xsl:template>

</xsl:stylesheet>

 

XML 문서를 활용하여 HTML 문서를 작성했다.

큰 틀에서는 HTML 문법을 활용하면 되나, 세부적으로 다소 다른 점이 있다.

이건 아래 문서를 참고하면 해결될 것이다.

 

w3schools XSLT Reference