XML 네임스페이스
XML 네임스페이스는 요소 이름 충돌을 방지하는 방법을 제공합니다.
이름 충돌
XML에서 요소 이름은 개발자가 정의합니다. 다른 XML 응용 프로그램의 XML 문서를 혼합하려고 할 때 종종 충돌이 발생합니다.
이 XML은 HTML 테이블 정보를 전달합니다.
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
이 XML은 테이블(가구)에 대한 정보를 전달합니다.
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
이러한 XML 조각이 함께 추가되면 이름 충돌이 발생합니다. 둘 다 <table> 요소를 포함하지만 요소의 내용과 의미가 다릅니다.
사용자나 XML 응용 프로그램은 이러한 차이점을 처리하는 방법을 모릅니다.
접두사를 사용하여 이름 충돌 해결
XML의 이름 충돌은 이름 접두사를 사용하여 쉽게 피할 수 있습니다.
이 XML은 HTML 테이블과 가구에 대한 정보를 전달합니다.
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
위의 예에서는 두 개의 <table> 요소의 이름이 다르기 때문에 충돌이 없습니다.
XML 네임스페이스 - xmlns 속성
XML에서 접두사를 사용할 때 접두사에 대한 네임스페이스 를 정의해야 합니다.
네임스페이스는 요소의 시작 태그에 있는 xmlns 속성 으로 정의할 수 있습니다 .
네임스페이스 선언의 구문은 다음과 같습니다. xmlns: 접두사 =" URI ".
<root>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table xmlns:f="https://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
위의 예에서:
첫 번째 <table> 요소의 xmlns 속성은 h: 접두사에 한정된 네임스페이스를 제공합니다.
두 번째 <table> 요소의 xmlns 속성은 f: 접두사에 한정된 네임스페이스를 제공합니다.
요소에 대해 네임스페이스가 정의되면 동일한 접두사를 가진 모든 자식 요소가 동일한 네임스페이스와 연결됩니다.
네임스페이스는 XML 루트 요소에서도 선언할 수 있습니다.
<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="https://www.w3schools.com/furniture">
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
참고: 네임스페이스 URI는 구문 분석기가 정보를 조회하는 데 사용하지 않습니다.
URI를 사용하는 목적은 네임스페이스에 고유한 이름을 부여하는 것입니다.
그러나 회사에서는 종종 네임스페이스를 네임스페이스 정보가 포함된 웹 페이지에 대한 포인터로 사용합니다.
URI(Uniform Resource Identifier)
URI ( Uniform Resource Identifier )는 인터넷 리소스를 식별하는 문자열입니다.
가장 일반적인 URI는 인터넷 도메인 주소를 식별하는 URL( Uniform Resource Locator )입니다. 흔하지 않은 또 다른 유형의 URI는 URN( Uniform Resource Name )입니다.
기본 네임스페이스
요소에 대한 기본 네임스페이스를 정의하면 모든 자식 요소에서 접두사를 사용하지 않아도 됩니다. 다음 구문이 있습니다.
xmlns="namespaceURI"
이 XML은 HTML 테이블 정보를 전달합니다.
<table xmlns="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
이 XML은 가구에 대한 정보를 전달합니다.
<table xmlns="https://www.w3schools.com/furniture">
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
실제 사용되는 네임스페이스
XSLT는 XML 문서를 다른 형식으로 변환하는 데 사용할 수 있는 언어입니다.
아래의 XML 문서는 XML을 HTML로 변환하는 데 사용되는 문서입니다.
네임스페이스 "http://www.w3.org/1999/XSL/Transform"은 HTML 문서 내의 XSLT 요소를 식별합니다.
<?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>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr>
<th style="text-align:left">Title</th>
<th style="text-align:left">Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
XSLT에 대해 더 알고 싶다면 XSLT 튜토리얼 을 읽어보세요 .