เรียนรู้ xml ตั้งแต่เริ่มต้น คลังเก็บหมวดหมู่: หนังสือเกี่ยวกับ XML และ XSLT การสร้างเอกสาร XML

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

เราจะเริ่มตามปกติด้วยทฤษฎีมาดูกันว่าเป็นภาษาประเภทไหนทำไมถึงดีใช้อย่างไรและใช้งานที่ไหน

คำจำกัดความภาษา XML

XML (ภาษามาร์กอัปแบบขยายได้) เป็นภาษามาร์กอัปข้อมูลสากลและขยายได้ซึ่งไม่ต้องพึ่งพา ระบบปฏิบัติการและสภาพแวดล้อมการประมวลผล Xml ใช้เพื่อนำเสนอข้อมูลบางอย่างในรูปแบบของโครงสร้าง และคุณสามารถพัฒนาโครงสร้างนี้ด้วยตนเองหรือปรับแต่งสำหรับโปรแกรมเฉพาะหรือบริการบางอย่างได้ นั่นเป็นเหตุผล ภาษาที่กำหนดพวกเขาเรียกมันว่าขยายได้และนี่คือข้อได้เปรียบหลักซึ่งมีคุณค่ามาก

ดังที่คุณทราบมีภาษามาร์กอัปค่อนข้างมากเช่นภาษา HTML แต่ทั้งหมดไม่ทางใดก็ทางหนึ่งขึ้นอยู่กับโปรเซสเซอร์เช่น html เดียวกันซึ่งเป็นรหัสที่เบราว์เซอร์แยกวิเคราะห์ เป็นมาตรฐานและไม่สามารถขยายได้ มีแท็กที่ชัดเจน มีไวยากรณ์ที่ไม่สามารถละเมิดได้ และใน xml คุณสามารถสร้างแท็กของคุณเองได้ เช่น มาร์กอัปของคุณ หลัก เกียรตินิยม HTMLและ XML คือ html ที่ใช้อธิบายมาร์กอัปสำหรับการแสดงข้อมูล ส่วน xml คือ โครงสร้างที่เป็นนามธรรมข้อมูลที่สามารถประมวลผลและแสดงได้ทุกที่ทุกเวลา ดังนั้นจึงไม่จำเป็นต้องเปรียบเทียบภาษาเหล่านี้ เนื่องจากมีวัตถุประสงค์ที่แตกต่างกันโดยสิ้นเชิง

ตามที่ระบุไว้ข้างต้น xml เป็นภาษาที่ใช้กันทั่วไปและเป็นสากล ซึ่งแอปพลิเคชันเกือบทั้งหมดทั้งเว็บและสำหรับคอมพิวเตอร์ใช้เป็นการแลกเปลี่ยนข้อมูล เนื่องจากด้วยความช่วยเหลือนี้ คุณสามารถแลกเปลี่ยนข้อมูลระหว่างแอปพลิเคชันหรือได้อย่างง่ายดายมาก บริการที่เขียนไว้ด้วยซ้ำ ภาษาที่แตกต่างกัน- ในประเด็นนี้ โปรแกรมเมอร์มือใหม่ทุกคนที่มีส่วนร่วมในการเขียนโปรแกรมใดๆ ก็ตามควรมีความเข้าใจเกี่ยวกับ XML หากคุณต้องการเป็นเว็บมาสเตอร์ คุณต้องรู้จัก XML และเราได้พูดคุยกันแล้วถึงวิธีการเป็นเว็บมาสเตอร์ และสิ่งที่คุณต้องรู้ในเรื่องนี้

ตัวอย่างเช่น ครั้งหนึ่งฉันเคยมีหน้าที่เขียนบริการบางอย่างที่ควรส่งคืนข้อมูลเมื่อมีการร้องขอ แบบฟอร์ม xml, เช่น. ชนิดของการพัฒนา ส่วนเซิร์ฟเวอร์และฉันไม่รู้ว่าไคลเอนต์ที่จะประมวลผลข้อมูลนี้เขียนด้วยอะไร และฉันก็เขียนบริการที่ส่งคืนข้อมูลในรูปแบบ xml เพียงเท่านี้ แอปพลิเคชันก็ทำงานได้อย่างสมบูรณ์ และนี่เป็นเพียงตัวอย่างที่ผมต้องรับมือ แต่ตอนนี้ ลองจินตนาการดูว่า มีองค์กรต่างๆ มากมายที่ร่วมมือ และพัฒนาอย่างมีสติ ซอฟต์แวร์และแลกเปลี่ยนข้อมูล และฉันไม่แปลกใจเลยที่ข้อมูลนี้จะอยู่ในรูปแบบ xml

ตัวอย่างเช่น ครั้งหนึ่งฉันเคยมีหน้าที่เขียนบริการบางอย่างที่ควรส่งคืนข้อมูลในรูปแบบ xml เมื่อมีการร้องขอ เช่น การพัฒนาส่วนเซิร์ฟเวอร์ของแอปพลิเคชันประเภทหนึ่ง และฉันไม่รู้ว่าไคลเอ็นต์ใดที่จะประมวลผลข้อมูลนี้เขียนไว้ และฉันเขียนบริการที่ส่งคืนข้อมูลในรูปแบบ xml เพียงเท่านี้แอปพลิเคชันก็ทำงานได้อย่างสมบูรณ์ . และนี่เป็นเพียงตัวอย่างที่ฉันต้องรับมือ แต่ตอนนี้ ลองจินตนาการดูว่ามีองค์กรต่างๆ กี่องค์กรที่ทำงานร่วมกันและพัฒนาซอฟต์แวร์และแลกเปลี่ยนข้อมูลอย่างมีสติ และฉันจะไม่แปลกใจเลยที่ข้อมูลนี้จะอยู่ในรูปแบบ xml

นอกจากนี้ ฉันเคยต้องจัดเก็บข้อมูล xml ในฐานข้อมูล MS SQL 2008 เพื่อให้สามารถแสดงข้อมูลเดียวกันนี้ได้ดีขึ้นและแลกเปลี่ยนระหว่างเซิร์ฟเวอร์และ ฝั่งไคลเอ็นต์แอปพลิเคชันที่เราดูในบทความ - Transact-sql - การทำงานกับ xml

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

วันนี้เรากำลังพูดถึงเฉพาะพื้นฐานของ XML และเราจะไม่มุ่งเน้นไปที่เทคโนโลยีสำหรับการประมวลผลและการโต้ตอบกับภาษานี้เนื่องจากนี่เป็นเนื้อหาที่แท้จริงและมีขนาดใหญ่มาก แต่ฉันคิดว่าในอนาคตเราจะทำความคุ้นเคยกับเทคโนโลยีที่เกี่ยวข้องต่อไป .

เรามาฝึกกันต่อ และฉันจะเขียนตัวอย่างทั้งหมดที่เราจะพิจารณาใน Notepad++ เท่านั้นเนื่องจากสะดวกมาก แต่ตอนนี้เราจะไม่พูดถึงเรื่องนี้เนื่องจากเราได้พูดคุยกันแล้วในบทความ - เหตุใด Notepad++ จึงดีสำหรับนักพัฒนามือใหม่

แท็ก XML

ภาษา XML ใช้แท็ก ( แท็กคำนึงถึงขนาดตัวพิมพ์) แต่ไม่ใช่แท็กเดียวกับใน html แต่เป็นแท็กที่คุณคิดขึ้นมาเอง แต่เอกสาร xml ก็มีโครงสร้างที่ชัดเจนเช่นกัน เช่น มีแท็กเปิดและแท็กปิด มีแท็กซ้อนกัน และแน่นอนว่ามีค่าอยู่ในแท็กเหล่านี้ กล่าวอีกนัยหนึ่งคือทุกสิ่งที่คุณต้องการ ความรู้พื้นฐาน xml เป็นเพียงการปฏิบัติตามกฎเหล่านี้ แท็กเปิด ปิด และค่ารวมกันเรียกว่าองค์ประกอบ และเอกสาร xml ทั้งหมดประกอบด้วยองค์ประกอบที่รวมกันเป็นโครงสร้างข้อมูล เอกสาร xml สามารถมีองค์ประกอบรูทได้เพียงองค์ประกอบเดียวเท่านั้น โปรดจำไว้ว่า เนื่องจากหากคุณเขียนองค์ประกอบรูทสององค์ประกอบ มันจะเป็นข้อผิดพลาด

และถึงเวลาที่จะยกตัวอย่างมาร์กอัป xml และตัวอย่างแรกในตอนนี้คือสำหรับไวยากรณ์:

<Начало элемента> <Начало вложенного элемента>ค่าองค์ประกอบที่ซ้อนกัน

อย่างที่คุณเห็นทุกอย่างค่อนข้างเรียบง่ายและอาจมีองค์ประกอบหลายอย่างซ้อนกันอยู่ภายใน

ตอนนี้ขอยกตัวอย่างเอกสาร xml จริง:

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

เล่ม 1 อีวาน แค่เล่ม1. เล่ม 2 เซอร์เกย์ แค่เล่ม 2 ครับ เล่ม 3 นิยาย เล่ม 3 เลย

โดยที่บรรทัดแรกเป็นการประกาศว่านี่คือเอกสาร XML และต้องอ่านในการเข้ารหัส UTF-8

ข้อมูลนี้ที่ไม่มีการประมวลผลจะมีลักษณะ เช่น ในเบราว์เซอร์ (Mozilla Firefox) ดังต่อไปนี้:

ฉันหวังว่าคุณจะเข้าใจว่าแค็ตตาล็อกที่นี่เป็นองค์ประกอบราก ซึ่งประกอบด้วยองค์ประกอบหนังสือ ซึ่งจะประกอบด้วยองค์ประกอบชื่อ ผู้แต่ง และความคิดเห็น และสำหรับตัวอย่างนี้ ฉันยังตั้งค่าคุณลักษณะหลายอย่างสำหรับองค์ประกอบแคตตาล็อกและองค์ประกอบหนังสือด้วย .

สำหรับพื้นฐาน ฉันคิดว่านั่นก็เพียงพอแล้ว เพราะหากเราเจาะลึกเข้าไปใน XML มากขึ้นเรื่อยๆ และเทคโนโลยีทั้งหมดที่เกี่ยวข้องกับภาษานี้ บทความนี้ก็จะไม่มีวันสิ้นสุด นั่นคือทั้งหมดสำหรับวันนี้ ลาก่อน!

ดังที่ฉันได้กล่าวไว้ในส่วนเกี่ยวกับเทคโนโลยีนี้เป็นความซับซ้อนที่ทุกคนไม่ต้องการ แต่เมื่อเชี่ยวชาญแล้ว คุณสามารถเรียกตัวเองว่าเป็นมืออาชีพได้อย่างปลอดภัยไม่เพียง แต่ในการสร้างเว็บไซต์เท่านั้น แต่ยังรวมถึง การเขียนโปรแกรมเว็บ, ก่อนอื่นเลย.

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

และเป็นหัวใจสำคัญของการสื่อสารด้วย เอกสารเอ็กซ์เอ็มแอลคำโกหก มาตรฐาน DOM (โมเดลออบเจ็กต์เอกสาร) ซึ่งเป็นพื้นฐานในการทำงานกับเอกสาร XML- มาตรฐานนี้ไม่ได้มีอยู่เฉพาะในเท่านั้น PHPแต่ยังรวมถึงทุกภาษาที่เข้าใจรูปแบบนี้ด้วย ( ชวา, ซี++, จาวาสคริปต์และอื่น ๆ)

และที่นี่มีมาตรฐาน ดอมเรากำลังจะมาพบกันในหมวดนี้ เราจะพิจารณามาตรฐานนี้ใน PHP- แม้ว่า มาตรฐาน DOMจึงเรียกว่า “มาตรฐาน” เพราะหลักการทำงานยังคงเดิมเมื่อย้ายไปภาษาอื่นจึงไม่มีปัญหากับ เอกสารเอ็กซ์เอ็มแอลมันจะไม่ทำงานในภาษาอื่น

ตอนนี้เรามาเริ่มศึกษาเทคโนโลยีที่ซับซ้อน แต่สำคัญอย่างไม่ต้องสงสัย

หลังจากอ่านบทความเกี่ยวกับพื้นฐาน XML คุณจะได้เรียนรู้:

1) ทำไมจึงจำเป็น? XML.

2) โครงสร้าง เอกสารเอ็กซ์เอ็มแอล.

3) ทำอย่างไร ฟีด RSSบนเว็บไซต์

4) ทำอย่างไร ร้านค้าพันธมิตรขึ้นอยู่กับ XML-ฟิดา.

5) ทำอย่างไร XMLตัวแยกวิเคราะห์สตริง

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

การแนะนำ

สวัสดีผู้อ่านบทความของฉัน ฉันอยากจะบอกทันทีว่านี่เป็นเพียงบทความแรกในสามบทความของฉันเท่านั้น เป้าหมายหลักของซีรีส์ทั้งหมดคือเพื่อเริ่มผู้อ่านแต่ละคนเข้าสู่ XML และให้คำอธิบายและความเข้าใจที่ไม่สมบูรณ์ อย่างน้อยก็ช่วยผลักดันให้ดี โดยอธิบายประเด็นหลักและสิ่งต่างๆ รอบทั้งหมดจะได้รับการเสนอชื่อเพียงครั้งเดียว – “ความใส่ใจในรายละเอียด”และได้แบ่งบทความออกเป็น 3 บทความเพื่อให้พอดีกับจำนวนอักขระสูงสุดในโพสต์ และแบ่งเนื้อหาจำนวนมากออกเป็นส่วนเล็กๆ เพื่อให้เข้าใจมากขึ้น บทความแรกจะกล่าวถึง XML เองว่าคืออะไรรวมถึงวิธีหนึ่งในการสร้างสคีมาสำหรับไฟล์ XML - DTD ขั้นแรก ฉันต้องการสร้างคำนำเล็กๆ น้อยๆ สำหรับผู้ที่ยังไม่คุ้นเคยกับ XML: ไม่จำเป็นต้องกลัว XML นั้นไม่ซับซ้อนมากนัก และโปรแกรมเมอร์ทุกคนควรเข้าใจ เนื่องจากเป็นรูปแบบไฟล์ที่มีความยืดหยุ่น มีประสิทธิภาพ และเป็นที่นิยมในปัจจุบันสำหรับการจัดเก็บข้อมูลที่หลากหลายที่คุณต้องการ XML ใช้ใน Ant, Maven, Spring โปรแกรมเมอร์ทุกคนต้องการความรู้เกี่ยวกับ XML ตอนนี้คุณได้รวบรวมความเข้มแข็งและแรงบันดาลใจแล้ว เรามาเริ่มเรียนกันดีกว่า ฉันจะพยายามจัดวางเนื้อหาทั้งหมดให้เรียบง่ายที่สุด รวบรวมเฉพาะสิ่งที่สำคัญที่สุดและไม่เข้าไปในวัชพืช

XML

