Schematron: اعتبار سنجی XML با استفاده از XSLT

ساخت وبلاگ

Schematron [Schematron] یک زبان اعتبار سنجی مبتنی بر ساختاری است که توسط ریک جلیف تعریف شده است ، به عنوان جایگزینی برای رویکردهای مبتنی بر دستور زبان موجود. الگوهای درخت ، تعریف شده به عنوان عبارات XPATH ، برای بیان ادعاها و ارائه گزارش های کاربر محور در مورد اسناد XML استفاده می شود. بیان قوانین اعتبار سنجی با استفاده از الگوهای اغلب ساده تر از تعریف یک قانون با استفاده از یک مدل محتوا است. الگوهای درخت با هم جمع می شوند تا یک طرحواره شماترون شکل بگیرند.

Schematron یک مکمل مفید و در دسترس برای سایر زبانهای طرحواره است. اجرای منبع باز XSLT حول یک چارچوب اصلی است که برای پسوند و سفارشی سازی باز است.

در این مقاله زبان Schematron و پیاده سازی های موجود معرفی شده است. مروری بر معماری ، با هدف تولید نسخه های سفارشی نیز ارائه شده است.

بررسی اجمالی

در این مقاله مقدمه ای برای شماترون ارائه شده است. یک زبان اعتبار سنجی XML نوآورانه که توسط ریک جلیف ساخته شده است. این نوآوری از انتخاب یک رویکرد جایگزین برای اعتبار سنجی نسبت به زبانهای طرحواره موجود ناشی می شود: Schematron از یک الگوی مبتنی بر الگوی درخت استفاده می کند ، نه گرامرهای معمولی که در طرح های DTD و XML استفاده می شود. به عنوان یک Schematron ابزار منبع باز ، یک افزودنی بسیار مفید برای ابزار توسعه دهندگان XML ، بسیار مفید است.

بخش اولیه این مقاله مروری بر اعتبار الگوی درخت و برخی از مزایای آن در مقایسه با یک رویکرد دستور زبان منظم را انجام می دهد. این به دنبال یک طرح کلی از طرحواره و کاربردهای در نظر گرفته شده است که طراحی آن را هدایت کرده است. سپس زبان Schematron مورد بحث قرار می گیرد و تمام عناصر اصلی این زبان را با نمونه هایی از استفاده آنها پوشش می دهد. یک واژگان XML بی اهمیت برای اهداف تولید نمونه معرفی می شود.

بخش های بعدی در این مقاله ، مروری بر چارچوب منبع باز XSLT که برای اجرای زبان Schematron استفاده می شود ، ارائه می دهد. زبان سازگاری Schematron برای اجرای سفارشی نیز معرفی شده است. این مقاله با برخی از پیشنهادات پسوندهای احتمالی آینده تکمیل می شود.

هدف کلی این مقاله ارائه خواننده با نمای کلی از هر دو طرحواره و رویکرد آن به اعتبار سنجی است. این یک آموزش مفصل از زبان ارائه نمی دهد ، اگرچه همه عناصر اصلی مورد بحث قرار می گیرد و فرض می کند که خواننده در حال حاضر با DTD های XPATH ، XSLT و XML آشنا است. سایر مطالب آموزشی این نقش ها را در حال حاضر [هولمن] ، [xpath] ، [xslt] ، [ogbujic] ، [ogbujiu] انجام می دهند.

معرفی الگوهای درخت به عنوان مکانیسم اعتبار سنجی

در طی چند سال گذشته ، تعدادی از زبان های مختلف XML Schema همانطور که جایگزین های پیشنهادی برای تعریف نوع سند پیری (DTD) ارائه شده است ، ظاهر شده اند. اکثر این موارد فرضیه اساسی در مورد تجدید عملکرد DTD را در نحو XML با علاوه بر این ، در برخی موارد ، از سایر ویژگی ها مانند تایپ داده ، وراثت و غیره [xmlschema] در نظر گرفته اند. استفاده از نحو XML انعطاف پذیری اضافی را از طریق اعمال ابزارهای موجود برای دستکاری نشانه گذاری فراهم می کند ، در حالی که ویژگی های "ارزش افزوده" نیازهای توسعه دهندگان را که به دنبال ادغام نزدیکتر با پایگاه داده ها و زبانهای شی گرا هستند ، برآورده می کند.

با این حال ، رویکرد اساسی اتخاذ شده توسط این زبانها از الگوی DTD فاصله زیادی ندارد: تعریف طرحوارهایی با استفاده از دستور زبان های منظم. کمتر رسمی ، طرحواره ها با تعریف روابط والدین و کودک و خواهر و برادر ساخته می شوند [jelliffe1999a]. به عنوان مثال در یک DTD ممکن است بنویسد:

این سه عنصر را تعریف می کند ،دیوار, ریشهوتخانهبشررابطه والدین و فرزند بینخانهوتدیوارعناصر در مدل محتوا برایخانهبشریک خانه ممکن است چندین دیوار داشته باشد.

رابطه خواهر و برادر بیندیواروتسقفاز همان مدل محتوا گرفته شده است ، که آنها را به عنوان فرزندان خواهر و برادر قانونی تعریف می کندخانهعنصر.

با این حال این بدان معنی است که DTD ها ، و مشتقات مشابه ، قادر به تعریف (و از این رو محدود کردن) انواع دیگر روابط موجود در بین عناصر نشانه گذاری در یک سند نیستند. همانطور که مشخصات XPATH [XPATH] نشان می دهد ، بسیاری از روابط ممکن وجود دارد که به عنوان "محورها" شناخته می شوند.

