กลับไปหน้าบทความ

อ่าน 10 นาที

ภาษามาร์กอัปทั่วไปมาตรฐาน

ภาษามาร์กอัปทั่วไปมาตรฐาน ( SGML ; ISO 8879 :1986) เป็นมาตรฐานสำหรับการกำหนด ภาษามาร์กอัป ทั่วไป สำหรับเอกสาร ภาคผนวก A.

ภาษามาร์กอัปทั่วไปมาตรฐาน

หน้าเว็บได้รับการป้องกันบางส่วน

ภาษามาร์กอัปทั่วไปมาตรฐาน
ตัวอย่างโค้ด HTML ที่ใช้มาร์กอัป SGML
นามสกุลไฟล์.sgml,.sgm
สื่อประเภทอินเทอร์เน็ตText/SGML,Application/SGML
ตัวระบุประเภทมาตรฐาน (UTI)public.xml
พัฒนาโดยไอโอเอส
ประเภทของรูปแบบภาษามาร์กอัป
ขยายจากจีเอ็มแอล
ขยายไปยังHTML , XML
มาตรฐานไอโอเอส 8879

ภาษามาร์กอัปทั่วไปมาตรฐาน ( SGML ; ISO 8879 :1986) เป็นมาตรฐานสำหรับการกำหนดภาษามาร์กอัป ทั่วไป สำหรับเอกสาร ภาคผนวก A.1 ของ ISO 8879 ระบุว่ามาร์กอัปทั่วไปนั้น "มีพื้นฐานมาจากสมมติฐาน สองประการ ": [ 1 ]

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

DocBook SGML และLinuxDocเป็นตัวอย่างที่ใช้เครื่องมือ SGML

เวอร์ชันมาตรฐาน

SGML เป็น มาตรฐานของ ISO : "ISO 8879:1986 การประมวลผลข้อมูล – ข้อความและระบบสำนักงาน – ภาษามาร์กอัปทั่วไปมาตรฐาน (SGML)" ซึ่งมีอยู่สามเวอร์ชัน:

  • SGMLฉบับดั้งเดิมซึ่งได้รับการยอมรับในเดือนตุลาคม พ.ศ. 2529 ตามด้วยการแก้ไขทางเทคนิคเล็กน้อย
  • SGML (ENR)ในปี 1996 เกิดขึ้นจากข้อแก้ไขทางเทคนิคเพื่อเพิ่มกฎการตั้งชื่อเพิ่มเติมที่อนุญาตให้ใช้มาร์กอัปภาษาและสคริปต์ใดก็ได้
  • SGML (ENR+WWW หรือ WebSGML)ซึ่งเกิดขึ้นในปี 1998 นั้น เป็นผลมาจากการแก้ไขทางเทคนิคเพื่อให้รองรับข้อกำหนดของ XML และ WWW ได้ดียิ่งขึ้น

SGML เป็นส่วนหนึ่งของมาตรฐาน ISO สามมาตรฐานสำหรับเอกสารอิเล็กทรอนิกส์ที่พัฒนาโดยISO/IEC JTC 1/SC 34 [ 1 ] [ 2 ] (คณะกรรมการเทคนิคร่วม ISO/IEC 1 คณะอนุกรรมการ 34 – ภาษาการอธิบายและการประมวลผลเอกสาร) :

  • SGML (ISO 8879) – ภาษามาร์กอัปทั่วไป
    • SGML ได้รับการปรับปรุงใหม่ในปี 1998 เป็นXML ซึ่งเป็น รูปแบบที่ประสบความสำเร็จของ SGML อย่างไรก็ตาม การใช้งาน SGML ฉบับเต็มนั้นหาได้ยากหรือไม่ค่อยได้ใช้ในโครงการใหม่ๆ แล้ว
  • DSSSL (ISO/IEC 10179) – ภาษาสำหรับการประมวลผลและจัดรูปแบบเอกสารโดยอิงตาม Scheme
    • DSSSL ได้รับการปรับปรุงใหม่เป็น W3C XSLTและXSL-FOซึ่งใช้ไวยากรณ์ XML ปัจจุบัน DSSSL แทบจะไม่ถูกนำไปใช้ในโครงการใหม่ๆ อีกแล้ว นอกเหนือจากเอกสารประกอบของ Linux
  • HyTimeไฮเปอร์เท็กซ์ ทั่วไป และการจัดตารางเวลา[ 3 ]
    • HyTime ได้รับการปรับปรุงบางส่วนเป็น W3C XLinkแล้ว ปัจจุบัน HyTime แทบจะไม่ถูกนำไปใช้ในโครงการใหม่ๆ เลย