เพื่อคำอธิบายที่ชัดเจนยิ่งขึ้น การแสดงภาพ XML พร้อมตัวอย่างจะดีกว่า< ? xml version= "1.0" encoding= "UTF-8" ? > < company> < name> ไอทีสวรรค์< / name> < offices> < office floor= "1" room= "1" > < employees> < employee> < name> แม็กซิม< / name> < job> นักพัฒนาซอฟต์แวร์ระดับกลาง< / job> < / employee> < employee> < name> อีวาน< / name> < job> นักพัฒนาซอฟต์แวร์รุ่นเยาว์< / job> < / employee> < employee> < name> แฟรงคลิน< / name> < job> นักพัฒนาซอฟต์แวร์รุ่นเยาว์< / job> < / employee> < / employees> < / office> < office floor= "1" room= "2" > < employees> < employee> < name> เฮรัลด์< / name> < job> นักพัฒนาซอฟต์แวร์ระดับกลาง< / job> < / employee> < employee> < name> อดัม< / name> < job> นักพัฒนาซอฟต์แวร์ระดับกลาง< / job> < / employee> < employee> < name> ลีรอย< / name> < job> นักพัฒนาซอฟต์แวร์รุ่นเยาว์< / job> < / employee> < / employees> < / office> < / offices> < / company>HTML และ XML มีไวยากรณ์คล้ายกันเนื่องจากมีพาเรนต์ร่วมกัน - SGML อย่างไรก็ตาม ใน HTML มีเพียงแท็กคงที่ของมาตรฐานเฉพาะ ในขณะที่ใน XML คุณสามารถสร้างแท็ก แอตทริบิวต์ของคุณเอง และโดยทั่วไป ทำทุกอย่างที่คุณต้องการจัดเก็บข้อมูลในแบบที่เหมาะกับคุณ ในความเป็นจริงแล้ว ใครก็ตามที่รู้ภาษาอังกฤษสามารถอ่านไฟล์ XML ได้ ตัวอย่างนี้สามารถอธิบายได้โดยใช้ต้นไม้ รากต้นไม้- บริษัท. นอกจากนี้ยังเป็นองค์ประกอบราก (root) ซึ่งเป็นที่มาขององค์ประกอบอื่นๆ ทั้งหมด ไฟล์ XML แต่ละไฟล์สามารถมีองค์ประกอบรากได้เพียงองค์ประกอบเดียวเท่านั้นควรจะประกาศทีหลัง. การประกาศไฟล์ xml(บรรทัดแรกในตัวอย่าง) และมีองค์ประกอบอื่นๆ ทั้งหมด เล็กน้อยเกี่ยวกับการประกาศ: มัน บังคับและจำเป็นในการระบุเอกสารเป็น XML มีแอตทริบิวต์หลอกสามแบบ (คุณลักษณะพิเศษที่กำหนดไว้ล่วงหน้า): รุ่น (ตามมาตรฐาน 1.0) การเข้ารหัส (การเข้ารหัส) และแบบสแตนด์อโลน (เอกราช: ถ้าใช่และโครงร่างภายนอกเชื่อมต่อกับเอกสารแล้วจะมีข้อผิดพลาด ค่าเริ่มต้น คือไม่) องค์ประกอบเป็นเอนทิตีที่จัดเก็บข้อมูลโดยใช้องค์ประกอบและคุณลักษณะอื่น คุณสมบัติ– นี่คือข้อมูลเพิ่มเติมเกี่ยวกับองค์ประกอบซึ่งระบุไว้เมื่อเพิ่มองค์ประกอบ หากเราแปลคำอธิบายลงในช่อง OOP เราสามารถยกตัวอย่างต่อไปนี้: เรามีรถยนต์ รถแต่ละคันมีลักษณะเฉพาะ (สี ความจุ ยี่ห้อ ฯลฯ) สิ่งเหล่านี้คือคุณลักษณะ และมีเอนทิตีที่อยู่ภายในรถ : ประตู,หน้าต่าง,เครื่องยนต์,พวงมาลัยเป็นองค์ประกอบอื่นๆ คุณสามารถจัดเก็บคุณสมบัติเป็นองค์ประกอบเดี่ยวๆ หรือเป็นคุณลักษณะก็ได้ ขึ้นอยู่กับความต้องการของคุณ ท้ายที่สุดแล้ว XML เป็นรูปแบบที่ยืดหยุ่นอย่างมากในการจัดเก็บข้อมูลเกี่ยวกับอะไรก็ได้ หลังจากการอธิบาย เราแค่ต้องดูตัวอย่างด้านบนเพื่อให้ทุกอย่างเข้าที่ ในตัวอย่างนี้ เราได้อธิบายโครงสร้างบริษัทที่เรียบง่าย: มีบริษัทที่มีชื่อและสำนักงาน และในสำนักงานก็มีพนักงาน องค์ประกอบพนักงานและสำนักงานเป็นองค์ประกอบแบบ wrapper ซึ่งทำหน้าที่รวบรวมองค์ประกอบประเภทเดียวกัน โดยพื้นฐานแล้วจะรวมองค์ประกอบเหล่านั้นไว้ในชุดเดียวเพื่อความสะดวกในการประมวลผล พื้นและห้องสมควรได้รับความสนใจเป็นพิเศษ สิ่งเหล่านี้คือคุณลักษณะของสำนักงาน (ชั้นและหมายเลข) หรืออีกนัยหนึ่งคือคุณสมบัติของสำนักงาน หากเรามีองค์ประกอบ "รูปภาพ" เราก็สามารถถ่ายโอนมิติของมันได้ คุณอาจสังเกตเห็นว่าบริษัทไม่มีแอตทริบิวต์ชื่อ แต่มีองค์ประกอบชื่อ คุณสามารถอธิบายโครงสร้างได้ตามที่คุณต้องการ ไม่มีใครบังคับให้คุณเขียนคุณสมบัติทั้งหมดขององค์ประกอบเฉพาะในแอตทริบิวต์ คุณสามารถใช้เพียงองค์ประกอบและเขียนข้อมูลบางส่วนภายในได้ ตัวอย่างเช่น เราสามารถบันทึกชื่อและตำแหน่งของพนักงานของเราเป็นคุณลักษณะ:< ? xml version= "1.0" encoding= "UTF-8" ? > < company> < name> ไอทีสวรรค์< / name> < offices> < office floor= "1" room= "1" > < employees> < employee name= "Maksim" job= "Middle Software Developer" > < / employee> < employee name= "Ivan" job= "Junior Software Developer" > < / employee> < employee name= "Franklin" job= "Junior Software Developer" > < / employee> < / employees> < / office> < office floor= "1" room= "2" > < employees> < employee name= "Herald" job= "Middle Software Developer" > < / employee> < employee name= "Adam" job= "Middle Software Developer" > < / employee> < employee name= "Leroy" job= "Junior Software Developer" > < / employee> < / employees> < / office> < / offices> < / company>อย่างที่คุณเห็นตอนนี้ชื่อและตำแหน่งของพนักงานแต่ละคนเป็นคุณลักษณะของเขา และคุณจะสังเกตได้ว่าไม่มีสิ่งใดในเอนทิตีพนักงาน (แท็ก) องค์ประกอบพนักงานทั้งหมดว่างเปล่า จากนั้น คุณสามารถทำให้พนักงานเป็นองค์ประกอบว่างได้ - ปิดทันทีหลังจากประกาศแอตทริบิวต์ ทำได้ค่อนข้างง่าย เพียงเพิ่มเครื่องหมายทับ:< ? xml version= "1.0" encoding= "UTF-8" ? > < company> < name> ไอทีสวรรค์< / name> < offices> < office floor= "1" room= "1" > < employees> < employee name= "Maksim" job= "Middle Software Developer" / > < employee name= "Ivan" job= "Junior Software Developer" / > < employee name= "Franklin" job= "Junior Software Developer" / > < / employees> < / office> < office floor= "1" room= "2" > < employees> < employee name= "Herald" job= "Middle Software Developer" / > < employee name= "Adam" job= "Middle Software Developer" / > < employee name= "Leroy" job= "Junior Software Developer" / > < / employees> < / office> < / offices> < / company>อย่างที่คุณเห็น การปิดองค์ประกอบที่ว่างเปล่า เราได้รักษาความสมบูรณ์ของข้อมูลทั้งหมด และทำให้บันทึกสั้นลงอย่างมาก ทำให้ข้อมูลกระชับและอ่านง่ายขึ้น เพื่อเพิ่ม ความคิดเห็น(ข้อความที่จะถูกข้ามเมื่อแยกวิเคราะห์ไฟล์) ใน XML มีไวยากรณ์ต่อไปนี้:< ! -- Иван недавно уволился, только неделю отработать должен. Не забудьте потом удалить его из списка. -- >และการออกแบบสุดท้ายก็คือ ซีดีดาต้า , หมายถึง "ข้อมูลตัวอักษร" ด้วยการออกแบบนี้ คุณจึงสามารถเขียนข้อความที่จะไม่ถูกตีความว่าเป็นมาร์กอัป XML ได้ สิ่งนี้มีประโยชน์หากคุณมีเอนทิตีภายในไฟล์ XML ที่เก็บมาร์กอัป XML ไว้ในข้อมูล ตัวอย่าง:< ? xml version= "1.0" encoding= "UTF-8" ? > < bean> < information> < ! [ CDATA[ < name> อีวาน< / name> < age> 26 < / age> ] ] > < / information> < / bean>สิ่งสำคัญเกี่ยวกับ XML ก็คือ คุณสามารถขยายได้ตามที่คุณต้องการ: ใช้องค์ประกอบของคุณเอง คุณลักษณะของคุณเอง และจัดโครงสร้างตามที่คุณต้องการ คุณสามารถใช้ทั้งแอตทริบิวต์และองค์ประกอบในการจัดเก็บข้อมูล (ดังแสดงในตัวอย่างก่อนหน้านี้) อย่างไรก็ตาม คุณต้องเข้าใจว่าคุณสามารถสร้างองค์ประกอบและคุณลักษณะของคุณเองได้ทันทีและตามที่คุณต้องการ แต่จะเกิดอะไรขึ้นหากคุณทำงานในโครงการที่โปรแกรมเมอร์คนอื่นต้องการย้ายองค์ประกอบชื่อไปยังแอตทริบิวต์ และตรรกะของโปรแกรมทั้งหมดของคุณ ถูกเขียนเพื่อให้ชื่อนั้นเป็นองค์ประกอบ? จะสร้างกฎของคุณเองเกี่ยวกับองค์ประกอบที่ควรจะเป็น คุณลักษณะใดที่มี และอื่นๆ ได้อย่างไร เพื่อให้คุณสามารถตรวจสอบไฟล์ XML และตรวจสอบให้แน่ใจว่ากฎจะกลายเป็นมาตรฐานในโครงการของคุณและจะไม่มีใครละเมิดกฎเหล่านั้น เพื่อที่จะเขียนกฎทั้งหมดของมาร์กอัป XML ของคุณเอง มีเครื่องมือพิเศษ ที่มีชื่อเสียงที่สุด: DTD และ XML Schema บทความนี้จะพูดถึงเฉพาะเรื่องแรกเท่านั้น

