บทที่ 4 ไวยากรณ์ XML
โครงร่าง:
1. กฎไวยากรณ์ XML 2. ไวยากรณ์องค์ประกอบ 3. ไวยากรณ์ความคิดเห็น 4. ไวยากรณ์ CDATA 5. ไวยากรณ์เนมสเปซ 6. ไวยากรณ์เอนทิตี 7. ไวยากรณ์ DTD
จากการศึกษาสามบทก่อนหน้านี้ เราได้เข้าใจแล้วว่า XML คืออะไร หลักการใช้งาน และคำศัพท์ที่เกี่ยวข้อง ต่อไป เราจะเริ่มเรียนรู้ข้อกำหนดทางไวยากรณ์ของ XML และเขียนเอกสาร XML ของเราเอง
1.กฎไวยากรณ์ XML
เอกสาร XML คล้ายกับโค้ดต้นฉบับ HTML และยังใช้แท็กเพื่อระบุเนื้อหาอีกด้วย ต้องปฏิบัติตามกฎสำคัญต่อไปนี้เมื่อสร้างเอกสาร XML:
กฎข้อที่ 1: จะต้องมีคำสั่งประกาศ XML เราได้กล่าวถึงสิ่งนี้แล้วในบทที่แล้ว การประกาศเป็นประโยคแรกของเอกสาร XML และมีรูปแบบดังนี้:
<?xml version="1.0" standalone="yes/no" encoding="UTF-8"?>
วัตถุประสงค์ของการประกาศคือเพื่อบอกเบราว์เซอร์หรือโปรแกรมประมวลผลอื่นว่าเอกสารนี้เป็นเอกสาร XML เวอร์ชันในคำสั่งประกาศระบุเวอร์ชันของข้อกำหนด XML ที่เอกสารสอดคล้อง สแตนด์อโลนระบุว่าเอกสารมาพร้อมกับไฟล์ DTD หรือไม่ หากเป็นเช่นนั้น พารามิเตอร์จะเป็นไม่ใช่; การเข้ารหัสบ่งชี้ถึงการเข้ารหัสภาษาที่ใช้ในเอกสาร และ ค่าเริ่มต้นคือ UTF-8
กฎข้อที่ 2: มีไฟล์ DTD หรือไม่ หากเอกสารนั้นเป็น "เอกสาร XML ที่ถูกต้อง" (ดูบทที่แล้ว) เอกสารจะต้องมีไฟล์ DTD ที่เกี่ยวข้องและปฏิบัติตามข้อกำหนดที่กำหนดโดยไฟล์ DTD อย่างเคร่งครัด คำสั่งประกาศของไฟล์ DTD เป็นไปตามคำสั่งประกาศ XML ในรูปแบบต่อไปนี้:
<!DOCTYPE ประเภท doc SYSTEM/PUBLIC "dtd-name">
ใน:
"!DOCTYPE" หมายความว่าคุณต้องการกำหนด DOCTYPE
"type-of-doc" คือชื่อของประเภทเอกสารที่คุณกำหนด ซึ่งมักจะเหมือนกับชื่อไฟล์ DTD
ใช้หนึ่งในสองพารามิเตอร์ "SYSTEM/PUBLIC" เท่านั้น SYSTEM อ้างถึง URL ของไฟล์ DTD ส่วนตัวที่ใช้โดยเอกสาร ในขณะที่ PUBLIC อ้างถึง URL ของไฟล์ DTD สาธารณะที่ใช้โดยเอกสาร
"dtd-name" คือ URL และชื่อของไฟล์ DTD ไฟล์ DTD ทั้งหมดมีส่วนต่อท้าย ".dtd"
เรายังคงใช้ตัวอย่างข้างต้น ควรเขียนดังนี้:
<?xml version="1.0" standalone="no" encode="UTF-8"?>
<!DOCTYPE ระบบรายการไฟล์ "filelist.dtd">
กฎข้อที่ 3: ใส่ใจกับการใช้อักษรตัวพิมพ์ใหญ่ของคุณในเอกสาร XML มีความแตกต่างระหว่างตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก <P> และ <p> เป็นตัวระบุที่แตกต่างกัน โปรดทราบว่าเมื่อเขียนองค์ประกอบ ตัวพิมพ์ของตัวระบุด้านหน้าและด้านหลังควรยังคงเหมือนเดิม ตัวอย่างเช่น: <ผู้แต่ง>ajie</Author> การเขียน <ผู้แต่ง>ajie</author> ไม่ถูกต้อง
คุณควรใช้ตัวพิมพ์ใหญ่ทั้งหมด ตัวพิมพ์เล็กทั้งหมด หรืออักษรตัวแรกให้เป็นตัวพิมพ์ใหญ่ให้เป็นนิสัย ซึ่งจะช่วยลดข้อผิดพลาดด้านเอกสารที่เกิดจากความไม่ตรงกันของตัวพิมพ์
กฎข้อที่ 4: เพิ่มเครื่องหมายคำพูดให้กับค่าแอตทริบิวต์ ในโค้ด HTML สามารถระบุค่าแอตทริบิวต์ได้หรือไม่ ตัวอย่างเช่น: เบราว์เซอร์สามารถตีความ <font color=red>word</font> และ <font color="red">word</font> ได้อย่างถูกต้อง
อย่างไรก็ตามใน XML กำหนดว่าค่าแอตทริบิวต์ทั้งหมดจะต้องมีเครื่องหมายคำพูด (อาจเป็นเครื่องหมายคำพูดเดี่ยวหรือเครื่องหมายคำพูดคู่) มิฉะนั้นจะถือเป็นข้อผิดพลาด
กฎข้อที่ 5: แท็กทั้งหมดต้องมีแท็กปิดที่สอดคล้องกัน ใน HTML แท็กต้องไม่ปรากฏเป็นคู่ เช่น?lt;br> ใน XML กำหนดว่าแท็กทั้งหมดจะต้องปรากฏเป็นคู่ หากมีแท็กเริ่มต้น จะต้องมีแท็กปิด มิฉะนั้นจะถือว่ามีข้อผิดพลาด
กฎข้อที่ 6: แท็กว่างทั้งหมดจะต้องปิดด้วย แท็กว่างคือแท็กที่ไม่มีเนื้อหาอยู่ระหว่างคู่แท็ก ตัวอย่างเช่น <br>, <img> และแท็กอื่นๆ ใน XML มีการกำหนดว่าแท็กทั้งหมดต้องมีแท็กปิดท้าย สำหรับแท็กว่างดังกล่าว วิธีการประมวลผลใน XML คือการเพิ่ม / ที่ส่วนท้ายของแท็กต้นฉบับ เท่านี้ก็เรียบร้อย ตัวอย่างเช่น:
<br> ควรเขียนเป็น <br />;
<META name="keywords" content="XML, SGML, HTML"> ควรเขียนเป็น <META name="keywords" content="XML, SGML, HTML" />;
<IMG src= "cool.gif"> ควรเขียนเป็น <IMG src= "cool.gif" />
บทที่ 4 ไวยากรณ์ XML
2. ไวยากรณ์ขององค์ประกอบ
องค์ประกอบประกอบด้วยคู่ของตัวระบุและเนื้อหา แบบนี้: อาจี. ชื่อขององค์ประกอบและชื่อของตัวระบุเหมือนกัน ข้อมูลประจำตัวสามารถอธิบายเพิ่มเติมได้โดยใช้คุณลักษณะ
ใน XML ไม่มีคำสงวน ดังนั้นคุณสามารถใช้คำใดก็ได้เป็นชื่อองค์ประกอบ อย่างไรก็ตาม จะต้องปฏิบัติตามกฎระเบียบต่อไปนี้ด้วย:
1. ชื่อสามารถประกอบด้วยตัวอักษร ตัวเลข และตัวอักษรอื่นๆ
2. ชื่อต้องไม่ขึ้นต้นด้วยตัวเลขหรือ "_" (ขีดล่าง)
3. ชื่อต้องไม่ขึ้นต้นด้วยตัวอักษร xml (หรือ XML หรือ Xml ..)
4. ชื่อต้องไม่มีช่องว่าง
5. ชื่อต้องไม่มี /// (โคลอน)
เพื่อให้องค์ประกอบต่างๆ อ่าน ทำความเข้าใจ และจัดการได้ง่ายขึ้น เรามีคำแนะนำเพิ่มเติมดังนี้
1. ห้ามใช้ "." ในชื่อ เนื่องจากในภาษาการเขียนโปรแกรมหลายภาษา "." ถูกใช้เป็นแอตทริบิวต์ของอ็อบเจ็กต์ เช่น: font.color ด้วยเหตุผลเดียวกัน จะดีที่สุดที่จะไม่ใช้ "-" หากจำเป็นต้องใช้ ให้แทนที่ด้วย "_"
2. ใช้ชื่อให้สั้นที่สุด
3. พยายามใช้มาตรฐานเดียวกันสำหรับการใช้อักษรตัวพิมพ์ใหญ่และตัวพิมพ์ใหญ่ของชื่อ
4. ชื่อสามารถใช้อักขระที่ไม่ใช่ภาษาอังกฤษ เช่น จีน แต่ซอฟต์แวร์บางตัวอาจไม่รองรับ (ปัจจุบัน IE5 รองรับองค์ประกอบภาษาจีน)
พร้อมทั้งเพิ่มคำอธิบายคุณสมบัติเล็กน้อย ใน HTML สามารถใช้แอตทริบิวต์เพื่อกำหนดรูปแบบการแสดงขององค์ประกอบได้ ตัวอย่างเช่น <font color="red">word</font> จะแสดงคำเป็นสีแดง ใน XML คุณลักษณะเป็นเพียงคำอธิบายของตัวระบุและไม่มีส่วนเกี่ยวข้องกับการแสดงเนื้อหาองค์ประกอบ ตัวอย่างเช่น ประโยคเดียวกัน: <font color="red">word</font> จะไม่แสดงคำนั้นเป็นสีแดง (ชาวเน็ตบางคนอาจถามว่า: จะแสดงข้อความเป็นสีแดงใน XML ได้อย่างไร ซึ่งต้องใช้ CSS หรือ XSL ซึ่งเราจะอธิบายรายละเอียดด้านล่าง)
3. ไวยากรณ์ของความคิดเห็น
ความคิดเห็นจะถูกเพิ่มลงในเอกสาร XML เพื่อความสะดวกในการอ่านและทำความเข้าใจ และจะไม่ถูกตีความโดยโปรแกรมหรือแสดงโดยเบราว์เซอร์
ไวยากรณ์สำหรับความคิดเห็นมีดังนี้:
<!-- นี่คือข้อมูลความคิดเห็น-->
อย่างที่คุณเห็น มันเหมือนกับไวยากรณ์ความคิดเห็นใน HTML ซึ่งง่ายมาก การพัฒนานิสัยการแสดงความคิดเห็นที่ดีจะทำให้เอกสารของคุณดูแลรักษา แบ่งปัน และดูเป็นมืออาชีพได้ง่ายขึ้น
4. ไวยากรณ์ของ CDATA
ชื่อเต็มของ CDATA คือข้อมูลอักขระ ซึ่งแปลเป็นข้อมูลอักขระ เมื่อเราเขียนเอกสาร XML บางครั้งเราจำเป็นต้องแสดงตัวอักษร ตัวเลข และสัญลักษณ์อื่นๆ เช่น "<" อักขระเหล่านี้มีความหมายพิเศษอยู่แล้ว เราควรทำอย่างไร สิ่งนี้จำเป็นต้องใช้ไวยากรณ์ CDATA รูปแบบไวยากรณ์เป็นดังนี้:
<![CDATA[วางอักขระที่จะแสดงที่นี่]]>
ตัวอย่างเช่น:
<![CDATA[<AUTHOR sex="Female">อาจี้</AUTHOR>]]>
เนื้อหาที่แสดงบนหน้าจะเป็น "<AUTHOR sex="Female">ajie</AUTHOR>"
บทที่ 4 ไวยากรณ์ XML
5. ไวยากรณ์ของเนมสเปซ
เนมสเปซแปลเป็นเนมสเปซ เนมสเปซทำอะไร? เมื่อเราใช้ไฟล์ DTD ของผู้อื่นหรือหลายไฟล์ในเอกสาร XML จะเกิดข้อขัดแย้งดังกล่าว เนื่องจากตัวระบุใน XML ถูกสร้างขึ้นด้วยตัวเอง ในไฟล์ DTD ที่แตกต่างกัน ชื่อตัวระบุจึงอาจเหมือนกันแต่มีความหมายต่างกัน ทำให้เกิดความสับสนของข้อมูล
ตัวอย่างเช่น ในเอกสาร <table>โต๊ะไม้</table> <table> แสดงถึงตาราง
ในเอกสารอื่น <table>namelist</table> <table> แสดงถึงตาราง หากฉันต้องการทำงานในเอกสารทั้งสองฉบับพร้อมกัน อาจเกิดความขัดแย้งเรื่องชื่อขึ้นได้
เพื่อแก้ไขปัญหานี้ เราได้แนะนำแนวคิดของเนมสเปซ เนมสเปซแยกแยะความแตกต่างระหว่างตัวระบุเหล่านี้ด้วยชื่อเดียวกันโดยการเพิ่ม URL ให้กับชื่อตัวระบุ
เนมสเปซยังต้องมีการประกาศที่จุดเริ่มต้นของเอกสาร XML ไวยากรณ์ของการประกาศมีดังนี้:
<document xmlns:yourname='URL'>
โดยที่ yourname คือชื่อของเนมสเปซที่คุณกำหนด และ URL คือ URL ของเนมสเปซ
สมมติว่าเอกสาร "table <table>" ด้านบนมาจาก http://www.zhuozi.com เราสามารถประกาศเป็น
<document xmlns:zhuozi='http://www.zhuozi.com'>
จากนั้นใช้เนมสเปซที่กำหนดในแท็กถัดไป:
<zhuozi:table>โต๊ะไม้</table>
สิ่งนี้ทำให้ทั้งสอง <table> แตกต่าง หมายเหตุ: การตั้งค่า URL ไม่ได้หมายความว่าจำเป็นต้องอ่านโลโก้นี้จาก URL นั้นจริงๆ แต่เป็นเพียงสัญลักษณ์ของความแตกต่าง
6. ไวยากรณ์เอนทิตี
เอนทิตีแปลว่า "เอนทิตี" ฟังก์ชั่นของมันคล้ายกับคำว่า "มาโคร" และสามารถเข้าใจได้ว่าเป็นเทมเพลตใน DW คุณสามารถกำหนดเอนทิตีล่วงหน้าแล้วเรียกมันได้หลายครั้งในเอกสารเดียว หรือเรียกเอนทิตีเดียวกันในเอกสารหลายชุด
เอนทิตีสามารถประกอบด้วยอักขระ ข้อความ ฯลฯ ประโยชน์ของการใช้เอนทิตีคือ: 1. สามารถลดข้อผิดพลาดหลายส่วนที่เหมือนกันในเอกสารได้เพียงครั้งเดียว 2. ช่วยเพิ่มประสิทธิภาพในการบำรุงรักษา ตัวอย่างเช่น หากคุณมีเอกสาร 40 ฉบับที่มีนิติบุคคลลิขสิทธิ์ทั้งหมด หากคุณต้องการแก้ไขลิขสิทธิ์นี้ คุณไม่จำเป็นต้องแก้ไขไฟล์ทั้งหมด คุณเพียงแต่ต้องเปลี่ยนคำชี้แจงสิทธิ์เอนทิตีที่กำหนดไว้แต่แรกเท่านั้น
XML กำหนดเอนทิตีสองประเภท อันหนึ่งคือเอนทิตีธรรมดาที่เรากำลังพูดถึงในที่นี้ ซึ่งใช้ในเอกสาร XML อีกอันคือเอนทิตีพารามิเตอร์ ที่ใช้ในไฟล์ DTD
ไวยากรณ์คำจำกัดความของเอนทิตีคือ:
<!DOCTYPE ชื่อไฟล์ [
<!ENTITY ชื่อเอนทิตี "เนื้อหาเอนทิตี"
-
-
ตัวอย่างเช่น ฉันต้องการให้คำจำกัดความของข้อมูลลิขสิทธิ์:
<!DOCTYPE ลิขสิทธิ์ [
<!ENTITY ลิขสิทธิ์ "ลิขสิทธิ์ 2001 อาจิเอะ สงวนลิขสิทธิ์"
-
-
หากเนื้อหาข้อมูลลิขสิทธิ์ของฉันถูกแชร์กับผู้อื่นในไฟล์ XML ฉันยังสามารถใช้วิธีการโทรภายนอกได้ ไวยากรณ์จะเป็นดังนี้:
<!DOCTYPE ลิขสิทธิ์ [
<!ENTITY ระบบลิขสิทธิ์ "http://www.sample.com/copyright.xml">
-
-
ไวยากรณ์อ้างอิงของเอนทิตีที่กำหนดในเอกสารคือ: &entity-name;
ตัวอย่างเช่น ข้อมูลลิขสิทธิ์ที่กำหนดไว้ข้างต้นจะถูกเขียนเป็น ?ลิขสิทธิ์;
ตัวอย่างที่สมบูรณ์มีดังนี้ คุณสามารถคัดลอกและบันทึกเป็น copyright.xml เพื่อดูตัวอย่าง:
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE ลิขสิทธิ์ [
<!ENTITY ลิขสิทธิ์ "ลิขสิทธิ์ 2001, อาจิเอะ สงวนลิขสิทธิ์">
-
<ไฟล์ของฉัน>
<title>XML</title>
<author>อาจี้</author>
<email>[email protected]</email>
<วันที่>20010115</วันที่>
©ขวา;
</ไฟล์ของฉัน>
บทที่ 4 ไวยากรณ์ XML
7. ไวยากรณ์ DTD
DTD เป็นไฟล์ที่จำเป็นสำหรับ "เอกสาร XML ที่ถูกต้อง" เราใช้ไฟล์ DTD เพื่อกำหนดกฎและความสัมพันธ์ร่วมกันขององค์ประกอบและตัวระบุในเอกสาร จะสร้างไฟล์ DTD ได้อย่างไร? มาเรียนรู้ด้วยกัน:
1. ตั้งค่าองค์ประกอบ
องค์ประกอบคือองค์ประกอบพื้นฐานของเอกสาร XML คุณต้องกำหนดองค์ประกอบใน DTD จากนั้นใช้ในเอกสาร XML ไวยากรณ์คำจำกัดความขององค์ประกอบคือ: <!ELEMENT DESCRIPTION (#PCDATA, DEFINITION)*>
แสดงให้เห็น:
"<!ELEMENT" คือการประกาศองค์ประกอบ โดยระบุว่าสิ่งที่คุณต้องการกำหนดคือองค์ประกอบ
"DESCRIPTION" หลังคำสั่งคือชื่อขององค์ประกอบ
"(#PCDATA, DEFINITION)*>" คือกฎการใช้งานขององค์ประกอบนี้ กฎกำหนดว่าองค์ประกอบใดบ้างที่สามารถมีได้และเกี่ยวข้องกันอย่างไร ตารางต่อไปนี้สรุปกฎสำหรับองค์ประกอบ:
2. ตารางกฎองค์ประกอบ: