فهرست XSD از مقادیر احتمالی. محدودیت ها یا چهره ها برای مقادیر در طرح XML

محدودیت ها برای تعیین مقادیر قابل قبول برای عناصر XML یا ویژگی ها استفاده می شود. محدودیت های عناصر XML نیز "جنبه ها" نامیده می شود.

محدودیت ها به معنی

سن."با محدودیت. در این عنصر، تصور می شود که سن یک فرد را نشان می دهد و سن یک فرد، همانطور که شناخته شده است، نمی تواند کمتر از 0 و بیش از 120 باشد:

محدودیت در مجموعه ارزش ها

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

مثال زیر عنصر را تعیین می کند " ماشین"با محدودیت. تنها مقادیر قابل قبول آن - آئودی، گلف، BMW:

مثال بالا نیز می تواند به شرح زیر نوشته شود:

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

محدودیت ها در یک سری از ارزش ها

برای محدود کردن محتویات عنصر XML یک سری از اعداد یا حروف، باید از محدودیت الگوی استفاده کنید.

مثال زیر عنصر را تعیین می کند " حرف."با محدودیت. تنها مقدار مجاز آن می تواند یک حرف در حروف کوچک در محدوده" A "به" Z "باشد:

مثال زیر عنصر "حروف اول" را با محدودیت تعیین می کند. تنها ارزش مجاز آن می تواند سه حرف در حروف بزرگ در محدوده "A" به "Z" باشد:

حروف اول"با محدودیت. تنها مقدار مجاز آن می تواند سه حرف در حروف پایین تر یا بزرگ در محدوده" A "به" Z "باشد:

مثال زیر عنصر را تعیین می کند " انتخاب"با محدودیت. تنها مقدار مجاز آن می تواند یک حرف از سه باشد: x، y یا z:

مثال زیر عنصر را تعیین می کند " پر از"با محدودیت. تنها مقدار مجاز آن می تواند پنج رقم متوالی باشد، و هر رقم باید در محدوده 0 تا 9 باشد:

محدودیت های دیگر در یک سری از ارزش ها

مثال زیر عنصر را تعیین می کند " حرف."با محدودیت مقدار معتبر آن صفر یا بیشتر حروف در حروف کوچک در محدوده A تا Z است:

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

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

مثال زیر عنصر را تعیین می کند " کلمه عبور."با محدودیت مقدار آن باید یک رشته از 8 کاراکتر باشد، و این نمادها می توانند حروف در ثبت نام پایین تر یا بالاتر از A به Z یا اعداد از 0 تا 9 باشد:

محدودیت نماد کور

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

مثال زیر عنصر را تعیین می کند " نشانی فضای خالی به " prereserve "، چه چیزی نشان می دهد تجزیه XML برای حذف هر شخصیت فضایی نیست:

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

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

محدودیت طول

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

مثال زیر عنصر را تعیین می کند " کلمه عبور."با محدودیت. طول مقدار آن باید دقیقا 8 کاراکتر باشد:

مثال زیر عنصر دیگری را تعیین می کند " کلمه عبور."با محدودیت طول مقدار آن باید حداقل 5 و حداکثر 8 کاراکتر باشد:

محدودیت ها برای انواع داده ها

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

در زندگی هر یک از تجزیه و تحلیل ها و برنامه نویس چنین روزی می آید زمانی که او در مورد وجود قالب ها (الگوها) طراحی طرح های XML و زندگی آن تغییر می کند. برای مثال، این دانش شروع به درک زیبایی طراحی کرد.

امروز من می خواهم در مورد چگونگی طراحی XSD طراحی، در مورد مزایا و معایب هر کدام، و به همین دلیل ما "باغ بهشت" را برای وظایف خود انتخاب کردیم.

به عنوان مثال، سند XML زیر را به عنوان یک منبع داده انتخاب کنید.

100 قله orlov

Ugreshskaya 2. مسکو 115088