مثال 1. روابط درختی (محورها) تعریف شده توسط xpath

در حالی که XML شامل یک مکانیسم ID/IDREF است که امکان ارجاع متقابل بین عناصر را فراهم می کند ، و از این رو شکل دیگری از روابط ، فقط ضعیف آن عناصر را به هم متصل می کند. هیچ عملی وجود ندارد که یک IDREF باید به یک شناسه در یک نوع عنصر خاص اشاره کند ، به سادگی باید به یک شناسه موجود اشاره کند ، و علاوه بر این که همه شناسه ها باید منحصر به فرد باشند.

با تأکید بر این واقعیت که الگوی طرحواره موجود فقط می تواند محدودیت هایی را در مورد داده های داده از نظر کودک و محورهای خواهر و برادر بیان کند ، طبیعی است که در نظر بگیرید که آیا یک الگوی متناوب ممکن است به یک نویسنده Schema اجازه دهد از این روابط اضافی سوءاستفاده کند تا انواع اضافی محدودیت را تعریف کنددر میان عناصر اسناد. الگوهای درخت دقیقاً همین کار را انجام می دهند ، و XPath یک نحو مناسب را برای بیان این الگوهای فراهم می کند.

اعتبار سنجی با استفاده از الگوهای درخت یک فرآیند دو مرحله ای است:

در مرحله اول ، اشیاء نامزد (از نظر XPath ، گره ها) باید تأیید شوند. یعنی یک زمینه را شناسایی کنید

ثانیاً باید در مورد آن اشیاء ادعاهایی مطرح شود تا آزمایش کند که آیا آنها محدودیت های لازم را برآورده می کنند یا خیر.

هر دو انتخاب شیء نامزد ، و ادعاها را می توان از نظر عبارات XPath تعریف کرد. به طور رسمی تر ، گره ها و قوس ها در یک نمودار از داده ها می توانند برای شناسایی هر دو گره عبور کنند ، و سپس در مورد روابط آن گره ها با دیگران در همان نمودار ، ادعاهایی را بیان کنند. بنابراین ادعاها مکانیسم برای قرار دادن محدودیت در روابط بین گره ها در یک نمودار (عناصر و ویژگی ها در یک سند XML) است.

به عنوان مثال ، ما ممکن است همه را انتخاب کنیمخانهگره ها در یک سند با استفاده از عبارت:

و سپس ادعا کنید که همهخانهSدیوارS با تأیید اینکه الگوی زیر یک یا چند گره کودک را انتخاب می کند (در متن تعریف شده توسط انتخاب قبلی):

گرامرهای منظم ، همانطور که در DTD ها استفاده می شود ، می توانند به عنوان الگوهای درختی که در آن تنها محور موجود محور والدین و کودک است [Jelliffe1999e] مشاهده شود. استفاده کامل از اعتبار الگوی درخت حداکثر میزان آزادی را هنگام مدل سازی محدودیت های یک طرحواره فراهم می کند. این با هزینه بسیار کمی ارائه می شود: XPath در بیشتر محیط های XML در دسترس است. به عنوان مثال انواع زیر محدودیت سخت است یا بیان آن با سایر زبانهای طرحواره غیرممکن است.

مثال 2. نمونه هایی از محدودیت های "دشوار"

جایی که ویژگی X یک مقدار دارد ، ویژگی y نیز لازم است

جایی که والدین عنصر A عنصر B است ، باید یک ویژگی Y داشته باشد ، در غیر این صورت یک ویژگی z

مقدار عنصر P باید یا "foo" ، "نوار" یا "baz" باشد

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

دلایلی وجود دارد که باور داشته باشیم که اعتبار سنجی الگوی درخت ممکن است در محیطی مناسب تر باشد که اسناد از عناصر در چندین نام نام (که اغلب "جزایر داده" نامیده می شوند) مناسب تر باشند. از آنجا که بسیاری تصور می کنند که آینده مبادله سند XML در اینترنت شامل اختلاط قابل توجهی از واژگان خواهد بود ، یک رویکرد انعطاف پذیر ممکن است مزایای دیگری را به همراه آورد.

معرفی طرحواره

زمینه

Schematron [Schematron] یک زبان XML Schema است که توسط ریک جلیف در مرکز محاسبات Academia Sinica ، تایوان طراحی و اجرا شده است. این قابلیت های اعتبار سنجی قدرتمند را با یک نحو ساده و چارچوب اجرای ترکیب می کند. Schematron منبع باز است و (در زمان نوشتن) به Source Forge منتقل می شود تا بتواند پیشرفت خود را بهتر توسط جامعه ای که به سرعت در حال رشد کاربران است ، مدیریت کند.

Schematron اجداد خود را [jelliffe1999f] به طور غیرمستقیم از SGML DTD از طریق گرامرهای ادعایی [Raggett] ، باغ ها و مجموعه های خاص [Arciniegas] ردیابی می کند. یک بررسی اخیر از شش زبان فعلی طرحواره [لی] از این دیدگاه پشتیبانی می کند ، و این طرح را در رویکرد و قصد خود بی نظیر اعلام می کند. قبل از بحث در مورد جزئیات زبان Schematron ، ارزش آن را دارد که اهداف طراحی را که توسط نویسنده آن برجسته شده است ، بررسی کنید.

اهداف طراحی

چندین هدف وجود دارد که ریک جلیف که معتقد بودند در طول طراحی و مشخصات شماترون [Schematron] ، [Jelliffe2001] مهم بودند:

توضیحات زبان طبیعی از خرابی های اعتبار سنجی ، یعنی تشخیص و همچنین رد کردن

تمایز معتبر/نامعتبر باینری را که ذاتی سایر زبانهای طرحواره است ، رد کنید

هدف برای یک منحنی یادگیری کوتاه با لایه بندی بر روی ابزارهای موجود (XPATH و XSLT)

چیزهای بی اهمیت برای اجرای در بالای XSLT

معماری را فراهم کنید که خود را به محیط های توسعه GUI وام دهد

پشتیبانی از گردش کار با ارائه سیستمی که فازهایی را که از طریق آن یک سند در چرخه عمر خود عبور می کند ، می فهمد

موارد استفاده

Jelliffe همچنین پیشنهاد کرده است [Jelliffe2001] چندین محیط هدف که در آن شماترون برای افزودن ارزش قرار دارد:

اعتبار سنجی اسناد در مهندسی نرم افزار ، از طریق ارائه محدودیت های در هم تنیده

نمودارهای داده کاوی برای تحقیقات دانشگاهی یا کشف اطلاعات. محدودیت ها ممکن است به عنوان فرضیه هایی که در برابر داده های موجود آزمایش می شوند مشاهده شود

ایجاد خودکار نشانه های خارجی از طریق تشخیص الگوهای در داده ها و تولید پیوندها

به عنوان یک زبان طرحواره برای زبانهای نشانه گذاری "سخت" مانند RDF استفاده کنید.

دسترسی به اسناد ، با اجازه استفاده از محدودیت های استفاده در اسناد

چگونه کار می کند

اجرای Schematron از این مشاهدات ناشی می شود که اعتبار سنج های مبتنی بر الگوی درخت می توانند به صورت بی اهمیت ساخته شوند. به عنوان مثال ، یک صفحه شیوه ای ساده که آن را تأیید می کندخانهباید داشته باشددیوارS را می توان به شرح زیر تعریف کرد:

باید از موارد فوق آشکار باشد که اگر aخانههیچ چیزی ندارددیوارS ، یک پیام خطای ساده برای کاربر نمایش داده می شود.

Schematron این یک قدم طبیعی را با تعریف یک زبان طرحواره ای انجام می دهد که هنگامی که از طریق یک برگه متا (به عنوان مثال یک صفحه شیوه ای که سایر شیوه های شیوه ای ایجاد می کند) تبدیل می شود ، اعتبار سنجی XSLT را شبیه به موارد فوق تولید می کند. نمودار زیر این روند را خلاصه می کند.

شکل 1. تولید اعتبار سنج با استفاده از طرحواره

بنابراین Schematron یک لایه ساده بالاتر از XPATH و XSLT است که به آن اجازه می دهد تا ابزارهای موجود را اهرم کند و از چارچوبی که قبلاً برای توسعه دهندگان XSLT آشنا است بهره مند شود. با این حال ، از دیدگاه کاربر ، جزئیات XSLT پنهان است. کاربر نهایی فقط با عبارات XPath که برای تعریف محدودیت ها استفاده می شود ، نیاز دارد.

در بخش زیر زبان ادعا Schematron که برای تعریف طرحواره های شماترون استفاده می شود ، تشریح شده است. بخش آخر در مقاله ، اطلاعاتی در مورد اجرای طرحر (یعنی متاستیل شیت) ارائه می دهد که مورد توجه مجریانی که به دنبال سفارشی سازی طرحواره برای نیازهای خاص هستند ، مورد توجه قرار می گیرد.

زبان ادعای شماترون

در این بخش زبان ادعا Schematron که می تواند برای تولید اعتبار سنج های XSLT با استفاده از اجرای Schematron استفاده شود. همه نمونه های زیر با یک واژگان XML ساده که در بخش بعدی معرفی شده است مطابقت دارد.

DTD به عنوان مثال محتوا

نمونه های مورد استفاده در این بخش به یک زبان XML داستانی برای توصیف پروژه های ساختمانی اشاره می شود. در حالی که نمونه ها می توانستند از نظر یک زبان طرحواره موجود همراه باشند ، هدف این است که یک واژگان ساده تهیه کنیم که هیچ دانش قبلی را از طرف کاربر فرض نمی کند. باید تأکید کرد که ، در حالی که خود نمونه ها ممکن است بی اهمیت باشند ، این نباید برای نشان دادن محدودیت خاص در طرحواره ، که قادر به اجرای طرح های بسیار پیچیده تر است ، استفاده شود.

DTD زیر واژگان پروژه ساختمان را تعریف می کند:

مثال 3. زبان XML ساده برای اهداف مصور

این طرح به ما امکان می دهد خانه ای متشکل از تعدادی از دیوارها و سقف را توصیف کنیم. اگر خانه هنوز در دست ساخت باشد ، ممکن است سقف حضور نداشته باشد.

یک خانه دارای آدرس است که از نام خیابانی ، شهر و یک کدپستی تشکیل شده است.

یک خانه باید یا سازنده ای داشته باشد که در حال حاضر به ساخت و ساز خود اختصاص داده شود (و کلیه سازندگان باید مجوز بگیرند) یا یک مالک. تعداد صدور گواهینامه سازندگان و شماره تلفن صاحبان نیز برای اهداف سرپرست ثبت شده است.

یک نمونه نمونه نمونه مطابق با این طرح:

مثال 4. نمونه سند نمونه

عناصر اصلی: ادعا و گزارش

