SGML مخفف عبارت Standard Generalized Markup Language می باشد و استانداردی برای تعیین یک سند زبان نشانه گذاری (Markup Language Document) یا مجموعه ای تگ است. که این خصوصیات خود یک DTD است. SGML به خودی خود یک زبان برنامه نویسی نیست اما فرا داده ای است (meta data) که خصوصیات یک زبان برنامه نویسی را مشخص می کند.
SGML بر این عقیده است که اسناد، المان های ساختاری و معنایی دارند که بدون رجوع به نحوه نمایش المان ها، قابل بیان است. برخی مزیت های اسناد بر پایه SGML عبارتند از:
- آن ها می توانند به جای توجه به مشخصات ظاهری (که ممکن است در طول زمان تغییر کند)، با توجه به ساختار اسناد ایجاد شوند.
- آن ها می توانند قابلیت جابجایی بیشتری داشته باشند زیرا یک کامپایلر SGML با توجه به DTD مربوطه، می تواند آن سند را تفسیر کند.
- اسنادی که برای کاربردی خاص در نظر گرفته می شوند، به آسانی قابلیت استفاده برای سایر رسانه ها مثل صفحه نمایش کامپیوتر را دارند.
زبان مورد استفاده مرورگر وب، HTML می باشد که مثالی از زبان بر پایه SGML می باشد و برای هر سند HTML یک DTD وجود دارد.
امروزه در محیط های تحت شبکه، بسیاری از اسناد توسط XML ارائه می شوند که زبانی برای شرح داده می باشد و از اصول SGML استفاده می کند.
مثالی از سند پایه ای SGML
این سند پایه ای SGML شامل موارد زیر است:
- DTD
- یکی از المان های اصلی (که به عنوان tag یا markup شناخته می شوند)
- پاراگراف
- متن
المان های اصلی بسته به نوع سندی که در حال نوشتن آن هستید، می بایست یک <article>
<chapter>
<book>
یا <sect1>
باشند.
در این مثال ساده SGML، از تگ <article>
استفاده کرده ایم:
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN"> <article> <sect1 id="introduction"><title>Hello world introduction</title> <para> !Hello world </para> </sect1> </article>
در مثال بالا خط اول یک DTD است.
دقت کنید که تگ های اول و آخر هر دو <article>
و </article>
هستند. سایر تگ ها در این تگ قرار می گیرند.
به تگ<sect1>
دقت کنید که خصوصیتی به نام “id” دارد. اگر بخواهید هنگام راه اندازی یک تجزیه کننده (parser) فایل SGML، لینک ها به صورت اتوماتیک برای اسناد HTML ایجاد شوند، می بایست تمام تگ های <sectX>
که X عددی بین ۱ تا ۵ است، خصوصیت id داشته باشند. بنابراین، تمام تگ های <sectX>
، حداقل به تگ پاراگراف (para) و در پایان به </sectx>
نیاز دارند.
توجه کنید که در DTD مثال بالا (خط اول)، سند را به عنوان article معرفی کرده است که این به شما اجازه می دهد که <article>
را به عنوان تگ سطح بالا (تگ اصلی) در مکان اول بیاورید. به عنوان مثال، اگر به جای ‘article’ از ‘book’ استفاده شده بود، تجزیه کننده SGML قادر نبود سند را تحویل دهد.
ساختار عمومی SGML
یک نویسنده خوب فایل، همیشه برای فایل SGML مجوزی قرار می دهد. در ادامه آمده است که یک فایل SGML جدید چگونه است.
<!--Copyright (c) ۲۰۰۲ your name, NewbieDoc project; http://sourceforge.net/projects/newbiedoc Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license can be found at http://www.fsf.org/copyleft/fdl.html.--> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN"> <article id="hello-world" lang="en"> <sect1 id="introduction"><title>Hello world introduction</title> <para> Hello world! </para> </sect1> </article>
دقت کنید چگونه به وسیله علامت های <--
و --!>
کامنت گذاری کرده ایم. این مهم است، اگر آن را فراموش کنید، هنگامی که به وسیله یک تجزیه کننده SGML برنامه را اجرا می کنید، با انواع خطاها روبرو می شوید و این اطلاعات هنگامی که شما در حال ایجاد آن هستید، قابل مشاهده نیست. دلیل قابل مشاهده نبودنش این است که تجزیه کننده آن را به عنوان یک کامنت در نظر می گیرد و آن را به انتهای فایل تجزیه شده منتقل می کند. این خوب است زیرا می توانیم با اضافه کردن کامنت ها نکاتی که در آینده استفاده می کنیم را یادآوری کنیم.
دقت کنید که برای تگ <article>
خصوصیات “id” و “lang” در نظر گرفتیم. اگر شما در حال ساخت فایل چند صفحه ای HTML باشید، id مشخص می کند که فایل بعد از تجزیه چه نامی داشته باشد. خصوصیت lang مشخص می کند که متن اصلی با چه زبانی است.
برای فهم بهتر این مثال آن را انجام دهید. کد بالا را در یک ویرایشگر متن تایپ یا copy و سپس paste نمایید. فایل را با نام myfile.en.sgml ذخیره نمایید. در command line به پوشه ای که فایل myfile.en.sgml در آن است بروید و فرمان زیر را اجرا کنید.
bash$ sgmltools -b html myfile.en.sgml
اکنون شما دایرکتوری با نام my file.en دارید. اگر محتوای دایرکتوری را تغییر دهید و به محتوای آن بنگرید، می بینید که فایلی به نام hello-world.html دارید. وقتی این سند را ایجاد کردید، تجزیه کننده با استفاده از “id” نام فایل خروجی را می سازد. نام واقعی فایل شما برای نام گذاری زیرمجموعه ها استفاده می شود.
در این مثال، این مورد زیاد اهمیت ندارد، زیرا در اینجا شما تنها یک فایل html دارید. به هر حال تا هنگامی که بخش های مختلفی ایجاد می کنید، فایل های زیادی در زیرمجموعه ها می بینید.
اگر شما به تگ <article>
، خود id اختصاص ندهید، فایل html به طور خودکار با نامی مشابه “t1.html” ذخیره می شود که هیچ کمکی نمی کند.
بدین ترتیب شما موفق شدید اولین فایل SGML خود را بسازید. اکنون مرورگر خود را باز کنید و فایل نهایی خود را در آن مشاهده کنید.
دیدگاه بگذارید