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>
上記の例では、2つの<table>要素の名前が異なるため、競合は発生しません。
XML名前空間-xmlns属性
XMLでプレフィックスを使用する場合は、プレフィックスの名前空間を定義する必要があります。
名前空間は、要素の開始タグのxmlns属性で定義できます。
名前空間宣言の構文は次のとおりです。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>
上記の例では:
最初の<table>要素のxmlns属性は、h:プレフィックスに修飾された名前空間を与えます。
2番目の<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を使用する目的は、名前空間に一意の名前を付けることです。
ただし、企業は多くの場合、名前空間情報を含むWebページへのポインタとして名前空間を使用します。
ユニフォームリソース識別子(URI)
URI (Uniform Resource Identifier)は、インターネットリソースを識別する文字列です。
最も一般的なURIは、インターネットドメインアドレスを識別するUniform Resource Locator(URL)です。もう1つの、それほど一般的ではないタイプのURIは、Uniform Resource Name(URN)です。
デフォルトの名前空間
要素のデフォルトの名前空間を定義すると、すべての子要素でプレフィックスを使用する手間が省けます。構文は次のとおりです。
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チュートリアルをお読みください。