بلوک های اصلی ساختار زبان Schematron هستندادعا کردنوتگزارشعناصر. اینها محدودیت هایی را که در مجموع اساس یک طرحواره شماترون را تشکیل می دهند ، تعریف می کنند. محدودیت ها ادعاها (تست های بولی) است که در مورد الگوهای موجود در یک سند XML ساخته شده است. این الگوهای و تست ها با استفاده از عبارات XPath تعریف می شوند.

بهترین تصویر یک مثال ساده است:

مثال 5. یک ادعا ساده

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

اگر چهار دیوار وجود نداشته باشد ، ادعا از بین می رود و یک پیام ، محتوای آنادعا کردنعنصر ، به کاربر نمایش داده می شود.

بنابراین ادعا می کند به روش متعارف عمل می کند: اگر ادعای ارزیابی به کاذب برخی اقدامات انجام شود. درگزارشعنصر به روش مخالف کار می کند. اگر آزمون در یک عنصر گزارش به درست ارزیابی شود ، عمل انجام می شود.

در حالی که گزارش ها و ادعا ها به طور مؤثر معکوس یکدیگر هستند ، استفاده در نظر گرفته شده از دو عنصر کاملاً متفاوت است. یک ادعا برای آزمایش اینکه آیا یک سند با یک طرح خاص مطابقت دارد ، استفاده می شود و در صورت مواجه شدن با انحراف ، اقدامات ایجاد می کند. از گزارش برای برجسته کردن ویژگی های داده های اساسی استفاده می شود:

مثال 6. یک گزارش ساده

این تمایز ممکن است ظریف به نظر برسد ، به ویژه هنگامی که با محدودیتی که ممکن است به یک روش یا دیگری بیان شود ، ساده تر بیان شود. با این حال خود Schematron عملی را که باید در یک ادعا شکست خورده یا گزارش موفقیت آمیز انجام شود ، تعریف نمی کند ، این یک اجرای خاص است. رفتار پیش فرض این است که به سادگی پیام ارائه شده را در اختیار کاربر قرار دهید. یک اجرای ممکن است تصمیم بگیرد که این دو مورد را متفاوت انجام دهد.

شایان ذکر است که هنگام تعریف تست در مورد این عناصر ، معامله ای وجود دارد. در بعضی موارد ، یک بیان XPath پیچیده واحد ممکن است به طور دقیق محدودیت مورد نظر را ضبط کند. با این حال ، استفاده از چندین آزمایش کوچکتر که به طور جمعی همان محدودیت را توصیف می کنند ، به "روح" طراحی Schematron نزدیکتر است. تست های خاص می توانند با دقت بیشتری بازخورد را به کاربر ارائه دهند ، از یک آزمایش کلی و پیام مرتبط.

ادعا و گزارش عناصر ممکن است حاوی یک باشدنامعنصری که دارای یک ویژگی مسیر اختیاری است. این عنصر قبل از انتقال پیام به کاربر جایگزین نام عنصر فعلی خواهد شد. در صورت تهیه ویژگی مسیر باید حاوی بیان XPath باشد که یک عنصر جایگزین را ارجاع می دهد. این برای ارائه بازخورد اضافی به کاربر در مورد عنصر خاص که در صورت عدم ادعای وجود دارد ، مفید است.

Schematron 1. 5 ، که در ژانویه 2001 منتشر شد ، امکان ارائه اطلاعات تشخیصی دقیق را به کاربران اضافه می کند. پیام های ادعا و گزارش باید اظهارات اعلامیه ای ساده از آنچه هست یا باید باشد باشد. تشخیص می تواند شامل اطلاعات مفصلی باشد که می تواند مطابق با اجرای Schematron به کاربر ارائه شود. اطلاعات تشخیصی به طور جداگانه با محدودیت ها گروه بندی می شود و از یک ویژگی تشخیصی متقاطع است.

مثال 7. مثال تشخیصی

نوشتن قوانین

همانطور که قبلاً اشاره شد ، محدودیت ها باید در یک زمینه اعمال شوند. زمینه برای محدودیت ها با گروه بندی آنها برای شکل گیری تعریف می شودقانونs.

مثال 8. تعریف زمینه برای ادعاها

ویژگی زمینه برای aقانونحاوی یک بیان XPath است. این گره های نامزد را مشخص می کند که از آن محدودیت ها استفاده می شود. مثال فوق بررسی می کند که aخانهحاوی 4دیوارعناصر کودک ، و در صورت از دست دادن یک بازخورد به کاربر ارائه می دهدسقف.

Schematron 1. 5 یک مکانیسم کلان ساده را برای قوانینی اضافه کنید که هنگام ترکیب محدودیت ها مفید است. برای انجام این کار ، یک قاعده ممکن است به عنوان "انتزاعی" اعلام شود. محتوای این قانون ممکن است در صورت لزوم توسط سایر قوانین درج شود. این با استفاده ازتمدید کردنعنصر.

مثال 9. با استفاده از قوانین انتزاعی و عنصر گسترده

در مثال بالا یک قانون انتزاعی تعریف شده است و شناسه "namechecks" را اختصاص داده است. دو ادعا با این قانون انتزاعی همراه است: بررسی اینکه یک عنصر دارای نام اول و نام خانوادگی است. این ادعاها توسط سایر قوانین غیر انتزاعی وارد می شوند و همراه با سایر محدودیت های خاص برای آن عنصر اعمال می شود. یک قانون انتزاعی ممکن است حاوی عناصر ادعا و گزارش باشد اما نمی تواند زمینه ای داشته باشد. ادعاهای مربوط به یک قانون انتزاعی زمینه خود را از قانون واردات بدست می آورد.

