ทำไมเราต้องมี URIs สำหรับเนมสเปซ XML


23

ฉันกำลังพยายามหาสาเหตุที่เราต้องการ URIs สำหรับเนมสเปซ XML และฉันไม่สามารถหาจุดประสงค์ได้ ทุกคนสามารถเพิ่มสีสันให้ฉันเล็กน้อยแสดงการใช้ของพวกเขาในตัวอย่างที่เป็นรูปธรรม?

แก้ไข:

ตกลงเช่น: ฉันมีสิ่งนี้จาก w3schools

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

ดังนั้นสิ่งที่ควรhttp://www.w3schools.com/furnitureถือ



7
บังคับw3foolsความคิดเห็น
yannis

ดังนั้นเนมสเปซ XML จะต้องอยู่ในรูปแบบ URI หรือไม่? หรือฉันสามารถใช้สตริงใด ๆ เช่น 'My.Namespace.Foo' ได้หรือไม่
Mas

คำตอบ:


20

namespaceเป็นวิธีการพูดว่า "ชนิดของ Foo นี้" จะแตกต่างจาก "ชนิดของ Foo ว่า" ถึงแม้ว่าพวกเขาจะสะกดเดียวกัน หรือถ้าคุณชอบ " ประเภทของฉัน Foo" จะแตกต่างจาก " ทุกคนชนิดของ Foo"

วิธีการพูดแบบนี้คือ "URI ของเนมสเปซของฉันสำหรับ Foo" แตกต่างจากทุกคนในขณะนี้คือ URI สำหรับเนมสเปซสำหรับ Foo กล่าวอีกนัยหนึ่ง URI เป็นเพียงสตริงที่อนุญาตให้คุณพูดได้

เคล็ดลับคือการพูดว่า "เฮ้ URL นั้นเป็น URI ที่ถูกต้อง" จากนั้นใช้ URI ที่สอดคล้องกับ URL ภายใต้การควบคุมของคุณ หากทุกคนทำเช่นนั้นคุณหลีกเลี่ยงการชน namespace โดยไม่ตั้งใจ คุณอาจบอกว่า namespace "A" และ namespace "B" แต่คุณมีความเสี่ยงที่คนอื่นจะใช้ namespace เดียวกันด้วยและจากนั้น Foo ประเภทของคุณก็ไม่ต่างจาก Foo ของพวกเขาอีกต่อไปซึ่งเป็นสิ่งที่คุณต้องการหลีกเลี่ยง .

จากนั้นคุณสามารถเพิ่มการประชุมเพิ่มเติมให้กับ URL ที่ใช้เป็นของ URI ตัวอย่างเช่น URL นั้นจะต้องสอดคล้องกับหน้าที่มีเอกสารประกอบหรือ XSD หรือคล้ายกัน แต่ไม่จำเป็น มันสะดวกสบาย


ตกลง แต่เนมสเปซ A และเนมสเปซw3.org/1999/xhtmlแตกต่างกันอย่างไร ผู้ใช้ทั้งคู่สามารถใช้งานได้โดยที่ไม่ทราบว่าใช้เนมสเปซเดียวกัน
Patryk

1
@ Patryk นั่นคือเหตุผลที่คุณใช้ URL ที่คุณสามารถควบคุมได้ URL เนมสเปซ xhtml อยู่ภายใต้การควบคุมของ W3C ซึ่งกำหนดสเปค XHTML

2
@ Patryk ยังทราบว่ามันเป็นคนที่กำหนด namespace ที่ได้รับเลือก URL จากนั้นทุกคนสามารถใช้พวกเขาได้

1
ดังนั้นเนมสเปซaทั้งหมดจะถูกต้อง? โง่ แต่ถูกต้อง? หรือมันจะต้องเป็น URI?
Rudie