SGML ได้รับการสนับสนุนจากรายงานทางเทคนิคต่างๆ โดยเฉพาะอย่างยิ่ง

  • ISO/IEC TR 9573 – การประมวลผลข้อมูล – สิ่งอำนวยความสะดวกสนับสนุน SGML – เทคนิคการใช้ SGML [ 4 ]
    • ส่วนที่ 13: หน่วยงานภาครัฐที่กำหนดมาตรฐานสำหรับวิชาคณิตศาสตร์และวิทยาศาสตร์
      • ในปี 2007 กลุ่มทำงาน MathML ของ W3C ตกลงที่จะรับผิดชอบการบำรุงรักษาชุดเอนทิตีเหล่านี้

ประวัติศาสตร์

SGML สืบทอดมาจากGeneralized Markup Language (GML) ของIBMซึ่งCharles Goldfarb , Edward Mosher และ Raymond Lorie พัฒนาขึ้นในช่วงทศวรรษ 1960 Goldfarb บรรณาธิการของมาตรฐานสากล ได้บัญญัติศัพท์ "GML" โดยใช้อักษรย่อของนามสกุลของพวกเขา[ 5 ] Goldfarb ยังเขียนงานที่สำคัญเกี่ยวกับไวยากรณ์ SGML ใน "The SGML Handbook" อีกด้วย[ 6 ]ไวยากรณ์ของ SGML ใกล้เคียงกับรูป แบบ COCOA มากกว่า ในฐานะภาษามาร์กอัปเอกสาร SGML ได้รับการออกแบบมาเพื่อเปิดใช้งานการแบ่งปัน เอกสารโครงการขนาดใหญ่ ที่เครื่องอ่านได้ในภาครัฐ กฎหมาย และอุตสาหกรรม เอกสารจำนวนมากดังกล่าวต้องยังคงอ่านได้เป็นเวลาหลายทศวรรษ ซึ่งเป็นเวลานานใน สาขา เทคโนโลยีสารสนเทศ SGML ยังถูกนำไปใช้อย่างกว้างขวางโดยกองทัพ อุตสาหกรรมการบินและอวกาศ การอ้างอิงทางเทคนิค และอุตสาหกรรมการพิมพ์ การเกิดขึ้นของ โปรไฟล์ XMLทำให้ SGML เหมาะสำหรับการใช้งานอย่างแพร่หลายสำหรับการใช้งานทั่วไปขนาดเล็ก

ความถูกต้องของเอกสาร

SGML (ENR+WWW) กำหนดความถูกต้องไว้สองประเภท ตามข้อกำหนดและคำจำกัดความที่แก้ไขของ ISO 8879 (จากร่างสาธารณะ): [ 7 ]

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

เอกสาร SGML ที่ถูกต้องตามประเภทถูกกำหนดโดยมาตรฐานดังนี้: [ 7 ]

เอกสาร SGML ที่แต่ละอินสแตนซ์ของเอกสารจะมีคำประกาศประเภทเอกสาร (DTD) ที่เกี่ยวข้อง ซึ่งอินสแตนซ์นั้นต้องสอดคล้องกับ DTD ดังกล่าว

เอกสาร SGML ที่ถูกต้องตามแท็กจะถูกกำหนดโดยมาตรฐานดังนี้: [ 7 ]

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

ศัพท์เฉพาะ

การตรวจ สอบความถูกต้องของแท็ก (Tag-validity)ถูกนำมาใช้ใน SGML (ENR+WWW) เพื่อรองรับXMLที่อนุญาตให้มีเอกสารที่ไม่มีการประกาศ DOCTYPE แต่สามารถแยกวิเคราะห์ได้โดยไม่ต้องใช้ไวยากรณ์ หรือเอกสารที่มีการประกาศ DOCTYPE ที่ไม่ได้ เพิ่มข้อมูล XML Infoset ใดๆ ลงในเอกสาร มาตรฐานเรียกสิ่งนี้ว่า " แท็กครบถ้วน" (fully tagged ) การจัดเก็บแบบบูรณาการ (Integrally stored ) สะท้อนถึง ข้อกำหนดของ XMLที่ว่าองค์ประกอบต่างๆ ต้องลงท้ายด้วยเอนทิตีเดียวกันกับที่เริ่มต้น การ ไม่อ้างอิง (Reference-free)สะท้อนถึง ข้อกำหนด ของ HTMLที่ว่าการอ้างอิงเอนทิตีใช้สำหรับอักขระพิเศษและไม่มีมาร์กอัป คำอธิบายความถูกต้องของ SGML โดยเฉพาะอย่างยิ่งคำอธิบายที่ทำขึ้นก่อนปี 1997 หรือที่ไม่ทราบเกี่ยวกับ SGML (ENR+WWW) จะครอบคลุม เฉพาะการตรวจสอบ ความถูกต้องของประเภท (type-validity ) เท่านั้น

