เครื่องมือสำหรับนักพัฒนา · ตัวแปลงไวยากรณ์
เชื้อสายของ XML จาก SGML: เหตุใดจึงมีแอตทริบิวต์ เนมสเปซ และ DTD
· พื้นหลัง
xml ข้อมูลรูปแบบ ความปลอดภัย
ความแปลกประหลาดของ XML (แอตทริบิวต์เทียบกับองค์ประกอบ, เนมสเปซ, DTD, เนื้อหาแบบผสม) นั้นสมเหตุสมผลเมื่อคุณรู้ว่ามันได้รับการออกแบบให้เป็น SGML แบบง่ายสำหรับเอกสาร ไม่ใช่สำหรับข้อมูล โพสต์นี้จะติดตามเชื้อสายนั้นและความหมายเมื่อคุณแปลง XML เป็น JSON
เหตุใดรูปแบบข้อมูลนี้จึงมีแอตทริบิวต์ — นักพัฒนาที่แปลง XML เป็น JSON และพบกับความแตกต่าง JSON ไม่จำเป็นเลย
JSON มีคุณสมบัติวัตถุประเภทหนึ่ง XML แยกแยะคุณลักษณะ องค์ประกอบลูก และข้อความ ToolAcre แมปความแตกต่างนั้นด้วยแอตทริบิวต์ `@` และคีย์ลูกธรรมดา ความแตกต่างนี้สามารถมองเห็นได้เมื่อองค์ประกอบมีทั้ง `id="7"` และลูก `<id>`: ทั้งคู่อยู่รอดภายใต้คุณสมบัติที่แยกจากกัน
แบบแผนนี้จะอธิบายรูปร่างผลลัพธ์โดยไม่อ้างว่าคุณลักษณะมีบทบาททางความหมายสากลเพียงบทบาทเดียว XML ผู้เขียนเลือกพวกเขาภายใต้สคีมาของตนเอง ตัวแปลงจะรักษาหมวดหมู่โหนดที่สามารถสังเกตได้ ไม่ใช่เหตุผลทางธุรกิจที่เลือก
SGML และประเพณีของเอกสาร — ISO 8879 มาร์กอัปสำหรับการเผยแพร่ และแนวคิดในการแท็กข้อความแทนที่จะเข้ารหัสบันทึก
เนื้อหาแบบผสม การเรียงลำดับลูก คุณลักษณะ ความคิดเห็น และคำแนะนำในการประมวลผลเป็นคุณลักษณะเชิงเอกสารที่มีอยู่ในแหล่งที่มา XML การใช้งานแสดงให้เห็นถึงการจัดการ แต่ไม่มีหลักฐานสำหรับลำดับเหตุการณ์ SGML, ISO ประวัติการตีพิมพ์ หรือแรงจูงใจของอุตสาหกรรมการพิมพ์
บทความที่มีขอบเขตแหล่งที่มาจึงเริ่มต้นจากพฤติกรรมที่ปฏิบัติการได้ ข้อความรอบองค์ประกอบย่อยสูญเสียไป ความคิดเห็นและคำแนะนำในการประมวลผลจะหายไป CDATA ยังคงถูกทำเครื่องหมายไว้ ข้อเท็จจริงเหล่านั้นอธิบายว่าทำไมแผนผังเอกสารจึงไม่พอดีกับแผนผังค่า JSON
คุณลักษณะ XML เชิงเอกสารที่มองเห็นได้ในการใช้งาน โดยไม่มีการอ้างสิทธิ์ประวัติ SGML
โปรแกรมแยกวิเคราะห์ตรวจสอบความถูกต้องของ XML และบรรทัดและคอลัมน์ของรายงานที่มีรูปแบบถูกต้อง โดยจะละเว้นการประกาศในค่าผลลัพธ์และคงเอนทิตีที่มีอยู่แล้วภายในห้ารายการและการอ้างอิงอักขระตัวเลขเป็นข้อความที่ถอดรหัส ไม่ได้กำหนดเป้าหมายคณะทำงานหรือบัญชีการออกแบบหลักสิบประการ
การกล่าวอ้างในอดีตจำเป็นต้องมีแหล่งข้อมูลบรรณาธิการภายนอก ซึ่งงานนี้ไม่ได้เพิ่มเข้าไป การละเว้นจะมีความแม่นยำมากกว่าการสร้างการปฏิบัติตามหรือแหล่งที่มาจากชื่อที่ขึ้นต่อกัน
parser จัดการไวยากรณ์ XML; หลักฐานที่เก็บข้อมูลไม่ได้สร้างประวัติการออกแบบ 1998
คุณลักษณะกลายเป็นคีย์ที่นำหน้าด้วย `@`; องค์ประกอบต่างๆ จะคงชื่อไว้ ข้อความภายในองค์ประกอบที่มีโครงสร้างจะย้ายไปที่ `#text` ในขณะที่องค์ประกอบแบบข้อความเท่านั้นจะยุบเป็นสตริง สิ่งนี้ทำให้หมวดหมู่โครงสร้างแยกจากกันเท่าที่โมเดลออบเจ็กต์อนุญาต
การเขียน XML กลับรูปแบบ: `@id` กลายเป็นแอตทริบิวต์ ชื่อแอตทริบิวต์หรือองค์ประกอบที่ไม่ถูกต้องจะถูกปฏิเสธแทนที่จะถูกสุขอนามัย การตัดสินใจดังกล่าวช่วยป้องกันไม่ให้การแมปที่มีรูปแบบไม่ถูกต้องกลายเป็น XML ที่น่าเชื่อถือด้วยชื่อที่เปลี่ยนแปลงโดยไม่แจ้งให้ทราบ
คุณลักษณะและองค์ประกอบยังคงแตกต่างกันภายใต้แบบแผน @ ของ ToolAcre
คำนำหน้าเนมสเปซจะคงคำต่อคำไว้ในชื่อองค์ประกอบและแอตทริบิวต์ รวมถึงการประกาศเนมสเปซ สิ่งเหล่านี้จะไม่ได้รับการแก้ไข ลบออก หรือเขียนใหม่ สิ่งนี้จะรักษาการสะกดต้นฉบับแต่ไม่ใช่ความละเอียดของประเภทที่รับรู้เนมสเปซ
ทุก DOCTYPE จะถูกปฏิเสธก่อนที่ fast-xml-parser จะได้รับเอกสาร หน้ากากจะหลีกเลี่ยงการจับคู่ที่ผิดพลาดภายในความคิดเห็นและ CDATA วิธีนี้จะป้องกันการร้องขอเอนทิตีภายนอก การอ่านเอนทิตีในไฟล์ในเครื่อง และการโจมตีการขยายเอนทิตี โดยไม่มีตัวเลือกในการหลีกเลี่ยงการปฏิเสธ
คำนำหน้าเนมสเปซจะคงไว้ตามตัวอักษรและทุก DOCTYPE จะถูกปฏิเสธ
ใน `<p>before<b>bold</b>after</p>` ตำแหน่งข้อความมีความสำคัญ ToolAcre ตรวจพบเนื้อหาแบบผสม รวมส่วนย่อยภายใต้ `#text` และเตือนว่าตำแหน่งที่เกี่ยวข้องกับลูกจะสูญเสียไป คุณสมบัติของวัตถุ JSON ไม่สามารถสร้างลำดับของข้อความสลับและโหนดองค์ประกอบตามลำดับได้
ลูกที่มีชื่อเดียวกันซ้ำๆ จะกลายเป็นอาร์เรย์ แต่พี่น้องที่มีชื่อต่างกันยังคงเป็นคุณสมบัติ โค้ดที่ต้องการลำดับเอกสารที่แน่นอนควรใช้การแสดงโหนด XML แทนที่จะถือว่าอ็อบเจ็กต์ที่แปลงแล้วเสร็จสมบูรณ์
สิ่งนี้ไม่ครอบคลุม — XSLT, XPath และ XQuery ภาษาประมวลผลที่เติบโตประมาณ XML
XSLT, XPath และ XQuery จะไม่ถูกนำเข้าหรือเปิดเผย แผงไม่ตรวจสอบความถูกต้องของ XSD ประมวลผลการประกาศ DTD หรือสร้างวัตถุโดเมนที่พิมพ์ เป็นการฉายข้อมูลที่มีขอบเขตความปลอดภัยและความเที่ยงตรงที่ชัดเจน
ภาษาคิวรีหรือการเปลี่ยนแปลงสามารถรักษาและนำทางลำดับโหนดในลักษณะที่การแปลงค่าธรรมดาไม่สามารถทำได้ เลือกเครื่องมือดังกล่าวเมื่อคุณลักษณะของเอกสารเป็นส่วนหนึ่งของงาน แทนที่จะเป็นบรรจุภัณฑ์ที่ไม่ได้ตั้งใจ
ประเด็นสำคัญ: XML เป็นรูปแบบเอกสารที่เรียนรู้ที่จะส่งข้อมูล — และวิธีที่แผงตัวแปลงไวยากรณ์แสดงสิ่งที่เหลืออยู่ในการแปลเป็น JSON
โมเดลข้อมูลที่สังเกตได้ของ XML ไม่มีความแตกต่างจาก JSON ToolAcre ทำเครื่องหมายแอตทริบิวต์ CDATA และข้อความที่มีโครงสร้าง คงคำนำหน้าเนมสเปซ ลบโหนดที่ไม่ใช่ข้อมูล และปฏิเสธ DOCTYPE แต่ละตัวเลือกสามารถมองเห็นและทดสอบได้
ใช้แผงควบคุมเพื่อเรียนรู้สิ่งที่ยังคงอยู่จากการฉายภาพ ไม่ใช่ในฐานะผู้มีอำนาจในอดีตหรือโปรเซสเซอร์ XML เต็มรูปแบบ เมื่อสั่งซื้อ สคีมาหรือความหมายของเนมสเปซมีความสำคัญ ให้คงแผนผังดั้งเดิมไว้และใช้เครื่องมือ XML ที่สร้างขึ้นตามจุดประสงค์
ความปลอดภัยและความเที่ยงตรงยังมาบรรจบกันที่ขอบเขต DOCTYPE อีกด้วย การปฏิเสธการประกาศจะป้องกันการประมวลผลเอนทิตี แต่การลบออกจากเอกสารดั้งเดิมโดยพลการอาจเปลี่ยนแปลงการอ้างอิงเอนทิตีหรือสมมติฐานในการตรวจสอบความถูกต้อง หากคุณเป็นเจ้าของแหล่งที่มา ให้แทนที่เอนทิตีที่จำเป็นด้วยข้อความที่ปลอดภัยที่ชัดเจน และตรวจสอบเอกสารผลลัพธ์ หากคุณไม่ได้เป็นเจ้าของ ให้ใช้เวิร์กโฟลว์ XML ที่ได้รับอนุมัติ แทนที่จะทำให้การปฏิเสธลดลงหรือนำเสนอการแปลงบางส่วนเป็นเนื้อหาต้นฉบับ