ONSGMLS(1) Reference ONSGMLS(1)

onsgmls - یک تجزیه‌کننده و اعتبارسنج SGML/XML

onsgmls [-BCdeghlnpRrsuvx] [-alinktype] [-Aarchitecture] [-bbctf] [-csysid...] [-Ddirectory] [-Emax_errors] [-ffile] [-iname] [-ooutput_option...] [-tfile] [-wwarning_type...] [sysid...]

دستور onsgmls سند SGML را که موجودیت سند (document entity) آن توسط شناسه‌های سیستمی

مشخص شده است تجزیه و اعتبارسنجی می‌کند و یک نمایش متنی ساده از «مجموعه اطلاعات ساختار عناصر» (Element Structure Information Set یا ESIS) آن را در خروجی استاندارد چاپ می‌کند. (این همان مجموعه اطلاعاتی است که یک برنامه کاربردی منطبق بر SGML و تحت کنترل ساختار باید بر اساس آن عمل کند.) اگر بیش از یک شناسه سیستمی مشخص شود، موجودیت‌های مربوطه به هم متصل می‌شوند تا موجودیت سند را تشکیل دهند. بنابراین ممکن است موجودیت سند در چندین فایل پخش شده باشد؛ برای مثال، اعلان SGML، پیش‌درآمد (prolog) و مجموعه نمونه سند هر کدام می‌توانند در فایلی جداگانه باشند. اگر هیچ شناسه سیستمی مشخص نشود، onsgmls موجودیت سند را از ورودی استاندارد خواهد خواند. از شناسه سیستمی - در خط فرمان می‌توان برای ارجاع به ورودی استاندارد استفاده کرد. (به طور معمول در یک شناسه سیستمی، از <OSFD>0 برای اشاره به ورودی استاندارد استفاده می‌شود.)

بخشی از یک سیستم SGML منطبق بر استاندارد بین‌المللی ISO 8879 -- زبان نشانه‌گذاری تعمیم‌یافته استاندارد (SGML). یک سیستم امکانات گسترش‌یافته SGML منطبق بر پیوست A از استاندارد بین‌المللی ISO/IEC 10744 -- زبان ساختاردهی ابررسانه‌ای/مبتنی بر زمان (HyTime).

گزینه‌های زیر در دسترس هستند:

-alinktype, --activate=linktype

نوع پیوند linktype را فعال می‌کند. در این حالت همه اطلاعات ESIS خروجی داده نمی‌شود: LPDهای فعال صراحتاً گزارش نمی‌شوند، اگرچه هر صفت پیوند با نام نوع پیوند خود مشخص می‌شود؛ هیچ اطلاعاتی درباره عناصر نتیجه وجود ندارد؛ هنگامی که چندین قانون پیوند برای عنصر فعلی قابل اعمال باشد، onsgmls همیشه اولین مورد را انتخاب می‌کند.

-Aarchitecture, --architecture=architecture

تجزیه را با توجه به معماری architecture انجام می‌دهد.

-bbctf, --bctf=bctf, -bencoding, --encoding=encoding

کدگذاری استفاده‌شده برای خروجی را تعیین می‌کند. اگر در حالت مجموعه نویسه‌های ثابت باشد، نام یک کدگذاری را مشخص می‌کند؛ در غیر این صورت، نام یک BCTF را مشخص می‌کند.

-B, --batch_mode

حالت دسته‌ای (Batch mode). هر

مشخص‌شده در خط فرمان را به‌طور جداگانه تجزیه می‌کند، به جای اینکه آن‌ها را به هم پیوند دهد. این گزینه عمدتاً همراه با -s مفید است.

اگر -tfilename نیز مشخص شده باشد، نام فایل تعیین‌شده به عنوان پیشوند به sysid اضافه می‌شود تا نام فایل نتیجه RAST برای هر sysid ساخته شود.

-csysid, --catalog=sysid