การเน้นย้ำเรื่องความถูกต้องของ SGML สนับสนุนข้อกำหนดสำหรับมาร์กอัปทั่วไปที่ว่ามาร์กอัปควรมีความเข้มงวด (ISO 8879 A.1)

ไวยากรณ์

เอกสาร SGML อาจประกอบด้วยสามส่วน:

  1. ปฏิญญา SGML
  2. ส่วนนำ (Prologue) ซึ่งประกอบด้วยการประกาศ DOCTYPE พร้อมด้วยการประกาศมาร์กอัป ต่างๆ ที่รวมกันเป็น คำจำกัดความประเภทเอกสาร ( Document Type Definitionหรือ DTD) และ
  3. ตัวอินสแตนซ์เอง ซึ่งประกอบด้วยองค์ประกอบบนสุดหนึ่งรายการและเนื้อหาภายใน

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

แม้ว่า SGML ฉบับเต็มจะอนุญาตให้ใช้มาร์กอัปโดยปริยายและแท็กประเภทอื่น ๆ ได้ แต่ ข้อกำหนด XML (s4.3.1) ระบุไว้ดังนี้:

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

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

คุณสมบัติเสริม

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

คุณสมบัติหลายอย่างของ SGML เกี่ยวข้องกับการลดขนาดมาร์กอัป คุณสมบัติอื่นๆ เกี่ยวข้องกับมาร์กอัปแบบพร้อมกัน (CONCUR) การเชื่อมโยงคุณลักษณะการประมวลผล (LINK) และการฝังเอกสาร SGML ไว้ภายในเอกสาร SGML (SUBDOC)

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

ไวยากรณ์รูปธรรมและนามธรรม

ไวยากรณ์พื้นฐานของ SGML (ค่าเริ่มต้น) จะมีลักษณะคล้ายกับตัวอย่างนี้ ซึ่งเป็นไวยากรณ์พื้นฐาน ของ HTML :

<QUOTE TYPE= "example" >โดยทั่วไปแล้ว จะ เป็นแบบนี้<ITALICS>แบบนี้</ITALICS> </QUOTE>

SGML มีไวยากรณ์นามธรรมที่สามารถนำไปใช้ ใน ไวยากรณ์รูปธรรมได้หลายประเภทแม้ว่ามาตรฐานการมาร์กอัปจะใช้วงเล็บเหลี่ยม เป็น ตัวคั่นแท็กเริ่มต้นและแท็กสิ้นสุด ในเอกสาร SGML (ตาม ไวยากรณ์รูปธรรมอ้างอิงที่กำหนดโดยมาตรฐาน) แต่ก็สามารถใช้อักขระอื่นได้ โดยมีเงื่อนไขว่าต้องมีการกำหนดไวยากรณ์รูปธรรมที่เหมาะสมไว้ในการประกาศ SGMLของ เอกสาร [ 8 ]ตัวอย่างเช่น ตัวแปล SGML อาจถูกตั้งโปรแกรมให้แยกวิเคราะห์ GML ซึ่งแท็กจะถูกคั่นด้วยเครื่องหมายโคลอน ทางซ้ายและ จุดทางขวาและ:eคำนำหน้าจะบ่งบอกถึงแท็กสิ้นสุด: :xmp.Hello, world:exmp.ตามไวยากรณ์อ้างอิง ตัวอักษรพิมพ์ใหญ่หรือพิมพ์เล็กจะไม่ถูกแยกแยะในชื่อแท็ก ดังนั้นแท็กทั้งสาม<quote>, <QUOTE>, และ<quOtE>จึงเทียบเท่ากัน (ไวยากรณ์รูปธรรมอาจเปลี่ยนแปลงกฎนี้ผ่านการประกาศ NAMECASE NAMING)

การลดขนาดมาร์กอัป

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

โอมิตแท็ก

สามารถละเว้นแท็กเริ่มต้นและแท็กสิ้นสุดในเอกสารได้ หากมีเงื่อนไขดังต่อไปนี้:

  1. คุณสมบัติ OMITTAG ถูกเปิดใช้งานใน SGML Declaration แล้ว
  2. เอกสาร DTD ระบุว่าสามารถละเว้นแท็กได้
  3. (สำหรับแท็กเริ่มต้น) องค์ประกอบนั้นไม่มี#REQUIREDแอตทริบิวต์ที่จำเป็นที่เกี่ยวข้อง ( ) และ
  4. สามารถอนุมานแท็กได้อย่างชัดเจนจากบริบท

ตัวอย่างเช่น หากมีการระบุ OMITTAG YES ในการประกาศ SGML (เพื่อเปิดใช้งานคุณสมบัติ OMITTAG) และ DTD มีการประกาศดังต่อไปนี้:

<!ELEMENT chapter - - ( title , section +) > <!ELEMENT title o o ( #PCDATA ) > <!ELEMENT section - - ( title , subsection +) >

จากนั้นอ่านข้อความต่อไปนี้:

<บท>บทนำเกี่ยวกับSGML <ส่วน>การประกาศ SGML <ส่วนย่อย> ... 

ซึ่งละเว้น<title>แท็กสองแท็กและ</title>แท็กสองแท็ก จะถือเป็นมาร์กอัปที่ถูกต้อง

การไม่ใส่แท็กเป็นทางเลือก – สามารถใส่แท็กข้อความเดียวกันได้ดังนี้:

<บท><ชื่อ>บทนำเกี่ยวกับSGML </ ชื่อ> <ส่วน><ชื่อ>การประกาศSGML </ ชื่อ> <ส่วนย่อย> ... 

และยังคงถือเป็นมาร์กอัปที่ถูกต้อง

หมายเหตุ: คุณสมบัติ OMITTAG ไม่เกี่ยวข้องกับการติดแท็กให้กับองค์ประกอบที่มีเนื้อหาที่ประกาศไว้EMPTYตามที่กำหนดไว้ใน DTD:

<!ELEMENT image - o EMPTY >

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

ชอร์ตเทรฟ

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

แท็กสั้น

ภาษามาร์กอัป SGML ที่มีไวยากรณ์เฉพาะตัวซึ่งรองรับคุณสมบัติ SHORTTAG VALUE ไม่จำเป็นต้องใส่เครื่องหมายอัญประกาศล้อมรอบค่าแอตทริบิวต์ที่มีเฉพาะตัวอักษรและตัวเลข ไม่ว่าจะเป็นเครื่องหมายอัญประกาศคู่" "(LIT) หรือเครื่องหมายอัญประกาศเดี่ยว' '(LITA) ดังนั้นตัวอย่างมาร์กอัปก่อนหน้านี้จึงสามารถเขียนได้ดังนี้:

<QUOTE TYPE= example >โดยทั่วไปแล้ว จะ เป็นแบบนี้<ITALICS>แบบนี้< /> </QUOTE>

คุณลักษณะอย่างหนึ่งของภาษามาร์กอัป SGML คือ "การติดแท็กว่างแบบสันนิษฐาน" กล่าวคือ แท็กปิดว่าง</>ใน<ITALICS>this</>"รับค่า" มาจากแท็กเปิดเต็มที่อยู่ใกล้ที่สุดก่อนหน้า ซึ่งในตัวอย่างนี้คือ<ITALICS>(กล่าวอีกนัยหนึ่งคือ ปิดรายการที่เปิดล่าสุด) ดังนั้น นิพจน์จึงเทียบเท่า<ITALICS>this</ITALICS>กับ

สุทธิ

อีกหนึ่งคุณลักษณะคือโครงสร้างNET<ITALICS/this/ (Null End Tag) ซึ่งมีโครงสร้างเทียบเท่า<ITALICS>this</ITALICS>กับ

คุณสมบัติอื่นๆ

นอกจากนี้ ฟีเจอร์ SHORTTAG NETENABL IMMEDNET อนุญาตให้ย่อแท็กที่อยู่รอบค่าข้อความว่าง แต่ห้ามย่อแท็กทั้งหมด:

<อ้างอิง></อ้างอิง>

สามารถเขียนได้ดังนี้

<อ้างอิง// 

โดยที่ เครื่องหมายทับแรก( / ) หมายถึง "แท็กเริ่มต้นปิด" ที่เปิดใช้งาน NET (NESTC) และเครื่องหมายทับที่สองหมายถึง NET หมายเหตุ: XML กำหนด NESTC ด้วย/และ NET ด้วย> (วงเล็บเหลี่ยม) ดังนั้นโครงสร้างที่เกี่ยวข้องใน XML จึงปรากฏเป็น<QUOTE/ >

คุณลักษณะที่สามคือ 'ข้อความในบรรทัดเดียวกัน' ซึ่งอนุญาตให้รายการมาร์กอัปจบด้วยการขึ้นบรรทัดใหม่ โดยเฉพาะอย่างยิ่งมีประโยชน์สำหรับหัวข้อและอื่นๆ ที่ต้องใช้การย่อขนาดด้วย SHORTREF หรือ DATATAG ตัวอย่างเช่น หาก DTD มีการประกาศดังต่อไปนี้:

<!ELEMENT lines ( line *) > <!ELEMENT line O - ( #PCDATA ) > <!ENTITY line-tagc "</line>" > <!SHORTREF one-line "&#RE;&#RS;" line-tagc > <!USEMAP one-line line >

(และ "&#RE;&#RS;" เป็นตัวคั่นการอ้างอิงแบบย่อในไวยากรณ์เฉพาะ) ดังนั้น:

บรรทัด แรก<lines>บรรทัด ที่สอง</lines>

เทียบเท่ากับ:

<บรรทัด> <บรรทัด>บรรทัดแรก</บรรทัด> <บรรทัด>บรรทัดที่สอง</บรรทัด> < /บรรทัด>

การกำหนดลักษณะอย่างเป็นทางการ

SGML มีคุณสมบัติหลายอย่างที่ยากต่อการอธิบายอย่างสะดวกด้วยทฤษฎีออโตมาตาเชิง รูปธรรมที่เป็นที่นิยม และ เทคโนโลยี การแยกวิเคราะห์ ร่วมสมัย ในช่วงทศวรรษ 1980 และ 1990 มาตรฐานได้เตือนไว้ในภาคผนวก H ดังนี้:

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

รายงานเกี่ยวกับการใช้งานเบื้องต้นของตัวแยกวิเคราะห์สำหรับ SGML พื้นฐาน ตัวแยกวิเคราะห์ Amsterdam SGML [ 9 ] ระบุไว้

ไวยากรณ์ DTD ใน SGML ต้องสอดคล้องกับแนวคิดเรื่องความไม่กำกวมซึ่งคล้ายคลึงกับเงื่อนไข LL(1) อย่างใกล้ชิด

และระบุความแตกต่างต่างๆ

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

XML ได้รับการอธิบายว่าสามารถแยกวิเคราะห์ได้โดยทั่วไปเหมือนไวยากรณ์สองระดับสำหรับ XML ที่ไม่ได้ตรวจสอบความถูกต้อง และ ไปป์ไลน์แบบ Conwayของโครูทีน ( เลกเซอร์ , ตัวแยกวิเคราะห์ , ตัวตรวจสอบความถูกต้อง) สำหรับ XML ที่ถูกต้อง[ 10 ]การผลิต SGML ในมาตรฐาน ISO รายงานว่าเป็น LL(3) หรือ LL(4) [ 11 ]ชุดย่อยของคลาส XML รายงานว่าสามารถแสดงได้โดยใช้ไวยากรณ์W [ 12 ]ตามเอกสารฉบับหนึ่ง[ 13 ]น่าจะพิจารณาที่ ระดับ ชุดข้อมูลหรือ ระดับ แผนผังการแยกวิเคราะห์มากกว่าระดับอักขระหรือตัวคั่น:

กลุ่มเอกสารที่สอดคล้องกับไวยากรณ์ เอกสาร SGML ที่กำหนด จะก่อให้เกิดภาษา LL(1) ... อย่างไรก็ตาม ไวยากรณ์เอกสาร SGML เองนั้นไม่ใช่ไวยากรณ์ LL(1)

มาตรฐาน SGML ไม่ได้กำหนด SGML ด้วยโครงสร้างข้อมูลที่เป็นทางการ เช่น แผนผังการแยกวิเคราะห์ ( parse tree ) อย่างไรก็ตาม เอกสาร SGML สร้างขึ้นจากกราฟแบบมีทิศทางและไม่มีวงจร (RDAG) ที่มีรากเป็นหน่วยจัดเก็บทางกายภาพที่เรียกว่า " เอนทิตี " ซึ่งจะถูกแยกวิเคราะห์เป็น RDAG ของหน่วยโครงสร้างที่เรียกว่า "องค์ประกอบ" กราฟทางกายภาพนี้มีลักษณะคร่าวๆ เป็นแผนผังเอนทิตีแต่เอนทิตีอาจปรากฏหลายครั้ง นอกจากนี้ กราฟโครงสร้างยังมีลักษณะคร่าวๆ เป็นแผนผังองค์ประกอบ เช่นกัน แต่เครื่องหมาย ID/IDREF อนุญาตให้มีส่วนโค้งใดๆ ก็ได้

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

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

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

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

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

อนุพันธ์

อีเอ็มแอลอี

W3C XML (Extensible Markup Language) เป็นโปรไฟล์ (ส่วนย่อย) ของ SGML ที่ออกแบบมาเพื่อลด ความซับซ้อนในการใช้งานตัวแยกวิเคราะห์เมื่อเทียบกับตัวแยกวิเคราะห์ SGML แบบเต็ม โดยส่วนใหญ่ใช้บนเวิลด์ไวด์เว็บ นอกจากจะปิดใช้งานตัวเลือก SGML หลายอย่างที่มีอยู่ในไวยากรณ์อ้างอิง (เช่น การละเว้นแท็กและเอกสารย่อยที่ซ้อนกัน) XML ยังเพิ่มข้อจำกัดเพิ่มเติมอีกหลายประการเกี่ยวกับไวยากรณ์ SGML ตัวอย่างเช่น แม้ว่าจะเปิดใช้งานรูปแบบแท็กแบบย่อของ SGML แต่ XML ก็ไม่อนุญาตให้มีแท็กเริ่มต้นหรือแท็กปิดที่ไม่ปิด นอกจากนี้ยังอาศัยส่วนเพิ่มเติมหลายอย่างที่ทำโดย WebSGML Annex ปัจจุบัน XML ถูกใช้งานอย่างแพร่หลายมากกว่า SGML แบบเต็ม XML มีการรองรับหลายภาษาแบบเบา ๆโดย อิงตามUnicode แอปพลิ เคชันของ XML ได้แก่XHTML , XQuery , XSLT , XForms , XPointer , JSP , SVG , RSS , Atom , XML-RPC , RDF/XMLและSOAP

เอชแอล

แม้ว่า HTML (Hypertext Markup Language) จะถูกพัฒนาขึ้นบางส่วนโดยอิสระและควบคู่ไปกับ SGML แต่ผู้สร้างคือTim Berners-Leeตั้งใจให้มันเป็นแอปพลิเคชันของ SGML [ 14 ] [ 15 ]ดังนั้นการออกแบบของ HTML จึงได้รับแรงบันดาลใจจากการติดแท็ก SGML แต่เนื่องจากไม่มีการกำหนดแนวทางการขยายและการแยกวิเคราะห์ที่ชัดเจน เอกสาร HTML ส่วนใหญ่จึงไม่ใช่เอกสาร SGML ที่ถูกต้อง ต่อมา HTML ได้รับการปรับปรุงใหม่ (เวอร์ชัน 2.0) ให้เป็นแอปพลิเคชัน SGML มากขึ้น อย่างไรก็ตาม ภาษามาร์กอัป HTML มีคุณสมบัติการจัดการแบบดั้งเดิมและข้อยกเว้นมากมายที่แตกต่างจากข้อกำหนดของ SGML HTML 4 เป็นแอปพลิเคชัน SGML ที่สอดคล้องกับ ISO 8879 – SGML อย่างสมบูรณ์[ 16 ]

กฎบัตรสำหรับการฟื้นฟูกลุ่มทำงาน HTML ของWorld Wide Web Consortium ในปี 2006 ระบุว่า "กลุ่มจะไม่ถือว่ามีการใช้ตัวแยกวิเคราะห์ SGML สำหรับ 'HTML แบบคลาสสิก' " [ 17 ]แม้ว่าไวยากรณ์ HTML จะคล้ายกับไวยากรณ์ SGML มากด้วยไวยากรณ์รูปธรรมอ้างอิง เริ่มต้น แต่HTML5ก็ละทิ้งความพยายามใดๆ ในการกำหนด HTML ให้เป็นแอปพลิเคชัน SGML โดยกำหนดกฎการแยกวิเคราะห์ของตนเองอย่างชัดเจน[ 18 ]ซึ่งตรงกับการใช้งานและเอกสารที่มีอยู่มากขึ้น อย่างไรก็ตาม มันได้กำหนดการ เรียงลำดับ XHTML ทางเลือก ซึ่งสอดคล้องกับ XML และด้วยเหตุนี้จึงสอดคล้องกับ SGML ด้วย[ 19 ]

พจนานุกรมภาษาอังกฤษฉบับออกซ์ฟอร์ด

ส่วนหนึ่งจากพจนานุกรมภาษาอังกฤษฉบับออก ซ์ฟอร์ด (ปี 1985) แสดงการใช้มาร์กอัป SGML

พจนานุกรมภาษาอังกฤษฉบับที่สองของ อ็อกซ์ฟอร์ด (OED) ได้รับการทำเครื่องหมายทั้งหมดด้วยภาษามาร์กอัปแบบ SGML โดยใช้โปรแกรมแก้ไขข้อความLEXX [ 20 ]

ฉบับที่สามนี้จัดทำขึ้นในรูปแบบ XML

คนอื่น

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

ภาษาโปรแกรมสมัยใหม่หลายภาษารองรับแท็กเป็นประเภทโทเค็นพื้นฐาน หรือปัจจุบันรองรับ Unicode และ การจับคู่รูปแบบ นิพจน์ปกติแล้วตัวอย่างเช่นภาษาโปรแกรม Scala

แอปพลิเคชัน

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

  • Text Encoding Initiative (TEI) คือกลุ่มความร่วมมือทางวิชาการที่ออกแบบ บำรุงรักษา และพัฒนามาตรฐานทางเทคนิคสำหรับแอปพลิเคชันการแสดงข้อความในรูปแบบดิจิทัล
  • DocBookเป็นภาษามาร์กอัปที่ถูกสร้างขึ้นมาครั้งแรกในรูปแบบแอปพลิเคชัน SGML โดยออกแบบมาเพื่อใช้ในการจัดทำเอกสารทางเทคนิค ปัจจุบัน DocBook เป็นแอปพลิเคชัน XML
  • CALS (Continuous Acquisition and Life-cycle Support) เป็นโครงการริเริ่มของกระทรวงกลาโหมสหรัฐฯ (DoD) สำหรับการบันทึกเอกสารทางทหารในรูปแบบอิเล็กทรอนิกส์ และการเชื่อมโยงข้อมูลและสารสนเทศที่เกี่ยวข้องเข้าด้วยกัน
  • HyTimeกำหนดชุดของประเภทองค์ประกอบที่มุ่งเน้นไฮเปอร์เท็กซ์ ซึ่งช่วยให้ผู้เขียนเอกสาร SGML สามารถสร้างงานนำเสนอไฮเปอร์เท็กซ์และมัลติมีเดียได้
  • ระบบ EDGAR (Electronic Data-Gathering, Analysis, and Retrieval) ทำหน้าที่รวบรวม ตรวจสอบความถูกต้อง จัดทำดัชนี รับ และส่งต่อข้อมูลโดยอัตโนมัติ จากบริษัทและบุคคลอื่น ๆ ที่มีหน้าที่ตามกฎหมายในการยื่นแบบฟอร์มข้อมูลและสารสนเทศต่อคณะกรรมการกำกับหลักทรัพย์และตลาดหลักทรัพย์ของสหรัฐอเมริกา (SEC)
  • LinuxDocเป็นเอกสารที่ใช้ SGML DTD สำหรับแพ็กเกจ Linux และ XML DTD สำหรับ Docbook
  • AAP DTDคือคำจำกัดความประเภทเอกสารสำหรับ เอกสาร ทางวิทยาศาสตร์ซึ่งกำหนดโดยสมาคมผู้จัดพิมพ์แห่งอเมริกา (Association of American Publishers )
  • ISO 12083ซึ่งเป็นมาตรฐานที่พัฒนาต่อจาก AAP DTD เป็นมาตรฐาน SGML สากลสำหรับการแลกเปลี่ยนเอกสารระหว่างผู้เขียนและผู้จัดพิมพ์
  • SGMLguidเป็นคำจำกัดความประเภทเอกสาร SGML รุ่นแรกๆ ที่สร้าง พัฒนา และใช้งานที่CERN

การใช้งานแบบโอเพนซอร์ส

ตัวอย่างการใช้งาน SGML แบบ โอเพนซอร์สที่สำคัญได้แก่:

  • เอเอสพี-เอสจีเอ็มแอล
  • ARC-SGMLพัฒนาโดย Standard Generalized Markup Language Users' ในปี 1991 โดยใช้ภาษา C
  • SGMLSโดย เจมส์ คลาร์ก ปี 1993 ภาษาซี
  • โครงการ YAOโดยสถาบันเทคโนโลยีหยวนเจ๋อ ประเทศไต้หวัน ร่วมกับ ชาร์ลส์ โกลด์ฟาร์บ ปี 1994
  • SP และ Jadeโดย James Clark ภาษา C++

SP และ Jade ซึ่งเป็นตัวประมวลผล DSSSL ที่เกี่ยวข้องนั้นได้รับการดูแลโดย โครงการ OpenJadeและเป็นส่วนประกอบทั่วไปของระบบปฏิบัติการ Linux คลังเก็บข้อมูลทั่วไปของซอฟต์แวร์และเอกสาร SGML อยู่ที่SUNETคลาสตัวแยกวิเคราะห์ HTML ดั้งเดิม ในการใช้งาน Java ของ Sun System เป็นตัวแยกวิเคราะห์ SGML ที่มีคุณสมบัติจำกัด โดยใช้คำศัพท์และแนวคิดของ SGML

ดูเพิ่มเติม

  • ภาพรวมของแหล่งข้อมูล SGMLบนเว็บไซต์ของ W3C
  • บทนำและตัวอย่างเอกสารประกอบซอฟต์แวร์ใน SGML
  • บันทึกของคณะกรรมการ SC34สถาบันชาร์ลส์ แบ็บเบจ  – ชุดเอกสารเกี่ยวกับการพัฒนาSGMLและมาตรฐานอื่นๆ ที่มีอิทธิพลต่อการพัฒนาเครื่องมือ XML ในปัจจุบัน เอกสารประกอบด้วยร่างแรกๆ ของเอกสารด้านการบริหาร SGML เอกสารประกอบ เอกสารของคณะทำงาน และมาตรฐานสำหรับภาษาคอมพิวเตอร์
  • บทสรุปไวยากรณ์ SGML โดย ชาร์ลส์ โกลด์ฟาร์บ
  • เอกสาร SGML ที่แนะนำให้คุณรู้จักกับ SGML ; เหตุผลบางประการที่ทำให้ SGML มีความสำคัญ
  • การประกาศ SGMLในหนังสือ SGML and HTML Explained โดย Martin Bryan (1997) (URL เดิมเสียที่http://www.is-thought.co.uk/book/sgml-4.htm#Fig4-2 )
  • คำประกาศ SGML โดยเวย์น โวห์เลอร์, บริษัท IBM, ปี 1994
  • ISO 9069:1988 – การประมวลผลข้อมูล – สิ่งอำนวยความสะดวกสนับสนุน SGML – รูปแบบการแลกเปลี่ยนเอกสาร SGML (SDIF)
  • ISO/IEC 9070:1991 – เทคโนโลยีสารสนเทศ – สิ่งอำนวยความสะดวกสนับสนุน SGML – ขั้นตอนการลงทะเบียนสำหรับตัวระบุเจ้าของข้อความสาธารณะ
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Standard_Generalized_Markup_Language&oldid=1357157677 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ภาษามาร์กอัปทั่วไปมาตรฐาน

ภาษามาร์กอัปทั่วไปมาตรฐาน ( SGML ; ISO 8879 :1986) เป็นมาตรฐานสำหรับการกำหนด ภาษามาร์กอัป ทั่วไป สำหรับเอกสาร ภาคผนวก A.

เวอร์ชันมาตรฐาน

SGML เป็น มาตรฐานของ ISO : "ISO 8879:1986 การประมวลผลข้อมูล – ข้อความและระบบสำนักงาน – ภาษามาร์กอัปทั่วไปมาตรฐาน (SGML)" ซึ่งมีอยู่สามเวอร์ชัน:

ประวัติศาสตร์

SGML สืบทอดมาจาก Generalized Markup Language (GML) ของ IBM ซึ่ง Charles Goldfarb , Edward Mosher และ Raymond Lorie พัฒนาขึ้นในช่วงทศวรรษ 1960 Goldfarb บรรณาธิการของมาตรฐานสากล ได้บัญญัติศัพท์ "GML" โดยใช้อักษรย่อของนามสกุลของพวกเขา [ 5 ] Goldfarb...

ความถูกต้องของเอกสาร

SGML (ENR+WWW) กำหนดความถูกต้องไว้สองประเภท ตามข้อกำหนดและคำจำกัดความที่แก้ไขของ ISO 8879 (จากร่างสาธารณะ): [ 7 ]