و بیایید ببینیم چگونه می توانید همان ساختار سند XML را به روش های مختلف توصیف کنید.
تقسیم بر قالب ها بر اساس اصل تعریف عناصر جهانی و / یا نوع داده ها در داخل XSD است.

Matryoshka (عروسک روسی)


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

طرح توصیف ساختار فایل منبع ما با استفاده از قالب Matryoska به نظر می رسد مانند این است:


ویژگی های الگو:

  • محتوای Opacity. محتوای XSD برای طرح های دیگر مبهم است و حتی برای سایر قسمت های مشابه طرح. به عنوان یک نتیجه، هیچ یک از انواع یا عناصر داخل XSD را می توان دوباره استفاده کرد.
  • مناطق پنهان منطقه طرح که در آن عناصر محلی تعریف می شوند ("شهر" و "Zip" در مثال) در داخل عنصر ریشه ("آدرس") محلی شده اند. به عنوان یک نتیجه، اگر شما در طرح ElementFormDefault \u003d "Unqualified" مشخص شده، فضای نامی از عناصر محلی ("شهر" و "ZIP") در طرح پنهان شده است.
  • استقلال. با چنین طراحی، هر جزء طرح مستقل است (I.E. با سایر اجزای دیگر ارتباط برقرار نمی کند). در نتیجه، تغییرات در اجزای فردی اثر محدودی دارد. به عنوان مثال، اگر اضافه کردن یک عنصر "flatnumber"، آن را بر سایر عناصر مدار تاثیر نمی گذارد.
  • فشرده سازی با تشکر از چنین طراحی، تمام داده های مربوط به معنی در طرح در اجزای خودمختار، I.E. اجزاء جمع و جور هستند.

تکه سالامی


ماهیت الگو این است که سند XML توصیف شده به عناصر جزء تقسیم شده است، که هر کدام در XSD به عنوان جهانی شرح داده شده است. سپس عناصر توصیف شده با هم متصل می شوند.

نمودار توصیف ساختار فایل منبع با استفاده از قالب Salami به نظر می رسد مانند این است:


ویژگی های الگو:

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

پرده های ونیزی (کور ونیزی)


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

طرح توصیف ساختار فایل منبع با استفاده از قالب کور ونیزی به نظر می رسد مانند این است:


ویژگی های الگو:

  • محتوای شفافیت. انواع داده ها از طرح های دیگر قابل مشاهده هستند، و همچنین اجزای قابل مشاهده این XSD.
  • حداکثر نام مخفی اطلاعیه های عناصر محلی هستند، بنابراین الگو حداکثر پتانسیل را برای پنهان کردن نام ها دارد.
  • کنترل ساده پنهان کردن ویژگی های خالی. اگر فضای نام ها پنهان شوند، پس از آن نشان داده شده یا هیچ ویژگی خالی در اسناد توسط یک سوئیچ ElementFormDefault کنترل می شود.
  • وابستگی متقابل با چنین طراحی، انواع داده های پیچیده به بخش های دیگر طرح اشاره می شود، یعنی بستگی به آنها دارد. در نتیجه، تغییر در اجزای فردی ممکن است تغییرات گسترده در کل طرح را شامل شود.
  • فشرده سازی با تشکر از چنین طراحی، تمام اطلاعات مربوط به معنی در طرح در اجزای خودمختار ترکیب شده است، به عنوان مثال، اجزاء جمع و جور هستند.

باغ بهشت \u200b\u200b(باغ عدن)


"باغ بهشت" خوب است که هر نوع عنصر و نوع داده کامپوزیت را به عنوان جهانی تعریف می کند. این به شما اجازه می دهد تا به هر نوع یا عنصر در یک XSD یا از هر XSD دیگر و حتی از WSDL مراجعه کنید. فقط می توان به طور کامل توسط معناشناسی و انواع و عناصر کنترل می شود.

طرح توصیف ساختار فایل منبع با استفاده از قالب باغ بهشت \u200b\u200bبه نظر می رسد مانند این:


ویژگی های الگو:

  • حداکثر شفافیت محتوا هر دو نوع و عناصر داده از طرح های دیگر و همچنین اجزای قابل مشاهده این XSD قابل مشاهده است.
  • حداکثر افشای نام هیچ چیز محلی تعیین نمی شود، بنابراین دید حداکثر نام ها.
  • وابستگی متقابل با چنین طراحی، انواع داده های پیچیده و عناصر به بخش های دیگر طرح اشاره می شود، یعنی بستگی به آنها دارد. در نتیجه، تغییر در اجزای فردی ممکن است تغییرات گسترده در کل طرح را شامل شود.
  • انفجار جزئیات مرتبط با "تعریف" با تعریف نوع و عنصر. "خواندن" چنین طرح مشکل تر است.

انتخاب قالب

هنگام انتخاب یک قالب، مهم است که چندین معیار را در نظر بگیرید:
  1. تا آنجا که ممکن است برای استفاده مجدد از اجزای طرح؛
  2. چقدر آسان است که با طرح کار کنیم؛
  3. تا آنجا که مولفه های طرح باید مستقل یا مستقل باشد.

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

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

به طور کلی، شما می توانید قوانین انتخاب قالب زیر را لغو کنید:

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

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

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

و در نتیجه من می خواهم اضافه کنم که مخلوط قالب ها نیز ممکن است، ما با آنها ملاقات کردیم.

منابع و منابع.

1. ایجاد یک سند XML Shema حاوی انواع داده های داخلی به هر موضوع

نمایش یک سند در مرورگر

آزمایشگاه شماره 2.

تعیین انواع داده های ساده و فضای نام

هدف از کار:

انواع داده های ساده XMLShema و فضای نام را بررسی کنید

پیش رفتن:

در طرح های XML، با استفاده از انواع جاسازی شده، شما می توانید سه راه برای شناسایی انواع جدیدی از موارد ساده داشته باشید. آنها وارد شده اند محدود کردن(محدودیت) نوع ساده یا قبلا تعریف شده، فهرست(فهرست) یا یک انجمن(اتحادیه) انواع ساده. یک نوع ساده توسط کامپوننت Schema Simpietype تعیین می شود

تعریف نوع

· حفظ

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

شما می توانید تعریف دیگری از نوع ZIP ساده را به عنوان یک عدد کامل مثبت که در محدوده 100،000 تا 999999 قرار دارد، ارائه دهید:

  • فهرست

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

21 34 55 4 6

این لیست توسط جزء لیست تعیین می شود که در آن ویژگی itemType نشان می دهد نوع آیتم های لیست لیست تعریف شده است. نوع مورد لیست را می توان در محتویات عنصر لیست تعریف کرد. به عنوان مثال، عنصر سند XML روزهای نشان داده شده در بالا می تواند در نمودار مانند این تعریف شود:

و هنگام تعیین نوع Listofinteger نوع به عنوان لیست استفاده می شود

نه بیش از پنج عدد صحیح به شرح زیر است:

· یک انجمن

یک ترکیب ساده ساده توسط جزء اتحادیه تعیین می شود که در آن ویژگی های اعضا می تواند توسط نام انواع یونایتد مشخص شود. مثلا:

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

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

فضای نامی XSD

اسامی عناصر و ویژگی های مورد استفاده در هنگام نوشتن طرح ها در فضای نام با شناسه http://wwww.w3.org/2001/xmlschema تعریف شده است. پیشوند اسامی مربوط به این فضا اغلب XS یا XSD نامیده می شود.

شما می توانید این فضای نام فضای نام را به طور پیش فرض ایجاد کنید، اما پس از آن شما نیاز به تنظیم فضای نام برای انواع و اقلام تعریف شده در طرح را تنظیم کنید. برای راحتی چنین تعریف، مفهوم نام هدف(فضای نام هدف). شناسه نام فضای نام هدف توسط ویژگی TargetTiamEpace تعیین می شود، به عنوان مثال:

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

در طرح ها و اسناد XML، یک فضای نام استاندارد دیگر استفاده می شود. توصیه های زبان XSD چندین ویژگی را تعریف می کند:

نوع، نیل، shemalocation، nonamespaceschemalocation، که استفاده می شود

نه تنها در طرح ها، بلکه به طور مستقیم در این طرح ها توضیح داده شده است

xML بچه ها نامیده می شوند طرح های کپی(XML طرح طرح). آنها در این ویژگی ها به فضای نامی http://www.w3.org/2001/xmlschema-instance هستند. این فضای نامی که اغلب به پیشوند XSI مربوط می شود، به عنوان مثال:

xmins: XSI \u003d "http://www.w3.org/2001/xmlschema-instance"\u003e

یک سند XMLShema را با انواع داده های ساده و فضاهای فضایی ایجاد کنید، موارد زیر را انجام دهید:

  1. یک فایل جدید را در ویرایشگر متن خود باز کنید و متن سند XMLShema را وارد کنید، که در زیر ارائه شده است.

xMLNS: XSI \u003d "http://www.w3.org/2001/xmlschema-instance"\u003e

  1. از دستور Save Text Editor استفاده کنید تا سند را بر روی هارد دیسک خود ذخیره کنید، نام prosttip.xsd را اختصاص دهید
  2. فایل را در مرورگر خود باز کنید و شما نادرست هستید که در شکل 3.1 ارائه شده است

شکل 3.1

آزمایشگاه شماره 3.

XSD - این توصیف زبان زبان سند XML است. همچنین Schema XML نامیده می شود. هنگام استفاده از XML Schema XML، تجزیه کننده می تواند نه تنها صحت نحو سند XML، بلکه ساختار آن، مدل محتوا و انواع داده ها را بررسی کند.

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

علاوه بر این، XSD در حال گسترش است و اجازه می دهد تا شما را به اتصال واژهنامه های آماده شده برای توصیف وظایف معمول، مانند خدمات وب، مانند SOAP.

همچنین لازم به ذکر است که XSD دارای ابزار مستند سازی داخلی است که به شما امکان می دهد اسناد خودکفا را ایجاد کنید که نیازی به توضیحات اضافی ندارند.

به عنوان مثال سند XSD نمونه ای را که بخشی از ساختار حساب را در هابر توصیف می کند، در نظر بگیرید.

Schema XSD متن و سند XML مربوط به این طرح من به دلیل اندازه آنها در مقاله قرار نگرفت.

اولین خط نمودار نشان می دهد که سند است سند XML و از رمزگذاری UTF-8 استفاده می کند.


از خط بعدی، شرح عنصر اصلی سند شروع می شود - habra_user..
< xs:element name ="habra_user" >
خطوط مستند سازی عناصر:
< xs:annotation >
< xs:documentation > عنصر اصلی طرح. کاربر Haba را توصیف می کند

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

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

عنصر تاریخ تولد این نوع داده "تاریخ" را دارد و تاریخ تولد را توصیف می کند.

تاریخ ثبت نام توضیح می دهد ثبت نامداشتن نوع داده خود را customdatetetime. مقدار این برچسب با استفاده از ویژگی تنظیم می شود. مقدار. این خطوط را مشخص می کند.

< xs:attribute name ="value" use ="required" >
در این مورد، ویژگی اجباری است. به طوری که ارزش مربوط به الزامات توصیف "چک" است:
< xs:simpleType >
< xs:restriction base ="xs:string" >
< xs:length value ="19" />
< xs:pattern value ="-- ::" />


در این مورد، طول رشته همیشه 19 خواهد بود، این توسط برچسب تنظیم شده است و ارزش خود را به قالب مشخص شده در برچسب مطابقت دارد .

عناصر اطلاعات تماس. و وبلاگ. - آرایه ها، ویژگی نشان می دهد maxoccars \u003d "غیرقابل قبول".

تگ این واقعیت را تعریف می کند که عنصر تودهای یکی از عناصر ICQ یا LinkedIn خواهد بود.

تگ نشان می دهد که عناصر تونیک خواهند بود blog_name و blog_url این در چنین توالی است. اگر توالی مهم نیست، باید از برچسب استفاده کنید .