شناسه‌های عمومی و نام‌های موجودیت را با استفاده از فایل مدخل کاتالوگ که شناسه سیستمی آن sysid است، به شناسه‌های سیستمی نگاشت می‌کند. استفاده از چندین گزینه -c مجاز است. اگر یک فایل مدخل کاتالوگ با نام catalog در همان مکان موجودیت سند وجود داشته باشد، بلافاصله پس از مواردی که توسط -c مشخص شده‌اند جستجو خواهد شد.

-C, --catalogs

آرگومان‌های

به جای موجودیت سند، فایل‌های کاتالوگ را مشخص می‌کنند. موجودیت سند توسط اولین مدخل DOCUMENT در فایل‌های کاتالوگ مشخص می‌شود.

-Ddirectory, --directory=directory

دایرکتوری directory را برای فایل‌های مشخص‌شده در شناسه‌های سیستمی جستجو می‌کند. استفاده از چندین گزینه -D مجاز است. برای اطلاعات بیشتر درباره جستجوی فایل، به توضیحات مدیر ذخیره‌سازی osfile مراجعه کنید.

-e, --open-entities

موجودیت‌های باز را در پیام‌های خطا شرح می‌دهد. پیام‌های خطا همیشه شامل موقعیت آخرین موجودیت خارجی بازشده هستند.

-Emax_errors, --max-errors=max_errors

دستور onsgmls پس از max_errors خطا خارج خواهد شد. اگر max_errors برابر با 0 باشد، هیچ محدودیتی برای تعداد خطاها وجود ندارد. مقدار پیش‌فرض 200 است.

-ffile, --error-file=file

خطاها را به file هدایت می‌کند. این گزینه عمدتاً برای پوسته‌هایی مفید است که از هدایت stderr پشتیبانی نمی‌کنند.

-g, --open-elements

شناسه‌های عمومی (generic identifiers) عناصر باز را در پیام‌های خطا نمایش می‌دهد.

-h, --help

پیام راهنما را نمایش داده و خارج می‌شود.

-iname, --include=name

وانمود می‌کند که

<!ENTITY % name "INCLUDE">

در ابتدای زیرمجموعه اعلان نوع سند در موجودیت سند SGML قرار گرفته است. از آنجا که تعاریف تکراری یک موجودیت نادیده گرفته می‌شوند، این تعریف بر هر تعریف دیگری از این موجودیت در اعلان نوع سند اولویت خواهد داشت. استفاده از چندین گزینه -i مجاز است. اگر اعلان SGML نام رزروشده INCLUDE را جایگزین کند، نام رزروشده جدید متن جایگزین موجودیت خواهد بود. معمولاً اعلان نوع سند شامل

<!ENTITY % name "IGNORE">

بوده و از %name; در مشخصات کلیدواژه وضعیت یک اعلان بخش نشانه‌گذاری‌شده استفاده می‌کند. در این حالت، اثر این گزینه این خواهد بود که بخش نشانه‌گذاری‌شده نادیده گرفته نشود.

-n, --error-numbers

شماره پیام‌ها را در پیام‌های خطا نمایش می‌دهد.

-ooutput_option, --option=output_option

اطلاعات تکمیلی را با توجه به output_option خروجی می‌دهد:

entity تعاریف همه موجودیت‌های عمومی را خروجی می‌دهد، نه فقط برای موجودیت‌های داده یا subdoc که در یک صفت ENTITY یا ENTITIES ارجاع داده شده یا نام‌گذاری شده‌اند.

id صفت‌هایی را که مقدار اعلان‌شده آن‌ها ID است متمایز می‌کند.

line دستورات L را خروجی می‌دهد که شماره خط فعلی و نام فایل را نشان می‌دهند.

included یک دستور i برای زیرعناصر گنجانده‌شده (included) خروجی می‌دهد.

empty یک دستور e برای عناصری که مجاز به داشتن تگ پایانی نیستند خروجی می‌دهد، یعنی عناصری که محتوای اعلان‌شده آن‌ها خالی است یا دارای صفت ارجاع به محتوا هستند.

notation-sysid در صورتی که امکان تولید شناسه سیستمی برای آن نشانه‌گذاری (notation) وجود داشته باشد، یک دستور f پیش از دستور N خروجی می‌دهد.