تولید الگوها و طرحواره

مهمترین عنصر بعدی در یک طرحواره شماترون استالگوبشرالگوهای مجموعه ای از قوانین را جمع می کنند. یک طرح خاص ممکن است شامل چندین الگوی باشد که به طور منطقی محدودیت ها را گروه بندی می کنند.

مثال 10. قوانین گروه بندی با استفاده از الگوهای

یک الگوی باید یک نام داشته باشد و ممکن است با استفاده از URL به مستندات اضافی مراجعه کند. سپس یک اجرای Schematron می تواند پیوندی را به اسناد و مدارک پشتیبانی ارائه دهد.

الگوهای تعریف شده در یک طرح به صورت متوالی (به ترتیب واژگانی) اعمال می شود. گره های موجود در سند ورودی سپس در برابر زمینه های تعریف شده توسط قوانین موجود در هر الگوی مطابقت دارند. اگر یک گره با متن یک قانون خاص مطابقت داشته باشد ، پس از ادعاهایی که در آن وجود دارد اعمال می شود. در یک الگوی یک گره معین فقط با یک قانون واحد مطابقت دارد. قوانین در الگوهای جداگانه ممکن است با همان گره مطابقت داشته باشند ، اما فقط اولین مسابقه در یک الگوی اعمال می شود. نمونه ای از یک طرح نادرست در زیر آورده شده است.

مثال 11. استفاده نادرست از زمینه های قانون

باید هنگام تعریف زمینه ها مراقب باشید تا اطمینان حاصل شود که این شرایط هرگز بوجود نمی آید.

آخرین مرحله برای تعریف یک طرح شماترون ، پیچیده کردن همه چیز در یک استطرحعنصر.

مثال 12. الگوهای گروه بندی برای ایجاد یک طرحواره

چندین نکته در مورد طرح فوق وجود دارد. در مرحله اول ، فضای نام را برای اسناد Schematron معرفی می کند ، که "http://www.ascc. net/xml/schematron" است. ثانیا ممکن است یک طرح یک عنوان داشته باشد. این توصیه می شود

استفاده از فاز برای پشتیبانی از گردش کار

یک هدف طراحی Schematron پشتیبانی گردش کار است. Schematron با استفاده از مفهوم مراحل به این امر دست می یابد. یک فاز اجازه می دهد تا محدودیت ها با توجه به وضعیت یک سند در چرخه عمر خود اعمال شود.

یک طرح شماترون ممکن است هر تعداد فاز را تعریف کند ، جایی که یک فاز شامل پردازش یک یا چند الگوی است. این بدان معنی است که محدودیت ها به صورت انتخابی مطابق با مرحله فعال اعمال می شوند. شناسایی مرحله فعال یک مکانیسم خاص پیاده سازی است ، اما ممکن است از طریق آرگومان های خط فرمان به موتور XSLT انجام شود. یک طرح ممکن است یک مرحله پیش فرض را تعریف کند که در صورت عدم رعایت انتخاب شود.

مثال 13. تعیین مراحل

در مثال بالا ، دو مرحله برای اسناد XML مثال ما تعریف شده است. مرحله اول "زیرسازی" است و محدودیت هایی را که باید هنگام ساخت خانه باید بررسی شود ، ضبط می کند. این شامل بررسی می شود که برنامه های معماری دنبال می شوند (چهار دیوار وجود دارد!) و یک سازنده اختصاص داده شده است. مرحله دوم ("ساخته شده") محدودیت هایی را که پس از اتمام ساخت و ساز باید اجرا شود ، ضبط می کند. اینها بررسی می کنند که یک سقف در آن قرار گرفته است ، و خانه اکنون صاحب آن است.

توجه کنید که فاز پیش فرض توسط یک ویژگی در عنصر طرحواره تعریف شده است و هر الگوی دارای یک شناسه است. این شناسه ازفعالعناصر درون فردفازs. محدودیت های "بررسی های ساختمانی" فقط در مرحله "زیرسازی" اعمال می شود ، در حالی که "چک های اداری" در هر دو مرحله انجام می شود. یک مرحله فردی ممکن است حاوی هر تعداد الگوی فعال باشد. به طور پیش فرض تمام الگوهای موجود در یک طرح فعال هستند ، به عنوان مثالاگر هیچ مرحله ای تعریف نشده باشد.

مراحل یک رویکرد پویا برای اعتبارسنجی ارائه می دهد که نه تنها اجازه می دهد تا از محدودیت های مختلف در زمان های مختلف اعمال شود ، بلکه این احتمال وجود دارد که الگوهای فردی ممکن است مطابق دلخواه روشن و خاموش شوند. در سایر زبانهای طرحواره ای تنها راه برای پیوستن به این نوع اعتبار سنجی مرحله ای ، شل کردن محدودیت های طرحواره (پذیرش کمترین مخرج مشترک) ، یا استفاده از چندین طرح است که به طور جداگانه محدودیت ها را برای یک وضعیت خاص ضبط می کنند [Jelliffe1999c].

پیش بینی یک رابط کاربری GUI برای Schematron آسان است که به کاربر اجازه می دهد الگوهای فردی را که مایل به استفاده از آن برای یک سند است انتخاب کند. این امر در تنظیم محیط ها مفید است وقتی که یک سند به طور موقت در یک حالت نامعتبر [jelliffe1999d] وجود دارد ، اما کاربر می خواهد بررسی کند که جنبه های خاصی ، به عنوان مثال جداول در یک سند XHTML ، صحیح است.

یک طرح شماترون نمونه

این بخش شامل یک طرحواره کامل طرحواره ای برای مثال طرحواره های ساختمانی است که قبلاً معرفی شده است. طرح نمونه چند عنصر اضافی از زبان Schematron را که در بخش های قبلی پوشش داده نشده است ، معرفی می کند. اینها عناصر مستندات ساده ای برای نشانه های نشانه گذاری و غیره هستند که به طور یکسان با معادل XHTML خود عملکردی دارند. جزئیات بیشتر در مورد این عناصر را می توان در [Jelliffe2001] و [Zvon] یافت.

مثال 14. یک طرح کامل نمونه

اجرای طرحواره

در بخش های زیر مروری بر چارچوب XSLT ارائه شده است که معماری اساسی برای طرحواره را تشکیل می دهد. برخی از راهنمایی ها در مورد تولید پیاده سازی های سفارشی و نسخه های تجربی زبان Schematron ارائه شده است. زبان انطباق نیز معرفی شده است. این بخش با برخی از یادداشت ها در مورد پسوندهای احتمالی آینده به پایان می رسد.

چارچوب شماترون

همانطور که در شکل 1 نشان داده شده است ، Schematron به عنوان یک برگه متا استیل اجرا می شود که برای تولید یک صفحه سبک اعتبار سنج استفاده می شود. نقشه برداری از زبان ادعای به الگوها و توابع XSLT کاملاً بی اهمیت است.

جدول 1. نقشه برداری از عناصر شماترون هسته به XSLT

 

طرح ریزیxslt
ادعا کردنانتخاب کنید
گزارشIf
قانونقالب
الگومتمایزهای
N/Aالگوی ریشه

جدول فوق نشان می دهد که عناصر ادعا و گزارش بسیار ساده بر روی بلوک های کنترل XSLT قرار می گیرند. قوانین بر روی الگوهای XSLT جداگانه نقشه برداری می شوند که الگوی مطابقت آنها مستقیماً از متن مشخص شده توسط این قانون گرفته می شود. کلیه قوانینی که در یک الگوی واحد تعریف شده اند با همان حالت مشترک هستند و از یک مورد استفاده می شوندXSL: Apply-templatesعنصری که این حالت را مشخص می کند. یک واحدXSL: Apply-templatesبرای هر الگوی موجود در طرح تولید می شود. سایر عناصر شماترون به طور مشابه در عناصر XSLT و/یا توابع نقشه برداری می شوند.

اعتبار سنجی تولید شده توسط برگه پایه Schematron Base ، پیام های متنی ساده را برای کاربر در نتیجه ادعاهای ناموفق و گزارش های موفق تولید می کند. با استخراج یک اجرای سفارشی از صفحه پایه ، می توان این امر را تقویت کرد.

سفارشی سازی طرحواره

چارچوب Schematron از الگوی طراحی پیروی می کند که اغلب در محافل شی گرا به عنوان "الگوی هالیوود" گفته می شود (با ما تماس نگیرید ، ما با شما تماس خواهیم گرفت.). در اصل این بدان معنی است که چارچوب اصلی تعدادی قلاب را فراهم می کند که یک مجری می تواند برای پیوستن به کد سفارشی خود از آن استفاده کند. سپس این قلاب ها به طور خودکار توسط چارچوب مورد استفاده قرار می گیرند ، که کنترل پردازش را حفظ می کند.

این قلاب ها با استفاده از تعدادی از الگوهای نامگذاری شده ارائه می شوند در حالی که یک طرحواره شماترون را به یک برگه معتبر تبدیل می کنند. در بیشتر موارد ، نسخه های پیش فرض این الگوها در چارچوب ارائه شده است ، اما این موارد می توانند هنگام وارد کردن برگه پایه به یک اجرای سفارشی [XSLT] ، این موارد را نادیده بگیرند. در جدول زیر خلاصه ای از قلاب های پسوند اصلی ارائه شده است.

جدول 2. خلاصه قلاب های پسوند اصلی در چارچوب Schematron

 

نام الگواستفاده
فرایند فرایندیک بار در شروع تحول فراخوانده شد. پیاده سازی های سفارشی ممکن است این امر را نادیده بگیرند تا عناصر را به "پیش نویس" صفحه شیوه تولید شده اضافه کنند. برای افزودن اضافی مفید استXSL: وارداتوتXSL: متغیراعلامیه ها و غیره
ریشهیک بار در شروع تحول فراخوانده شد. پیاده سازی های سفارشی ممکن است این امر را تحت الشعاع قرار دهد تا الگوی ریشه را در صفحه شیوه تولید شده سفارشی کند. به طور پیش فرض این به سادگی حاوی یکی خواهد بودXSL: Apply-templatesعنصر برای هر الگوی.
پر رویک بار برای هرادعا کردندر طرح همسان است. اجرای پیش فرض به سادگی از الگوی پیام فرایند استفاده می کند (به تصویر زیر مراجعه کنید).
گزارش فرایندیک بار برای هرگزارشدر طرح همسان است. اجرای پیش فرض به سادگی از الگوی پیام فرایند استفاده می کند (به تصویر زیر مراجعه کنید).
نماد روندیک بار برای هرالگودر طرحپیاده سازی پیش فرض هیچ کاری نمی کند.
عملیک بار برای هرقانوندر طرحپیاده سازی پیش فرض هیچ کاری نمی کند.
عملفراخوانی شده توسط الگوهای فرآیند و گزارش فرآیند. اجرای پیش فرض به سادگی محتوای عادی عنصر را به خود اختصاص می دهد. به عنوان مثال. پیام موجود در یکادعا کردنعنصر. مفید برای نادیده گرفتن هنگامی که اجرای سفارشی مایل به درمان ادعاها و گزارش ها به طور یکسان است

این جدول لیستی جامع از تمام نقاط پسوند ممکن نیست. قلاب هایی برای اکثر عناصر در زبان Schematron وجود دارد ، اگرچه اکثر پسوندها شامل استفاده از الگوهای فوق هستند. بسیاری از این الگوها با تعدادی از پارامترهای حاصل از ویژگی های عنصر مبدأ فراخوانی می شوند. به عنوان مثال ، الگوی فرآیند Asert با چندین پارامتر از جمله مقدار ویژگی آزمون Assert و غیره فراخوانی می شود.

یک مثال ساده از اجرای سفارشی در زیر آورده شده است. این پیاده سازی به سادگی خروجی Schematron را به عنوان HTML به پایان می رساند تا خروجی را بیشتر چاپ کند.

مثال 15. نمونه بی اهمیت از اجرای طرحواره سفارشی

توسعه دهندگان علاقه مند ممکن است مایل به کشف راه های گسترش زبان Schematron خود باشند. باز هم ، این امر می تواند از طریق پسوندها به چارچوب اساسی حاصل شود. عناصر زبان جدید باید در فضای نام خود تعریف شوند تا به وضوح آنها را به عنوان اضافات معرفی کنند. الگوهای اضافی برای مطابقت و پردازش این برنامه های افزودنی زبان می توانند به یک اجرای سفارشی اضافه شوند.

زبان سازگاری شماترون

برای اطمینان از قابلیت همکاری بین پیاده سازی های Schematron ، آخرین نسخه به یک زبان انطباق ساده [انطباق] اضافه می کند که می تواند به عنوان پایه ای برای تولید مجموعه های تست استفاده شود. زبان انطباق ، خروجی مورد نظر از یک اعتبار سنج Schematron را به عنوان یک سری "رویدادها" ضبط می کند. یک ادعا شکست خورده یک رویداد است ، همانطور که یک گزارش موفق است.

ریک جلیف به چارچوب Schematron Base افزودنی تولید کرده است که باعث ایجاد اعتبار سنجی می شود که خروجی آنها یک سند زبان سازگار است. این بدان معنی است که با توجه به یک طرحواره و یک سند ورودی نمونه ، خروجی فرآیند اعتبار سنجی می تواند به صورت متعارف ضبط شود. همان طرحواره ، سند ورودی و خروجی تولید شده می تواند برای آزمایش اینکه آیا اجرای Schematron دوم همان خروجی را تولید می کند ، استفاده شود.

یک سند زبان سازگار با نمونه در زیر ارائه شده است.

مثال 16. نمونه اسناد زبان سازگار

زبان سازگاری در اطمینان از قابلیت همکاری بین پیاده سازی ها مفید خواهد بود. در حالی که XSLT بستر اجرای هدف برای Schematron است ، در صورت موجود بودن کتابخانه های مناسب XPATH ، هیچ کاری برای جلوگیری از اجرای جاوا وجود ندارد. نسخه Perl از Schematron قبلاً اجرا شده است.

موتور XSLT هدف فعلی برای Schematron XT است تا اطمینان حاصل شود که با وسیع ترین طیف پردازنده ها سازگار است. این امر اجرای را به امکاناتی که XT از آن پشتیبانی می کند محدود می کند: در حال حاضر XT پشتیبانی نمی کندکلیدها ()مثلا.

دستورالعمل های آینده

با توجه به قابلیت گسترش Schematron و سهولت ادغام آن با ابزارهای XML موجود ، ارزش دارد که برخی از مسیرهای آینده ممکن را در نظر بگیرید.

پشتیبانی RDDL

لیست پستی XML-DEV اخیراً [DODDS] پروژه ای را برای تعریف یک واژگان XML برای توصیف دامنه منابعی که می تواند با یک فضای نام XML همراه باشد ، آغاز شده است. منابع توصیف کشف منابع [RDDL] پسوند XHTML BASIC [XHTML] است به این معنی که در حالی که منابع را به صورت قابل پردازش دستگاه لیست می کند ، اسناد RDDL نیز قابل خواندن است. جالب خواهد بود که طرحواره را گسترش دهیم تا آن را "Aware" ایجاد کند.

اسناد RDDL در نظر گرفته شده است که در URL مرتبط با یک فضای نام XML [XMLNAMEs] قرار داده شود. از نظر تئوری ، می توان به Schematron اجازه داد تا این اسناد را در طول اعتبار سنجی بازیابی کند و بررسی کند که آیا اعتبار سنج های خاص دیگر ، فضای نام دیگری در دسترس هستند. اگر چنین است ، می توان از این اعتبار سنج ها نیز استفاده کرد. در اصل این امر به Schematron اجازه می دهد تا یک سند ورودی متشکل از عناصر تعدادی از نام های نام را بپذیرد و سپس شماتای اضافی را به طور خودکار از اینترنت بازیابی کند.

تایپ داده ها

در حالی که Schematron پشتیبانی زیادی از انواع داده ها فراتر از رشته های اساسی ، گره ها و اعداد [Jelliffe2000] ارائه نمی دهد ، می توان با استفاده از مکانیسم های موجود ، انواع اضافی [لی] را شبیه سازی کرد. به عنوان مثال می توان محدودیت هایی را بیان کرد که محدوده های مجاز برای اعداد ، یا تأیید اینکه ویژگی و محتوای عنصر با مجموعه ای از مقادیر ذکر شده مطابقت دارد. استفاده از تابع XPath Document () حتی امکان بررسی مقادیر ذکر شده موجود در یک سند خارجی (که ممکن است خود به صورت پویا در صورت درخواست تولید شود) امکان پذیر است.