5
จะดีหรือไม่ถ้าบุคคลสองสามคนแรกที่ใช้การประชุมนั้นเมื่อหลายปีก่อนได้จัดทำเอกสารที่รัดกุมเกี่ยวกับสกีมาของพวกเขาไว้ที่ URL เหล่านั้นเพื่อให้เป็นสิ่งนั้น OpenXML namespaces ของ Microsoft schemas.openxmlformats.org/drawingml/2006/chartชี้ให้เห็นว่าไม่มีอะไร
ต้นแบบ

16

โดยทั่วไปแล้วตัวระบุเฉพาะใด ๆ จะให้บริการสำหรับเนมสเปซ แต่เนื่องจากมันควรจะไม่ซ้ำกันทั่วโลกมาตรฐานจะต้องมีอำนาจอำนาจอนุญาโตตุลาการบางส่วนหรือใช้ทรัพยากรอื่นที่ในเวลาเดียวกันทั่วโลกที่ไม่ซ้ำกัน แต่ง่ายต่อการได้รับและพิสูจน์ให้เป็นของคุณ

โอ้ดูสิ! หากคุณมีโดเมนก็เป็นของคุณเท่านั้นและเป็นเรื่องง่ายที่จะพิสูจน์ว่าเป็นของคุณ!

ตัวอย่างเช่นพวกเขาต้องการหลีกเลี่ยงสถานการณ์ที่ร้านหนังสือสองแห่งเริ่มใช้ "หนังสือ" เป็นเนมสเปซพร้อมคำจำกัดความภายในที่แตกต่างกันโดยสิ้นเชิง ในขณะที่ใช้ภายในไม่มีปัญหา แต่ทันทีที่หนึ่งในนั้นต้องการเผยแพร่สเปคของพวกเขานรกก็แตกสลายหมด

หากคุณได้รับการสนับสนุนให้ใช้โดเมนของคุณทุกคน (ดีใครก็ได้ที่เป็นเจ้าของโดเมน) สามารถกำหนดเนมสเปซส่วนตัวของตัวเองได้ด้วยความมั่นใจว่าจะไม่มีใครใช้ตัวระบุเดียวกันนี้แทน

เป็นโบนัสคุณสามารถเลือกที่จะเก็บคำจำกัดความของเนมสเปซของคุณได้ที่ URI ทำให้เป็นเอกสารด้วยตนเอง

ดูเหมือนจะเป็นความคิดที่ดีสำหรับฉัน


ขอบคุณสำหรับคำตอบ แต่ฉันต้องการอะไรที่เป็นรูปธรรมมากกว่านี้เพื่อทำความเข้าใจ ฉันเพิ่มรหัสแบบอย่างที่คุณสามารถยึดได้โปรดดู
Patryk

1
@patryk - ไม่มีอะไรมันไม่ใช่ที่อยู่ - มันเป็นเพียงโทเค็นที่ไม่ซ้ำใครที่คุณแน่ใจว่าไม่มีใครที่คุณสามารถผสมไฟล์ xml ด้วยได้ ทั้งหมดที่กล่าวมาก็คือจะไม่ใช้ชื่อ <table> ฯลฯ กับความหมายที่แตกต่างกันในไฟล์ xml ใด ๆ ที่มีชื่อ www.w3.org อยู่ด้านบน
Martin Beckett

ตกลง แต่เมื่อวิกิพีเดียพูดถึงสิ่งที่ผู้ใช้สามารถใช้เช่นw3.org/1999/xhtmlเป็นเนมสเปซผู้คนจำนวนมากจะมีเนมสเปซเดียวกัน ฉันถูกไหม ?
Patryk

@ Patryk เฉพาะในกรณีที่คุณต้องการใช้เพื่อการใช้งานเดียวกัน หากคุณต้องการกำหนดเนมสเปซใหม่คุณควรใช้โดเมนของคุณเอง
Javier

@Javier คุณหมายถึงอะไรโดย 'ใช้งานเหมือนกัน'?
Patryk

1

DOM ระดับ 2 ถูกเผยแพร่ในปลายปี 2000 มันแนะนำฟังก์ชั่น "getElementById" เช่นเดียวกับรูปแบบของเหตุการณ์และการสนับสนุนสำหรับ XML namespaces และ CSS

xmlIns ระบุอะไร
ในฐานะที่เป็นโหนดแอตทริบิวต์ชื่อ "xmlns" หรือ "xmlns: xxx" ตรงตามที่ namespaces จะถูกเขียนในเอกสาร XML แหล่งที่มา นี่คือรุ่นที่นำเสนอโดย DOM

URI ประกอบด้วยอะไร?
XML namespace ถูกประกาศโดยใช้ XML pseudo-attribute xmlns หรือ xmlns: คำนำหน้าที่สงวนไว้ค่าที่จะต้องเป็นชื่อเนมสเปซที่ถูกต้อง

ตัวอย่างเช่นการประกาศต่อไปนี้แมปคำนำหน้า "xhtml:" กับเนมสเปซ XHTML:

xmlns: XHTML = "http://www.w3.org/1999/xhtml"

อย่างที่ฉันได้ค้นพบหลังจากอ่านบทความใน Wikipedia แล้ว URI มีข้อกำหนดคุณสมบัติที่จัดรูปแบบ XML ของเนมสเปซเป็นวิธีการหลีกเลี่ยงความขัดแย้งของชื่อองค์ประกอบ

คุณอาจทราบว่าเอกสาร xml ใช้XML Schemaสำหรับองค์ประกอบ / ตาราง / โครงสร้างคลาสขององค์ประกอบของเอกสาร XML

สิ่งที่ควรhttp://www.w3schools.com/furnitureถือ?

คำตอบอยู่บนหน้าของคุณซึ่งคุณได้เรียนรู้เกี่ยวกับ XML Namespace ตรวจสอบNamespaces in Real Useส่วนที่เกี่ยวกับ W3Schools นี้บทความ

ตรวจสอบลิงค์ของ stackoverflow ต่อไปนี้ซึ่งบางอันแสดงให้เห็นว่า URI นี้ดำเนินการอย่างไร:

วิธีสร้างและใช้ XML เนมสเปซ


-1

URI = ชื่อหรือตัวระบุที่ไม่ซ้ำกันทั่วโลกของ namespace

พิจารณาสร้างฐานข้อมูลหรือเอกสารเกี่ยวกับการจัดการทางการเงินของการขนส่งของอุตสาหกรรมน้ำมัน จำเป็นต้องใช้คำศัพท์เฉพาะ (เช่นศัพท์ควบคุม) สำหรับแต่ละวิชา: ฐานข้อมูลเอกสารการจัดการการเงินโลจิสติกส์น้ำมันและอุตสาหกรรม

หากไม่มีคำใดทับซ้อนกันในคำศัพท์ทั้งเจ็ดเหล่านี้จำเป็นต้องใช้ URI เพียงหนึ่งรายการ แต่สำหรับแต่ละคำที่ทับซ้อนกับคำศัพท์อื่น ๆ ในคำศัพท์เหล่านี้คุณต้องมีคำศัพท์เฉพาะเรื่องเพิ่มเติมที่ระบุไว้ใน URI หรือ IRI วิธีหนึ่งในการทำเช่นนี้คือการสร้างอนุกรมวิธานแบบผสานโดยมีคำศัพท์ทั่วไปที่กว้างขึ้นและคำศัพท์เฉพาะเรื่องที่แคบกว่า

สิ่งนี้สามารถขยายเข้าไปในอรรถาภิธานที่แสดงคำศัพท์เฉพาะคำศัพท์เฉพาะและเปิดใช้งานข้อกำหนดของคำศัพท์ที่ต้องการในบรรดาศัพท์แสง - คำพ้องเหล่านั้น


2
โพสต์นี้ค่อนข้างอ่านยาก (ผนังข้อความ) คุณจะช่วยแก้ไขมันให้เป็นรูปร่างที่ดีขึ้นได้ไหม
ริ้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.