Nasib Nama XML

XML 命名空间提供了一种避免元素命名冲突的方法。

命名冲突

在 XML 中,元素名称由开发者定义。当两个不同的文档使用相同的元素名时,就会发生命名冲突。

这个 XML 文档携带着某个表格中的信息:

<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> 元素 (<h:table><f:table>)。

通过使用前缀,我们创建了两种不同类型的 <table> 元素。

XML 命名空间 - xmlns 属性

Ketika menggunakan prefiks di XML, harus didefinikan prefiks.Nasab(Nasab)。

dalam tanda buka elemen awal xmlns aturan untuk

Pengumuman nasab menggunakan sintaks ini: 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.codew3c.com/furniture">
  <f:name>African Coffee Table</f:name>
  <f:width>80</f:width>
  <f:length>120</f:length>
</f:table>
</root>

Dalam contoh di atas:

di dalam elemen <table> pertama xmlns aturan untuk h: Prefiks menyediakan nasab terbatas.

di dalam elemen <table> kedua xmlns aturan untuk f: Prefiks menyediakan nasab terbatas.

Jika elemen telah didefinisikan dengan nasab, semua elemen anak dengan prefiks yang sama berhubungan dengan nasab yang sama.

Nasab juga dapat diumumkan di elemen akar XML:

<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="https://www.codew3c.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>

Perhatian:Pengurai tidak akan menggunakan nasab URI untuk mencari informasi.

Tujuannya untuk memberikan nama unik bagi nasab.

Namun, banyak perusahaan sering kali akan menggunakan nasab URI sebagai alamat penunjuk ke halaman yang ada, halaman ini mengandung informasi tentang nasab.

Penanda Sumber Serupa (URI)

Penanda Sumber Serupa (Penanda Sumber Serupa,URI) adalah string yang mengidentifikasi sumber daya Internet.

Jenis URI yang paling sering digunakan adalahPenempatan Sumber Serupa (Penempatan Sumber Serupa,URL),iaitu alamat alamat domain Internet.

Jenis URI yang kurang umum adalahNama Sumber Serupa (Nama Sumber Serupa,URN)。

Nasab Latar Biasa (Default Namespaces)

Mendefinisikan nasibangsa baku bagi elemen dapat mengurangi kebutuhan menggunakan prefix di semua elemen anak.

Silakan gunakan sintaks berikut:

xmlns="namespaceURI"

Dokumen XML ini membawa informasi tentang tabel HTML:

<table xmlns="http://www.w3.org/TR/html4/">
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>

XML ini membawa informasi tentang satu benda furniture:

<table xmlns="https://www.codew3c.com/furniture">
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

Penerapan nasibangsa

XSLT adalah bahasa yang dapat digunakan untuk mengkonversi dokumen XML ke format lain.

Dokumen XML di bawah ini digunakan untuk mengkonversi XML ke HTML.

Jika Anda memeriksa dengan seksama, Anda akan melihat sebagian besar tag adalah tag HTML.

Tanda tag bukan HTML ada prefix xsl, dan ditandai oleh nasibangsa: "http://www.w3.org/1999/XSL/Transform":

Nasibangsa "http://www.w3.org/1999/XSL/Transform" menandai elemen XSLT dalam dokumen 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>

如果您想深入学习有关 XSLT 的更多内容,请阅读我们的 XSLT 教程