XML เนมสเปซ
XML Namespaces มีวิธีการหลีกเลี่ยงความขัดแย้งของชื่อองค์ประกอบ
ความขัดแย้งของชื่อ
ใน 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>
ในตัวอย่างด้านบน:
แอตทริบิวต์ xmlns ในองค์ประกอบ <table> แรกให้คำนำหน้า h: เป็นเนมสเปซที่ผ่านการรับรอง
แอตทริบิวต์ xmlns ในองค์ประกอบ <table> ที่สองให้คำนำหน้า 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>
หมายเหตุ: parser ไม่ได้ใช้เนมสเปซ URI เพื่อค้นหาข้อมูล
จุดประสงค์ของการใช้ URI คือการตั้งชื่อเฉพาะให้กับเนมสเปซ
อย่างไรก็ตาม บริษัทมักใช้เนมสเปซเป็นตัวชี้ไปยังหน้าเว็บที่มีข้อมูลเนมสเปซ
ตัวระบุทรัพยากรแบบสม่ำเสมอ (URI)
Uniform Resource Identifier (URI) คือสตริงของอักขระ ที่ระบุทรัพยากรอินเทอร์เน็ต
URI ที่พบบ่อยที่สุดคือUniform Resource Locator (URL) ซึ่งระบุที่อยู่โดเมนอินเทอร์เน็ต 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" ระบุองค์ประกอบ XSLT ภายในเอกสาร 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ของ เรา