nonsgml در حالت مجموعه نویسه‌های ثابت، دنباله‌های گریز \% را برای نویسه‌های داده غیر SGML خروجی می‌دهد. نویسه‌های داده غیر SGML می‌توانند ناشی از ارجاعات نویسه‌ای عددی باشند.

data-attribute نام نشانه‌گذاری و صفت‌ها را برای صفت‌های DATA خروجی می‌دهد. در غیر این صورت، با صفت‌های DATA مانند صفت‌های CDATA برخورد می‌شود. برای جزئیات بیشتر به بند 4.4.3 از پیوست K استاندارد ISO 8879 مراجعه کنید.

comment یک دستور _ حاوی محتوای یک کامنت خروجی می‌دهد. وجود چندین کامنت در یک اعلان کامنت منفرد به چندین دستور _ متمایز منجر می‌شود، دقیقاً مانند اینکه هر کامنت در یک اعلان کامنت جداگانه قرار داشته باشد.

omitted یک دستور o پیش از دستوری که توسط سند ورودی استنباط شده اما از نشانه‌گذاری واقعی حذف شده است، خروجی می‌دهد. این مورد در حال حاضر بر دستورات ( و ) و A تأثیر می‌گذارد.

tagomit مشابه omitted، اما فقط برای دستورات ( و ).

attromit مشابه omitted، اما فقط برای دستورات A.

استفاده از چندین گزینه -o مجاز است.

-p, --only-prolog

فقط پیش‌درآمد (prolog) را تجزیه می‌کند. onsgmls پس از تجزیه اعلان نوع سند خارج خواهد شد. متضمن گزینه -s است.

-R, --restricted

خواندن فایل را محدود می‌کند. این گزینه برای استفاده در ابزارهای وب مبتنی بر onsgmls (مانند اسکریپت‌های CGI) در نظر گرفته شده است تا از خواندن فایل‌های دلخواه در سرور وب جلوگیری کند. با فعال بودن این گزینه، onsgmls هیچ فایل محلی را نمی‌خواند مگر اینکه در دایرکتوری (یا زیردایرکتوری) مشخص‌شده توسط گزینه -D قرار داشته باشد یا در متغیر محیطی SGML_SEARCH_PATH گنجانده شده باشد. به عنوان یک اقدام احتیاطی امنیتی بیشتر، این گزینه نام فایل‌ها را به نویسه‌های A-Z، a-z، 0-9، '?'، '.'، '_'، '-' محدود کرده و اجازه استفاده از نام فایل‌های حاوی «..» را نمی‌دهد. در سیستم‌هایی با نام فایل‌های MS-DOS، نویسه‌های ':' و '\' نیز مجاز هستند.

-s, --no-output

از تولید خروجی جلوگیری می‌کند. پیام‌های خطا همچنان چاپ خواهند شد.

-tfile, --rast-file=file

نتیجه RAST را طبق تعریف ISO/IEC 13673:1995 در file خروجی می‌دهد (در واقع این هنوز کاملاً یک IS نیست؛ این گزینه پیش‌نویس ویراستار میانی مورخ 1994/08/29 را همراه با تغییرات لازم برای پیاده‌سازی ISO/IEC JTC1/SC18/WG8 N1777 پیاده‌سازی می‌کند). خروجی عادی تولید نمی‌شود.

-v, --version

شماره نسخه را چاپ می‌کند.

-wtype, --warning=type

هشدارها و خطاها را کنترل می‌کند. استفاده از چندین گزینه -w مجاز است. مقادیر زیر برای type هشدارها را فعال می‌کنند:

xml درباره ساختارهایی که توسط XML مجاز نیستند هشدار می‌دهد.

mixed درباره مدل‌های محتوای ترکیبی که #PCDATA را در هیچ کجایی مجاز نمی‌دانند هشدار می‌دهد.

sgmldecl درباره ساختارهای مشکوک گوناگون در اعلان SGML هشدار می‌دهد.

should درباره توصیه‌های گوناگون ارائه‌شده در ISO 8879 که سند با آن‌ها مطابقت ندارد هشدار می‌دهد. (توصیه‌ها با عبارت «should» بیان می‌شوند، بر خلاف الزامات که معمولاً با «shall» مشخص می‌گردند.)

default درباره ارجاعات با مقدار پیش‌فرض هشدار می‌دهد.

duplicate درباره اعلان‌های تکراری موجودیت هشدار می‌دهد.

undefined درباره عناصر تعریف‌نشده هشدار می‌دهد: عناصری که در DTD استفاده شده‌اند اما تعریف نشده‌اند.

unclosed درباره تگ‌های شروع و پایان بدون بسته‌شدن هشدار می‌دهد.

empty درباره تگ‌های شروع و پایان خالی هشدار می‌دهد.

net درباره تگ‌های شروع فعال‌کننده net و تگ‌های پایانی تهی (null end-tags) هشدار می‌دهد.

min-tag درباره تگ‌های شروع و پایان کوتاه‌شده (minimized) هشدار می‌دهد. معادل ترکیبی از هشدارهای unclosed، empty و net است.

unused-map درباره نگاشت‌های ارجاع کوتاه استفاده‌نشده هشدار می‌دهد: نگاشت‌هایی که با یک اعلان نگاشت ارجاع کوتاه تعریف شده‌اند اما هرگز در اعلان استفاده از ارجاع کوتاه در DTD به کار نرفته‌اند.

unused-param درباره موجودیت‌های پارامتری که در یک DTD تعریف شده اما استفاده نشده‌اند هشدار می‌دهد. موجودیت‌های پارامتری داخلی استفاده‌نشده‌ای که متن آن‌ها INCLUDE یا IGNORE است، این هشدار را دریافت نمی‌کنند.

notation-sysid درباره نشانه‌گذاری‌هایی که امکان تولید شناسه سیستمی برای آن‌ها وجود ندارد هشدار می‌دهد.

all درباره شرایطی که معمولاً باید از آن‌ها اجتناب شود (به نظر نویسنده) هشدار می‌دهد. معادل: mixed، should، default، undefined، sgmldecl، unused-map، unused-param، empty و unclosed.

immediate-recursion درباره عناصر با بازگشت فوری (immediately recursive) هشدار می‌دهد. برای جزئیات بیشتر به بند 2.2.5 از پیوست K استاندارد ISO 8879 مراجعه کنید.

fully-declared اگر نمونه سند به طور کامل اعلان نشده باشد هشدار می‌دهد. این گزینه اثری معادل تغییر اعلان SGML به منظور تعیین IMPLYDEF ATTLIST NO ELEMENT NO ENTITY NO NOTATION NO دارد. برای جزئیات بیشتر به بند 2.2.1 از پیوست K استاندارد ISO 8879 مراجعه کنید.

fully-tagged اگر نمونه سند به طور کامل تگ‌گذاری نشده باشد هشدار می‌دهد. این گزینه اثری معادل تغییر اعلان SGML به منظور تعیین DATATAG NO، RANK NO، OMITTAG NO، SHORTTAG STARTTAG EMPTY NO و SHORTTAG ATTRIB OMITNAME NO دارد. برای جزئیات بیشتر به بند 2.2.2 از پیوست K استاندارد ISO 8879 مراجعه کنید.

amply-tagged, amply-tagged-recursive اگر نمونه سند به طور فراگیر تگ‌گذاری نشده باشد (amply-tagged) هشدار می‌دهد. در صورت مشخص شدن amply-tagged-recursive، عناصر تعریف‌شده به صورت ضمنی می‌توانند بازگشتی فوری باشند. این گزینه اثری معادل تغییر اعلان SGML به منظور تعیین DATATAG NO، RANK NO، OMITTAG NO، SHORTTAG ATTRIB OMITNAME NO و یکی از مقادیر IMPLYDEF ELEMENT ANYOTHER یا IMPLYDEF ELEMENT YES دارد. برای جزئیات بیشتر به بند 2.2.4 از پیوست K استاندارد ISO 8879 مراجعه کنید.

