Jmenné prostory XML
Jmenné prostory XML poskytují metodu, jak se vyhnout konfliktům názvů prvků.
Konflikty jmen
V XML jsou názvy prvků definovány vývojářem. To často vede ke konfliktu při pokusu o smíchání dokumentů XML z různých aplikací XML.
Tento XML nese informace o tabulce HTML:
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
Tento XML nese informace o stole (kusu nábytku):
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
Pokud by byly tyto fragmenty XML sečteny, došlo by ke konfliktu názvů. Oba obsahují prvek <table>, ale prvky mají odlišný obsah a význam.
Uživatel nebo aplikace XML nebude vědět, jak se s těmito rozdíly vypořádat.
Řešení konfliktu jmen pomocí předpony
Konfliktům názvů v XML lze snadno předejít použitím předpony názvu.
Tento XML nese informace o HTML tabulce a kusu nábytku:
<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>
Ve výše uvedeném příkladu nedojde ke konfliktu, protože dva prvky <table> mají různé názvy.
Jmenné prostory XML – Atribut xmlns
Při použití předpon v XML musí být definován jmenný prostor pro předponu.
Jmenný prostor lze definovat atributem xmlns v počáteční značce prvku.
Deklarace jmenného prostoru má následující syntaxi. xmlns: prefix =" 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>
V příkladu výše:
Atribut xmlns v prvním prvku <table> dává předponě h: kvalifikovaný jmenný prostor.
Atribut xmlns ve druhém prvku <table> poskytuje předponě f: kvalifikovaný jmenný prostor.
Když je pro prvek definován jmenný prostor, všechny podřízené prvky se stejnou předponou jsou spojeny se stejným jmenným prostorem.
Jmenné prostory lze také deklarovat v kořenovém prvku 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>
Poznámka: URI jmenného prostoru analyzátor nepoužívá k vyhledání informací.
Účelem použití URI je dát jmennému prostoru jedinečný název.
Společnosti však často používají jmenný prostor jako ukazatel na webovou stránku obsahující informace o jmenném prostoru.
Uniform Resource Identifier (URI)
Uniform Resource Identifier ( URI) je řetězec znaků, který identifikuje internetový zdroj.
Nejběžnějším URI je Uniform Resource Locator (URL), který identifikuje adresu internetové domény. Dalším, ne tak běžným typem URI je Uniform Resource Name (URN).
Výchozí jmenné prostory
Definování výchozího jmenného prostoru pro prvek nás ušetří od používání předpon ve všech podřízených prvcích. Má následující syntaxi:
xmlns="namespaceURI"
Tento XML nese informace o tabulce HTML:
<table xmlns="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
Tento XML nese informace o kusu nábytku:
<table xmlns="https://www.w3schools.com/furniture">
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
Jmenné prostory v reálném použití
XSLT je jazyk, který lze použít k transformaci dokumentů XML do jiných formátů.
Níže uvedený dokument XML je dokument používaný k transformaci XML do HTML.
Jmenný prostor „http://www.w3.org/1999/XSL/Transform“ identifikuje prvky XSLT v dokumentu HTML:
<?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>
Chcete-li se o XSLT dozvědět více, přečtěte si prosím náš výukový program XSLT .