اساساً اگرچه انواع داده ها یک نهاد درجه یک در زبان Schematron نیستند. با این حال ، دستکاری و بررسی نوع داده می تواند از طریق استفاده از توابع استاندارد پسوند XSLT به Schematron اضافه شود. یک تمرین بالقوه مفید تعریف مجموعه ای از کارکردهای مفید "تجارت" است که بررسی نوع پیچیده تری را انجام می دهند. البته اگر دانش انواع داده ها به XPATH اضافه شود ، Schematron این را مستقیماً به ارث می برد. در واقع هرگونه اضافی در XPATH و XSLT باید به دلیل لایه بندی ساده آن ، بلافاصله از Schematron بهره مند شود.

یک GUI Schematron

یک هدف طراحی برجسته این است که اجازه دهید Schematron به راحتی در یک محیط GUI اجرا شود ، به عنوان مثال. XML IDE. الگوهای ، ادعا ها و گزارش ها ممکن است همه آیکون های مرتبط داشته باشند و پیام های مفصلی را می توان با استفاده از عناصر تشخیصی ارائه داد. توانایی فعال سازی و غیرفعال کردن الگوهای فردی در یک طرحواره قبلاً به عنوان یک ویژگی مفید در تنظیم محیط ها برجسته شده است.

اجرای یک رابط کاربری که از این ویژگی ها بهره برداری می کند ، پروژه جالب خواهد بود. این ممکن است که یک IDE XML موجود که شامل پشتیبانی از اسکریپت و/یا XSLT است ممکن است چارچوبی برای این توسعه فراهم کند. آن موتورهای XSLT که تعداد خط های سبک emacs و/یا vi را در آنها ارائه می دهندXSL: پیامخروجی در این زمینه به ویژه مفید خواهد بود و به کاربران امکان می دهد مستقیماً به منشأ پیام اعتبار سنجی مشخص بپردازند.

نمونه موجود ، گزارش Schematron-Report ، یک برنامه ریزی سفارشی است که گزارش HTML دو صفحه ای را به عنوان خروجی آن تولید می کند. خروجی اعتبار سنجی در یک قاب موجود است ، در حالی که نشانه اصلی در دیگری نمایش داده می شود. پیام های اعتبار سنجی به طور مستقیم با عناصر موجود در نشانه اصلی مرتبط هستند.

همگرایی با زبانهای پرس و جو XML

اعتبار سنجی مبتنی بر الگوی درخت قبلاً به عنوان یک فرآیند شناسایی دو مرحله ای و سپس ادعای مشخص شده است. در حال حاضر Schematron برای بیان هر دو مرحله به XPath متکی است. با این حال پروژه هایی وجود دارند که در حال حاضر تعریف یک زبان پرس و جو برای اسناد XML را بررسی می کنند. هنگامی که این پروژه ها میوه می گیرند ، می توان از چنین زبانی به عنوان جایگزینی برای XPath در شناسایی اشیاء نامزد برای اعتبار سنجی استفاده کرد.

در حالی که ممکن است مزایای مستقیمی برای برنامه های اعتبار سنجی وجود نداشته باشد ، در حوزه داده کاوی و تولید خودکار نشانه گذاری (هر دو مورد استفاده برای طرحواره) ممکن است مزایای بسیاری وجود داشته باشد.

نتیجه گیری

Schematron در بین زبانهای طرحواره فعلی در واگرایی خود از الگوی دستور زبان معمولی و رویکرد کاربر محور آن بی نظیر است.

Schematron به عنوان جایگزینی برای سایر زبانهای طرحواره نیست. انتظار نمی رود که به راحتی بر روی طرح های پایگاه داده یا سازه های زبان برنامه نویسی قابل استفاده باشد. این یک زبان ساده و آسان برای یادگیری است که می تواند علاوه بر سایر ابزارهای موجود در ابزار توسعه دهندگان XML ، عملکردهای مفیدی را نیز انجام دهد.

این همچنین ابزاری با سربار کوچک ، هم از نظر منحنی یادگیری و هم نیازهای آن است. موتورهای XSLT در هر چارچوب برنامه XML به طور منظم اجزای منظم هستند. استفاده از Schematrons از XPATH و XSLT آن را فوراً برای توسعه دهندگان XML آشنا می کند.

یک مزیت قابل توجه Schematron توانایی تولید سریع طرحوارهایی است که می تواند برای اجرای قوانین سبک خانه و مهمتر از همه دستورالعمل های دسترسی بدون تغییر در طرحواره ای که یک سند با آن مطابقت دارد ، استفاده شود. یک سند XHTML هنوز یک سند XHTML است حتی اگر دستورالعمل های ابتکار دسترسی به وب را برآورده نکند [WAI]. این نوع محدودیت ها سیاستی را توصیف می کند که باید بر روی یک سند اجرا شود و از این رو می توان بالاتر از سایر زبانهای طرحواره ای قرار گرفت. در واقع در بسیاری از موارد ممکن است برای سایر زبانها آزمایش این نوع محدودیت ها غیرممکن باشد.

بهترین بروکر فارکس...
ما را در سایت بهترین بروکر فارکس دنبال می کنید

برچسب : نویسنده : داریوش اسدزاده بازدید : 64 تاريخ : دوشنبه 7 فروردين 1402 ساعت: 16:40