type-valid اگر نمونه سند از نظر نوع معتبر نباشد (type-valid) هشدار می‌دهد. این گزینه اثری معادل تغییر اعلان SGML به منظور تعیین VALIDITY YES دارد. برای جزئیات بیشتر به بند 2.2.3 از پیوست K استاندارد ISO 8879 مراجعه کنید.

entity-ref درباره ارجاع به موجودیت‌های از پیش تعریف‌نشده هشدار می‌دهد. این گزینه اثری معادل تغییر اعلان SGML به منظور تعیین ENTITIES REF NONE دارد. برای جزئیات بیشتر به بند 2.3.2 از پیوست K استاندارد ISO 8879 مراجعه کنید.

external-entity-ref درباره ارجاع به موجودیت‌های خارجی هشدار می‌دهد. این شامل ارجاع به زیرمجموعه خارجی DTD نیز می‌شود. این گزینه اثری معادل تغییر اعلان SGML به منظور تعیین ENTITIES REF INTERNAL دارد. برای جزئیات بیشتر به بند 2.3.3 از پیوست K استاندارد ISO 8879 مراجعه کنید.

integral اگر نمونه سند به صورت یکپارچه ذخیره نشده باشد هشدار می‌دهد. این گزینه اثری معادل تغییر اعلان SGML به منظور تعیین ENTITIES INTEGRAL YES دارد. برای جزئیات بیشتر به بند 2.3.1 از پیوست K استاندارد ISO 8879 مراجعه کنید.

یک هشدار را می‌توان با استفاده از نام آن همراه با پیشوند no- غیرفعال کرد. بنابراین -wall -wno-duplicate همه هشدارها به جز هشدارهای مربوط به اعلان‌های تکراری موجودیت را فعال خواهد کرد.

مقادیر زیر برای warning_type خطاها را غیرفعال می‌کنند:

no-idref برای مقدار ارجاع ID که هیچ عنصری آن را به عنوان ID خود ندارد، خطا صادر نمی‌کند. اثر آن به گونه‌ای خواهد بود که گویی هر صفت اعلان‌شده به عنوان یک مقدار ارجاع ID، به عنوان یک نام اعلان شده است.

no-significant هنگامی که نویسه‌ای که نویسه معنادار (significant character) در نحو انضمامی مرجع نیست در یک لفظ در اعلان SGML ظاهر می‌شود، خطا صادر نمی‌کند. این ممکن است همراه با برخی مجموعه‌های آزمایشی دارای باگ مفید باشد.

no-valid سند را ملزم به معتبر بودن از نظر نوع (type-valid) نمی‌کند. این گزینه اثری معادل تغییر اعلان SGML به منظور تعیین VALIDITY NOASSERT و IMPLYDEF ATTLIST YES ELEMENT YES دارد. گزینه -wvalid اثری معادل تغییر اعلان SGML به منظور تعیین VALIDITY TYPE و IMPLYDEF ATTLIST NO ELEMENT NO دارد. اگر هیچ‌یک از -wvalid یا -wno-valid مشخص نشده باشند، آن‌گاه از VALIDITY و IMPLYDEF مشخص‌شده در اعلان SGML استفاده خواهد شد.

no-afdr هنگام استفاده از ویژگی‌های نشانه‌گذاری meta-DTD مربوط به AFDR در DTD، خطا صادر نمی‌کند. این خطاها معمولاً هنگام تجزیه DTD ایجاد می‌شوند، اما هنگام تجزیه meta-DTDها نادیده گرفته می‌شوند.

-x, --references

اطلاعات مربوط به بندهای مرتبط (از ISO 8879:1986) را در پیام‌های خطا نمایش می‌دهد.

گزینه‌های زیر نیز برای سازگاری با گذشته با sgmls پشتیبانی می‌شوند:

-d

مشابه -wduplicate.

-l

مشابه -oline.

-msysid

مشابه -c.

-r

مشابه -wdefault.

-u

مشابه -wundef.

ospent(1), ospam(1), onsgmlnorm(1), osx(1)

James Clark

نویسنده.

Ian Castle <ian.castle@openjade.org>

نویسنده.

November 2002 OpenSP