ดีทีดี

DTD ถูกสร้างขึ้นเพื่ออธิบายประเภทของเอกสาร DTD ล้าสมัยไปแล้วและกำลังถูกละทิ้งไปใน XML แต่ก็ยังมีไฟล์ XML จำนวนมากที่ใช้ DTD และโดยทั่วไปแล้ว การทำความเข้าใจจะมีประโยชน์ DTD เป็นเทคโนโลยีสำหรับตรวจสอบเอกสาร XML- DTD ประกาศกฎเฉพาะสำหรับประเภทเอกสาร: องค์ประกอบ องค์ประกอบใดที่สามารถอยู่ภายในองค์ประกอบ คุณลักษณะ ไม่ว่าจะจำเป็นหรือไม่ก็ตาม จำนวนการทำซ้ำ รวมถึงเอนทิตี เช่นเดียวกับ XML สามารถมองเห็น DTD พร้อมตัวอย่างเพื่อคำอธิบายที่ชัดเจนยิ่งขึ้น< ! -- Объявление возможных элементов -- > < ! ELEMENT employee EMPTY> < ! ELEMENT employees (employee+ ) > < ! ELEMENT office (employees) > < ! ELEMENT offices (office+ ) > < ! ELEMENT name (#PCDATA) > < ! ELEMENT company (name, offices) > < ! -- Добавление атрибутов для элементов employee и office -- > < ! ATTLIST employee name CDATA #REQUIRED job CDATA #REQUIRED > < ! ATTLIST office floor CDATA #REQUIRED room CDATA #REQUIRED > < ! -- Добавление сущностей -- > < ! ENTITY M "Maksim" > < ! ENTITY I "Ivan" > < ! ENTITY F "Franklin" >เรามีตัวอย่างง่ายๆ ที่นี่ ในตัวอย่างนี้ เราประกาศลำดับชั้นทั้งหมดของเราจากตัวอย่าง XML: พนักงาน พนักงาน สำนักงาน สำนักงาน ชื่อ บริษัท ในการสร้างไฟล์ DTD มีโครงสร้างหลัก 3 แบบที่ใช้อธิบายไฟล์ XML ใดๆ: ELEMENT (เพื่ออธิบายองค์ประกอบ), ATTLIST (เพื่ออธิบายคุณลักษณะขององค์ประกอบ) และ ENTITY (เพื่อแทนที่ข้อความด้วยรูปแบบย่อ) องค์ประกอบทำหน้าที่อธิบายองค์ประกอบ องค์ประกอบที่สามารถใช้ได้ภายในองค์ประกอบที่อธิบายไว้จะแสดงอยู่ในวงเล็บในรูปแบบรายการ คุณสามารถใช้ปริมาณเพื่อระบุปริมาณ (คล้ายกับปริมาณจากนิพจน์ทั่วไป): + หมายถึง 1+ * หมายถึง 0+ ? หมายถึง 0 หรือ 1 หากไม่มีการเพิ่มปริมาณก็ถือว่าควรมีเพียง 1 องค์ประกอบเท่านั้นหากเราต้องการองค์ประกอบกลุ่มใดกลุ่มหนึ่ง เราก็สามารถเขียนได้ดังนี้:< ! ELEMENT company ((name | offices) ) >จากนั้นองค์ประกอบหนึ่งจะถูกเลือก: ชื่อหรือสำนักงาน แต่ถ้ามีสององค์ประกอบภายในบริษัท การตรวจสอบจะไม่ผ่าน คุณสามารถสังเกตได้ว่าในพนักงานมีคำว่า EMPTY ซึ่งหมายความว่าองค์ประกอบจะต้องว่างเปล่า นอกจากนี้ยังมีองค์ประกอบใด ๆ #PCDATA – ข้อมูลข้อความ รายการผู้สนใจใช้เพื่อเพิ่มคุณสมบัติให้กับองค์ประกอบ หลังจาก ATTLIST ชื่อขององค์ประกอบที่ต้องการจะมาถึง จากนั้นพจนานุกรมในรูปแบบ "ชื่อแอตทริบิวต์ - ประเภทแอตทริบิวต์" และในตอนท้ายคุณสามารถเพิ่ม #IMPLIED (ตัวเลือก) หรือ #REQUIRED (จำเป็น) CDATA – ข้อมูลข้อความ มีประเภทอื่น ๆ แต่เป็นตัวพิมพ์เล็กทั้งหมด นิติบุคคล ENTITY ใช้เพื่อประกาศคำย่อและข้อความที่จะวางไว้ ที่จริงแล้ว เราสามารถใช้ในรูปแบบ XML แทนข้อความทั้งหมดได้ เพียงแค่ชื่อของเอนทิตีที่มีเครื่องหมาย & นำหน้า และ; หลังจาก. ตัวอย่างเช่น เพื่อแยกความแตกต่างระหว่างมาร์กอัป HTML และเฉพาะอักขระ วงเล็บมุมซ้ายมักจะใช้อักขระหลีกด้วย lt; คุณเพียงแค่ต้องใส่ & ก่อน lt จากนั้นเราจะไม่ใช้มาร์กอัป แต่เป็นเพียงสัญลักษณ์< . Как вы можете видеть, все довольно просто: объявляете элементы, объясняете, какие элементы объявленные элементы способны содержать, добавление атрибутов этим элементам и, по желанию, можете добавить сущности, чтобы сокращать какие-то записи. И тут вы должны были бы спросить: а как использовать наши правила в нашем XML файле? Ведь мы просто объявили правила, но мы не использовали их в XML. มีสองวิธีในการใช้งานในรูปแบบ XML: 1. การนำไปปฏิบัติ - การเขียนกฎ DTD ภายในไฟล์ XML เพียงเขียนองค์ประกอบรูทหลังคีย์เวิร์ด DOCTYPE และใส่ไฟล์ DTD ของเราไว้ในวงเล็บเหลี่ยม < ? xml version= "1.0" encoding= "UTF-8" ? > < ! DOCTYPE company [ < ! -- Объявление возможных элементов -- > < ! ELEMENT employee EMPTY> < ! ELEMENT employees (employee+ ) > < ! ELEMENT office (employees) > < ! ELEMENT offices (office+ ) > < ! ELEMENT name (#PCDATA) > < ! ELEMENT company (name, offices) > < ! -- Добавление атрибутов для элементов employee и office -- > < ! ATTLIST employee name CDATA #REQUIRED job CDATA #REQUIRED > < ! ATTLIST office floor CDATA #REQUIRED room CDATA #REQUIRED > < ! -- Добавление сущностей -- > < ! ENTITY M "Maksim" > < ! ENTITY I "Ivan" > < ! ENTITY F "Franklin" > ] > < company> < name> ไอทีสวรรค์< / name> < ! -- Иван недавно уволился, только неделю отработать должен. Не забудьте потом удалить его из списка. -- > < offices> < office floor= "1" room= "1" > < employees> < employee name= "&M;" job= "Middle Software Developer" / > < employee name= "&I;" job= "Junior Software Developer" / > < employee name= "&F;" job= "Junior Software Developer" / > < / employees> < / office> < office floor= "1" room= "2" > < employees> < employee name= "Herald" job= "Middle Software Developer" / > < employee name= "Adam" job= "Middle Software Developer" / > < employee name= "Leroy" job= "Junior Software Developer" / > < / employees> < / office> < / offices> < / company> 2. นำเข้า - เราเขียนกฎทั้งหมดของเราในไฟล์ DTD แยกต่างหาก หลังจากนั้นในไฟล์ XML เราใช้โครงสร้าง DOCTYPE จากวิธีแรก แทนที่จะใช้วงเล็บเหลี่ยมเท่านั้นที่คุณต้องเขียน SYSTEM และระบุเส้นทางสัมบูรณ์หรือสัมพัทธ์ไปยัง ตำแหน่งปัจจุบันของไฟล์ < ? xml version= "1.0" encoding= "UTF-8" ? > < ! DOCTYPE company SYSTEM "dtd_example1.dtd" > < company> < name> ไอทีสวรรค์< / name> < ! -- Иван недавно уволился, только неделю отработать должен. Не забудьте потом удалить его из списка. -- > < offices> < office floor= "1" room= "1" > < employees> < employee name= "&M;" job= "Middle Software Developer" / > < employee name= "&I;" job= "Junior Software Developer" / > < employee name= "&F;" job= "Junior Software Developer" / > < / employees> < / office> < office floor= "1" room= "2" > < employees> < employee name= "Herald" job= "Middle Software Developer" / > < employee name= "Adam" job= "Middle Software Developer" / > < employee name= "Leroy" job= "Junior Software Developer" / > < / employees> < / office> < / offices> < / company>คุณยังสามารถใช้คีย์เวิร์ด PUBLIC แทน SYSTEM ได้ แต่ก็ไม่น่าจะมีประโยชน์สำหรับคุณ หากคุณสนใจ คุณสามารถอ่านรายละเอียดเกี่ยวกับเรื่องนี้ (และเกี่ยวกับ SYSTEM ด้วย) ได้ที่นี่: ลิงก์ ตอนนี้เราไม่สามารถใช้องค์ประกอบอื่นๆ โดยไม่ประกาศใน DTD และ XML ทั้งหมดอยู่ภายใต้กฎของเรา คุณสามารถลองเขียนมันลงไป รหัสนี้วี IntelliJ IDEAวี แยกไฟล์ด้วยนามสกุล .xml แล้วลองเพิ่มองค์ประกอบใหม่หรือลบองค์ประกอบออกจาก DTD ของเรา และสังเกตว่า IDE จะแสดงข้อผิดพลาดให้คุณได้อย่างไร อย่างไรก็ตาม DTD มีข้อเสีย:
  • มีไวยากรณ์ของตัวเอง แตกต่างจากไวยากรณ์ xml
  • DTD ไม่มีการตรวจสอบประเภทข้อมูลและสามารถมีได้เฉพาะสตริงเท่านั้น
  • ไม่มีเนมสเปซใน DTD
เกี่ยวกับปัญหาไวยากรณ์ของคุณเอง: คุณต้องเข้าใจสองไวยากรณ์พร้อมกัน: ไวยากรณ์ XML และ DTD พวกมันแตกต่างและอาจทำให้คุณสับสน ด้วยเหตุนี้ การติดตามข้อผิดพลาดในไฟล์ XML ขนาดใหญ่ร่วมกับสคีมา DTD เดียวกันจึงทำได้ยากขึ้น หากมีบางอย่างไม่ได้ผลสำหรับคุณคุณต้องตรวจสอบ จำนวนมากข้อความของไวยากรณ์ที่แตกต่างกัน เหมือนกับการอ่านหนังสือสองเล่มในเวลาเดียวกัน: ในภาษารัสเซียและภาษาอังกฤษ และถ้าความรู้ภาษาหนึ่งของคุณแย่กว่านั้น การทำความเข้าใจข้อความก็จะยากพอๆ กัน เกี่ยวกับปัญหาการตรวจสอบประเภทข้อมูล: คุณลักษณะใน DTD มีจริง ประเภทต่างๆแต่ทั้งหมดล้วนเป็นการแสดงสตริงของบางสิ่ง รายการ หรือลิงก์ อย่างไรก็ตาม คุณไม่สามารถเรียกร้องเฉพาะตัวเลขได้ และโดยเฉพาะอย่างยิ่ง ไม่ต้องการจำนวนบวกหรือลบ และคุณสามารถลืมประเภทวัตถุไปได้เลย ปัญหาสุดท้ายจะกล่าวถึงในบทความถัดไป ซึ่งจะกล่าวถึงเนมสเปซและสกีมา XML เนื่องจากการพูดคุยในที่นี้ไม่มีจุดหมาย ขอบคุณทุกคนที่ให้ความสนใจ ฉันทำมันเสร็จแล้ว เยี่ยมมากและฉันก็ทำมันต่อไปเพื่อให้บทความทั้งชุดเสร็จตรงเวลา โดยพื้นฐานแล้ว ฉันแค่ต้องหาสคีมา XML และหาคำอธิบายด้วยถ้อยคำที่ชัดเจนเพื่อจบบทความที่ 2 ดำเนินการไปแล้วครึ่งหนึ่งแล้ว ดังนั้นคุณสามารถคาดหวังได้เร็วๆ นี้ บทความสุดท้ายจะทุ่มเทให้กับการทำงานทั้งหมดด้วย ไฟล์ XMLใช้จาวา ขอให้ทุกคนโชคดีและประสบความสำเร็จในการเขียนโปรแกรม :) บทความถัดไป:

คุณคงเคยได้ยินเกี่ยวกับ XML และรู้เหตุผลหลายประการว่าทำไมจึงควรใช้ในองค์กรของคุณ แต่ XML คืออะไรกันแน่? บทความนี้จะอธิบายว่า XML คืออะไรและทำงานอย่างไร

ในบทความนี้

มาร์กอัป มาร์กอัป และแท็ก

เพื่อให้เข้าใจ XML การจำไว้ว่าคุณสามารถแท็กข้อมูลได้อย่างไรจึงมีประโยชน์ เอกสารถูกสร้างขึ้นโดยผู้คนมานานหลายศตวรรษ และตลอดระยะเวลานั้นผู้คนก็จดบันทึกเกี่ยวกับเอกสารเหล่านั้น ตัวอย่างเช่น ครูมักจะจดบันทึกงานของนักเรียน ระบุความจำเป็นในการย้ายย่อหน้า ทำให้ประโยคชัดเจนขึ้น หรือแก้ไข การสะกดผิดฯลฯ ด้วยการทำเครื่องหมายเอกสาร คุณสามารถกำหนดโครงสร้าง ความหมาย และรูปลักษณ์ของข้อมูลได้ หากคุณเคยใช้โปรแกรมแก้ไขด่วนใน ไมโครซอฟต์ ออฟฟิศ Word จากนั้นคุณจะคุ้นเคยกับแบบฟอร์มมาร์กอัปทางคอมพิวเตอร์

ในโลก เทคโนโลยีสารสนเทศคำว่า "เครื่องหมาย" ได้กลายเป็นคำว่า "เครื่องหมาย" มาร์กอัปใช้รหัสที่เรียกว่าแท็ก (หรือบางครั้งโทเค็น) เพื่อกำหนดโครงสร้าง การออกแบบภาพและ - เข้า กรณี XML- ความหมายของข้อมูล

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

และ

- ในเอกสาร HTML และ XML แท็กจะจดจำได้ง่ายเนื่องจากอยู่ในวงเล็บมุม ในข้อความต้นฉบับของบทความนี้ แท็ก HTML ทำหน้าที่หลายอย่าง เช่น การกำหนดจุดเริ่มต้นและจุดสิ้นสุดของแต่ละย่อหน้า (

...

) และตำแหน่งของภาพวาด

คุณสมบัติของเอ็กซ์เอ็มแอล

เอกสาร HTML และ XML มีข้อมูลอยู่ในแท็ก แต่นั่นคือจุดสิ้นสุดของความคล้ายคลึงกันระหว่างสองภาษา ในรูปแบบ แท็ก HTMLกำหนดการออกแบบข้อมูล - ตำแหน่งของส่วนหัวจุดเริ่มต้นของย่อหน้า ฯลฯ ในรูปแบบ XML แท็กจะกำหนดโครงสร้างและความหมายของข้อมูล - คืออะไร

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

โปรดทราบสิ่งต่อไปนี้เมื่อทำงาน:

    ไม่สามารถใช้ HTML แทน XML ได้ อย่างไรก็ตาม ข้อมูล XML สามารถอยู่ในแท็ก HTML และแสดงบนหน้าเว็บได้

    คุณสมบัติ HTMLถูกจำกัดไว้เพียงชุดแท็กที่กำหนดไว้ล่วงหน้าซึ่งใช้ร่วมกันสำหรับผู้ใช้ทุกคน

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

    อิซซี่ ชาวสยาม 6 ใช่ เลขที่ อิซ138บอด คอลิน วิลค็อกซ์

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

แต่อย่าสับสนแท็กในตัวอย่างนี้กับแท็กในไฟล์ HTML ตัวอย่างเช่น หากวางข้อความ XML ข้างต้นลงในไฟล์ HTML และเปิดในเบราว์เซอร์ ผลลัพธ์จะมีลักษณะดังนี้:

อิซซี่ สยามมีส 6 ใช่ ไม่ใช่ อิซซี่138บอด โคลิน วิลค็อกซ์

เว็บเบราว์เซอร์จะไม่สนใจแท็ก XML และแสดงเฉพาะข้อมูล

ข้อมูลที่มีรูปแบบดี

คุณคงเคยได้ยินคนในฝ่ายไอทีพูดถึงไฟล์ XML ที่ "มีรูปแบบเหมาะสม" ไฟล์ XML ที่มีรูปแบบถูกต้องจะต้องเป็นไปตามกฎที่เข้มงวดมาก หากไม่เป็นไปตามกฎเหล่านี้ XML จะไม่ทำงาน ตัวอย่างเช่น ในตัวอย่างก่อนหน้านี้ แต่ละแท็กเปิดจะมีแท็กปิดที่สอดคล้องกัน ดังนั้นตัวอย่างนี้จึงเป็นไปตามกฎข้อหนึ่งของไฟล์ XML ที่มีรูปแบบถูกต้อง หากคุณลบแท็กออกจากไฟล์และพยายามเปิดแท็กนั้นในโปรแกรม Office โปรแกรมใดโปรแกรมหนึ่ง ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น และคุณจะไม่สามารถใช้ไฟล์ดังกล่าวได้

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

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

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

แบบแผน

อย่าหวั่นไหวกับคำว่า "โครงการ" สคีมาเป็นเพียงไฟล์ XML ที่มีกฎสำหรับเนื้อหาของไฟล์ข้อมูล XML โดยทั่วไปไฟล์สคีมาจะมีนามสกุล XSD ในขณะที่ไฟล์ข้อมูล XML จะใช้นามสกุล XML

สคีมาอนุญาตให้โปรแกรมตรวจสอบข้อมูล พวกเขาสร้างโครงสร้างของข้อมูลและทำให้ผู้สร้างและบุคคลอื่นเข้าใจได้ ตัวอย่างเช่น หากผู้ใช้ป้อนข้อมูลที่ไม่ถูกต้อง เช่น ข้อความในช่องวันที่ โปรแกรมอาจแจ้งให้ผู้ใช้แก้ไข หากข้อมูลในไฟล์ XML ตรงกับกฎในสคีมา คุณสามารถใช้โปรแกรมที่เปิดใช้งาน XML เพื่ออ่าน ตีความ และประมวลผลได้ ตัวอย่างเช่น ดังที่แสดงในรูปภาพด้านล่าง Excel สามารถตรวจสอบข้อมูลได้ เพื่อให้เป็นไปตามโครงการ กสท.

วงจรอาจซับซ้อน และบทความนี้ไม่สามารถอธิบายวิธีสร้างวงจรได้ (นอกจากนี้ อาจมีคนไอทีในองค์กรของคุณที่รู้วิธีการทำเช่นนี้) อย่างไรก็ตาม การทราบว่าไดอะแกรมมีลักษณะอย่างไรก็มีประโยชน์ แผนภาพต่อไปนี้จะกำหนดกฎสำหรับชุดแท็ก ... :

ไม่ต้องกังวลหากตัวอย่างไม่ชัดเจน เพียงใส่ใจกับสิ่งต่อไปนี้:

    องค์ประกอบสตริงในสคีมาตัวอย่างเรียกว่าการประกาศ หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับสัตว์ เช่น สีหรือลักษณะพิเศษ แผนกไอทีจะเพิ่มคำประกาศที่เหมาะสมลงในแผนภาพ ระบบ XML สามารถปรับเปลี่ยนได้ตามความต้องการทางธุรกิจที่พัฒนาขึ้น

    การประกาศเป็นวิธีที่มีประสิทธิภาพในการจัดการโครงสร้างข้อมูล ตัวอย่างเช่น โฆษณา หมายความว่าแท็กเช่น และ จะต้องปฏิบัติตามลำดับข้างต้น โฆษณายังตรวจสอบประเภทของข้อมูลที่ผู้ใช้ป้อนได้ด้วย ตัวอย่างเช่น วงจรข้างต้นต้องการอินพุตจำนวนเต็มบวกสำหรับอายุของแมวและค่าบูลีน (TRUE หรือ FALSE) สำหรับแท็ก ALTERED และ DECLAWED

    หากข้อมูลในไฟล์ XML เป็นไปตามกฎของสคีมา แสดงว่าข้อมูลนั้นถูกต้อง กระบวนการตรวจสอบว่าไฟล์ข้อมูล XML เป็นไปตามกฎสคีมาเรียกว่าการตรวจสอบความถูกต้อง (ตามหลักตรรกะ) ข้อได้เปรียบที่สำคัญของการใช้สคีมาคือสามารถป้องกันข้อมูลเสียหายได้ สคีมายังช่วยให้ค้นหาข้อมูลที่เสียหายได้ง่ายขึ้น เนื่องจากการประมวลผลไฟล์ XML จะหยุดลงเมื่อเกิดปัญหา

การเปลี่ยนแปลง

ตามที่กล่าวไว้ข้างต้น XML ยังอนุญาตให้ใช้และนำข้อมูลกลับมาใช้ใหม่ได้อย่างมีประสิทธิภาพ กลไกในการนำข้อมูลกลับมาใช้ใหม่เรียกว่าการแปลง XSLT (หรือการแปลงเพียงอย่างเดียว)

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

การรวมกันของไฟล์ข้อมูล สคีมา และการแปลงทำให้เกิดระบบ XML พื้นฐาน รูปภาพต่อไปนี้แสดงการทำงานของระบบดังกล่าว ไฟล์ข้อมูลจะถูกตรวจสอบตามกฎสคีมา จากนั้นจึงส่งต่อด้วยวิธีที่เหมาะสมสำหรับการแปลง ในกรณีนี้ การแปลงจะวางข้อมูลไว้ในตารางบนเว็บเพจ

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

ชื่อ พันธุ์ อายุ มีการเปลี่ยนแปลง กรงเล็บ ใบอนุญาต เจ้าของ

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

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

XML ในระบบ Microsoft Office

Office รุ่นมืออาชีพให้การสนับสนุน XML ที่ได้รับการปรับปรุง Microsoft Office ใช้รูปแบบไฟล์ที่ใช้ XML เช่น DOCX, XLSX และ PPTX โดยเริ่มตั้งแต่ระบบ Microsoft Office 2007 เนื่องจาก XML จัดเก็บข้อมูลในรูปแบบข้อความแทนที่จะเป็นรูปแบบไบนารีที่เป็นกรรมสิทธิ์ ลูกค้าจึงสามารถกำหนดสคีมาของตนเองและใช้ข้อมูลของคุณได้หลายวิธีโดยไม่ต้องจ่ายค่าลิขสิทธิ์ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบใหม่ โปรดดูรูปแบบ Open XML และนามสกุลไฟล์ ด้านล่างนี้คือสิทธิประโยชน์อื่นๆ

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

เปิดใช้งานฟีเจอร์ XML ใน Office

ตามค่าเริ่มต้น แท็บนักพัฒนาจะไม่สามารถมองเห็นได้ จะต้องเพิ่มลงใน Ribbon เพื่อใช้คำสั่ง XML ใน Office

สำหรับตัวอย่างทั้งหมดที่ต่ำกว่ามาตรฐานจะใช้ ภาษา XSL- การปรับเปลี่ยนมาตรฐานนี้ให้ทันสมัยยิ่งขึ้นซึ่งก็คือภาษา XSL ก็ถูกนำมาใช้กันอย่างแพร่หลายเช่นกัน ซึ่งคุณสามารถอ่านรายละเอียดเพิ่มเติมได้ใน \xml\XSLTutorial หรือ MSDN

ลองดูตัวอย่างไฟล์ XML ง่ายๆ (ex01.xml) ตัวอย่างนี้และตัวอย่างอื่นๆ สามารถพบได้ในโฟลเดอร์ \xml\ XSLTForBeginers บนดิสก์



"หมายเหตุเกี่ยวกับ XSL"

ถ้าเราเปิดไฟล์นี้ใน อินเทอร์เน็ตเบราว์เซอร์ Explorer เราจะเห็นข้อความเดียวกับด้านบน พร้อมด้วยแท็กและข้อมูลบริการทั้งหมด แต่เราไม่ต้องการแท็กและข้อมูลการบริการ! เราต้องการดูเฉพาะข้อมูลที่เกี่ยวข้องกับคดีนี้ และด้วยความช่วยเหลือของแท็กที่เราต้องการจัดการ รูปร่างข้อมูลนี้ งานนี้สามารถแก้ไขได้ง่ายและง่ายดาย: คุณต้องเพิ่มเทมเพลตการแปลง - ไฟล์ XSL - ลงในไฟล์ XML

มาเขียนไฟล์ XML ของเราใหม่ลงไป แบบฟอร์มต่อไปนี้(ex01-1.xml)




"หมายเหตุเกี่ยวกับ XSL"

และมาสร้างไฟล์ XSL ex01-1.xsl กัน ข้อความไฟล์ได้รับด้านล่าง






หากตอนนี้เราเปิดไฟล์ ex01-1.xsl ในเบราว์เซอร์ อินเทอร์เน็ตเอ็กซ์พลอเรอร์จากนั้นเราจะเห็นว่าปัญหาของเราได้รับการแก้ไขแล้ว - มีเพียงข้อมูลที่เราต้องการเท่านั้นยังคงอยู่บนหน้าจอ แท็กทั้งหมดหายไป ผลลัพธ์ที่คุณจะได้รับบนหน้าจอเบราว์เซอร์มีดังต่อไปนี้

"หมายเหตุเกี่ยวกับ XSL"

นอกจากนี้ยังง่ายต่อการเห็นว่าลำดับการแสดงบรรทัดนั้นถูกกำหนดโดยเนื้อหาของเทมเพลตการแปลงเท่านั้น - ไฟล์ XSL หากจำเป็น สามารถเปลี่ยนเทมเพลตได้อย่างง่ายดายโดยไม่ต้องเปลี่ยนไฟล์ XML หลักของเราเลย

มาเขียนไฟล์ XML ใหม่กัน เราจะไม่เปลี่ยนส่วนของข้อมูล แต่เราจะระบุเทมเพลต ex01-2.xml อื่น




"หมายเหตุเกี่ยวกับ XSL"

มาสร้างไฟล์ XSL ex01-2.xsl กันดีกว่า ข้อความไฟล์ได้รับด้านล่าง






หากตอนนี้เราเปิดไฟล์ ex01-2.xsl ใน Internet Explorer ผลลัพธ์จะแตกต่างออกไป

"หมายเหตุเกี่ยวกับ XSL"

ตอนนี้ให้เราทราบประเด็นที่เป็นกุญแจสำคัญสำหรับนักพัฒนาฐานข้อมูล ข้อมูลในหน้า XML มักจะปรากฏเป็นผลจากการสืบค้นฐานข้อมูล การสืบค้นฐานข้อมูลในสภาพแวดล้อมที่มีผู้ใช้หลายคนเป็นการดำเนินการที่มีราคาแพงมาก ตอนนี้สมมติว่าเราไม่มี XML และเรากำลังสร้างหน้า HTML แบบคงที่มาตรฐาน ในกรณีนี้ เพื่อแก้ปัญหาเพียงแค่เปลี่ยนการแสดงข้อมูลภายนอก เช่น เพื่อเปลี่ยนการเรียงลำดับ เรามีสองวิธีในการแก้ปัญหา: ดำเนินการแบบสอบถามและจัดเก็บผลลัพธ์ไว้ในบัฟเฟอร์ชั่วคราวบนเซิร์ฟเวอร์ หรือ แต่ละครั้งที่การแสดงภายนอกเปลี่ยนแปลง ให้ดำเนินการสืบค้นใหม่และสร้างเพจ HTML ใหม่

วิธีแรกต้องใช้การเขียนโปรแกรมที่ใช้แรงงานมาก วิธีที่สองจะเพิ่มภาระบนเซิร์ฟเวอร์ฐานข้อมูลอย่างมาก ซึ่งประสิทธิภาพมักเป็นจุดคอขวดของระบบ - ผู้ใช้มักต้องการได้ผลลัพธ์เร็วขึ้นเสมอ

XML และ XSL เป็นวิธีแก้ไขปัญหาที่ครอบคลุมตามที่อธิบายไว้ข้างต้น ที่จริงแล้ว หน้า XML ถือเป็นบัฟเฟอร์ชั่วคราวสำหรับผลลัพธ์การสืบค้น แทนที่จะใช้การเขียนโปรแกรมที่ไม่ได้มาตรฐานและใช้เวลานาน ตอนนี้เราใช้กลไก XSL มาตรฐาน

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

ขั้นตอนแรก

ตอนนี้เรามาดูตัวอย่างแรกโดยละเอียดกันดีกว่า ให้เราจำข้อความของมัน



"หมายเหตุเกี่ยวกับ XSL"

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

บรรทัดต่อไปนี้คือเนื้อหาของไฟล์ XML ประกอบด้วยองค์ประกอบที่รวมกันเป็นโครงสร้างต้นไม้ องค์ประกอบจะถูกระบุด้วยแท็กและสามารถซ้อนกันภายในกันและกันได้

องค์ประกอบสามารถมีแอตทริบิวต์ที่มีค่าที่สามารถประมวลผลตามเทมเพลตได้

มีองค์ประกอบหนึ่งรายการที่ระดับบนสุดของไฟล์ XML เสมอ นั่นคือไฟล์เช่น



"หมายเหตุเกี่ยวกับ XSL"



“ความรู้เบื้องต้นเกี่ยวกับ CSP”

จะไม่ถูกประมวลผลโดยเบราว์เซอร์ หากต้องการแปลงเป็นไฟล์ XML ที่ถูกต้อง คุณต้องเพิ่มแท็กองค์ประกอบ ระดับบนสุด, ตัวอย่างเช่น




"หมายเหตุเกี่ยวกับ XSL"



“ความรู้เบื้องต้นเกี่ยวกับ CSP”


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

ตอนนี้เรามาดูเทมเพลตการแปลงไฟล์ XSL กันดีกว่า งานของไฟล์ XSL คือการแปลงแผนผังของไฟล์ XML ให้เป็นแผนผังอื่นซึ่งจะเป็นไปตามรูปแบบ HTML และสามารถแสดงบนหน้าจอเบราว์เซอร์ได้ โดยคำนึงถึงการจัดรูปแบบ ตัวเลือกแบบอักษร เป็นต้น

เพื่อให้เบราว์เซอร์ดำเนินการแปลงที่จำเป็น คุณต้องระบุลิงก์ไปยังไฟล์ XSL ในไฟล์ XML


ตอนนี้เรามาดูข้อความของไฟล์ XSL






บรรทัดแรกของไฟล์มีแท็กองค์ประกอบ xsl:stylesheet คุณลักษณะขององค์ประกอบคือหมายเลขเวอร์ชันและการอ้างอิงเนมสเปซ จำเป็นต้องมีแอตทริบิวต์องค์ประกอบ xsl:stylesheet เหล่านี้ ในกรณีของเรา เนมสเปซคือชื่อขององค์ประกอบทั้งหมดและคุณลักษณะที่สามารถใช้ในไฟล์ XSL สำหรับไฟล์ XSL การอ้างอิงเนมสเปซถือเป็นมาตรฐาน

โปรดทราบว่าไฟล์ XSL เป็นไฟล์ XML ประเภทหนึ่ง ไม่มีข้อมูลผู้ใช้ แต่มีรูปแบบเหมือนกัน ไฟล์นี้มีองค์ประกอบระดับบนสุด xsl:stylesheet จากนั้นจะมีแผนผังกฎการเปลี่ยนแปลง

ในเอกสารนี้ เราจะไม่อธิบายโดยละเอียดว่าแต่ละองค์ประกอบของไฟล์ XSL หมายถึงอะไร เราจะนำมา ตัวอย่างต่างๆและแสดงผลลัพธ์ในแต่ละตัวอย่างซึ่งจะทำให้สามารถเปรียบเทียบได้อย่างอิสระ องค์ประกอบต่างๆ XSL และการแปลงที่เริ่มต้นโดยองค์ประกอบเหล่านี้จากไฟล์ XML ต้นฉบับพร้อมข้อมูลผู้ใช้ โปรดทราบด้วยว่าค่าแอตทริบิวต์ เลือกและอันที่คล้ายกันซึ่งมีความหมายว่า "เลือก" ก็มีเขียนไว้ด้วย ภาษาพิเศษ XPathซึ่งคุณสามารถอ่านได้คร่าวๆ บนดิสก์ \xml\XPathTutorial และรายละเอียดเพิ่มเติมบน MSDN

ในอนาคตเราจะจัดเตรียมข้อความของไฟล์ XML และ XSL ไว้ รุ่นขาวดำ- คุณสามารถเปิดได้ตลอดเวลา ไฟล์จริงและเห็นทุกสิ่งเป็นสี หากจำเป็น ให้ใส่ความคิดเห็นในลิงก์ไปยังไฟล์ XSL ไวยากรณ์ความคิดเห็นมีดังนี้ -- อักขระ -- ไม่สามารถแทรกลงในข้อความแสดงความคิดเห็นได้

ในตัวอย่างแรก เราดูว่าองค์ประกอบ xsl:value-of สามารถใช้เพื่อแสดงเนื้อหาขององค์ประกอบ (ข้อความที่อยู่ระหว่างแท็ก) ในรูปแบบ HTML ได้อย่างไร ตอนนี้เรามาดูกันว่าเราจะใช้องค์ประกอบเดียวกันเพื่อแสดงค่าแอตทริบิวต์ขององค์ประกอบได้อย่างไร

พิจารณาไฟล์ XML ต่อไปนี้ ex02-1.xml



มีคำถามอะไรไหม?

แจ้งการพิมพ์ผิด

ข้อความที่จะส่งถึงบรรณาธิการของเรา: