RELAX NG - RELAX NG

RELAX NG
Fayl nomi kengaytmasi
.rng
Internet-media turi
application / xml, text / xml
Format turiXML sxemasi tili
KengaytirilganXML

Yilda hisoblash, RELAX NG (XML Keyingi avlod uchun odatiy til) a sxema uchun til XML —RELAX NG sxemasi XML hujjatining tuzilishi va mazmuni namunasini belgilaydi. RELAX NG sxemasi o'zi XML hujjat, lekin RELAX NG shuningdek mashhur XML bo'lmagan ixcham sintaksisini taqdim etadi.[1] Boshqalar bilan taqqoslaganda XML sxemasi tillari RELAX NG nisbatan sodda hisoblanadi.

Bu qo'mitaning spetsifikatsiyasi bilan aniqlangan OASIS 2001 va 2002 yillarda RELAX NG texnik qo'mitasi Murata Makoto "s ROHATLANING va Jeyms Klark "s TREX,[2][3][4] xalqaro standartning ikkinchi qismi bo'yicha ISO /IEC 19757: Hujjatlar sxemasini aniqlash tillari (DSDL ).[5][6] ISO / IEC 19757-2 tomonidan ishlab chiqilgan ISO / IEC JTC1 / SC34 va birinchi versiyasida 2003 yilda nashr etilgan.[7]

Sxema misollari

Deylik, biz kitob uchun juda oddiy XML formatlash sxemasini belgilamoqchimiz: kitob bir yoki bir nechta sahifalardan iborat ketma-ketlik sifatida tavsiflanadi; har bir sahifada faqat matn mavjud. XML hujjat namunasi quyidagicha bo'lishi mumkin:

<book>  <page>Bu birinchi sahifa.</page>  <page>Bu ikkinchi sahifa.</page></book>

XML sintaksisi

RELAX NG sxemasi o'z ichiga o'rnatilgan ta'riflarni o'z ichiga olishi mumkin bo'lgan boshqa element ta'riflarini o'z ichiga olgan ildiz elementini belgilash orqali ichki tuzilishda yozilishi mumkin. To'liq XML sintaksisidan foydalangan holda ushbu uslubdagi kitobimiz uchun sxema yoziladi:

 ism ="kitob" xmlns ="http://relaxng.org/ns/structure/1.0">   <oneOrMore>       ism ="sahifa">         <text/>      </element>   </oneOrMore></element>

Ichki tuzilma ko'plab pastki sathlarda bemalol bo'lib qoladi va rekursiv elementlarni aniqlay olmaydi, shuning uchun eng murakkab RELAX NG sxemalari havolalardan foydalanadi nomlangan naqsh sxemada alohida joylashgan ta'riflar. Bu erda "tekislangan sxema" avvalgi misol bilan aniq bir xil kitob belgilashini belgilaydi:

 xmlns ="http://relaxng.org/ns/structure/1.0">   <start>       ism ="kitob">         <oneOrMore>             ism ="sahifa"/>         </oneOrMore>      </element>   </start>    ism ="sahifa">       ism ="sahifa">         <text/>      </element>   </define></grammar>

Yilni sintaksis

RELAX NG ixcham sintaksisi - bu ilhomlangan XML bo'lmagan format kengaytirilgan Backus-Naur shakli va doimiy iboralar, xuddi shunday tarzda tuzilgan va ma'no jihatidan bittadan yozishmalar bilan, xuddi shu tarzda XML hamkasbiga birma-bir tarjima qilinishi va yana qaytarilishi uchun yaratilgan. Oddiy kontur XML (SOX) bilan bog'liq XML. Bu sintaksis bilan ko'plab xususiyatlarni baham ko'radi DTDlar. Yuqoridagi sxemaning ixcham shakli:

element kitob {    element sahifa { matn }+}

Nomlangan naqshlar bilan quyidagilarni tekislash mumkin:

boshlang = element kitob { sahifa + }sahifa = element sahifa { matn }

Yilni RELAX NG tahlilchisi bu ikkalasini bir xil naqsh sifatida ko'rib chiqadi.

W3C XML sxemasi bilan taqqoslash

Garchi RELAX NG spetsifikatsiyasi taxminan W3C bilan bir vaqtda ishlab chiqilgan bo'lsa-da XML sxemasi spetsifikatsiyasi, ikkinchisi, shubhasiz, 2001 yilda W3C tavsiyasiga aylanganda, ochiq manbali va xususiy XML tahlilchilarida va tahrirlovchilarida yaxshi tanilgan va kengroq tatbiq etilgan. Shu vaqtdan beri RELAX NG ko'magi tobora ko'proq XML dasturiy ta'minotiga kirib bordi va kabi hujjatlarga asoslangan mashhur markalash tillari uchun asosiy sxema sifatida qabul qilinishi yordam berdi DocBook, TEI Ko'rsatmalar, OpenDocument va EPUB.

RELAX NG W3C XML sxemasi bilan ikkalasini ham an'anaviylikdan ajratib turadigan ko'plab xususiyatlarga ega DTDlar: ma'lumotlarni yozish, doimiy ifoda qo'llab-quvvatlash, ism maydoni qo'llab-quvvatlash, murakkab ta'riflarga murojaat qilish qobiliyati.

Fayl nomi kengaytmalari

Norasmiy konvensiya bo'yicha odatiy sintaksisdagi RELAX NG sxemalari odatda fayl nomini kengaytirish ".rng". Yilni sintaksisdagi sxemalar uchun ".rnc" kengaytmasi ishlatiladi.

Determinizm

Relax NG sxemalari shart emas "deterministik" yoki "aniq".

Relax NG-ni DTD-ga aylantirish

Relax NG sxemalarini qo'llash orqali DTDlarga aylantirish mumkin Trang topishingiz mumkin: [1]. Trang uchun qo'llanma joylashgan [2]. Trang-ni o'zgartira olmasligini unutmang OASIS DITA 1.3 DTD-larga sxemasi, quyidagi kabi xabarlar ishlamay qolmoqda:

 Kechirasiz, ta'riflarni Combine = "choice" bilan birlashtirish qo'llab-quvvatlanmaydi

Shuningdek qarang

Adabiyotlar

  1. ^ RELAX NG ixcham sintaksis
  2. ^ Jeyms Klark. "TREX - XML ​​uchun daraxtning muntazam ifodalari -" TREX RELAX bilan birlashtirilib, RELAX NG ni yaratdi."". Olingan 2009-12-28.
  3. ^ Murata Makoto (2002-04-03). "RELAX (XML uchun odatiy til tavsifi) -" OASIS ning RELAX NG. Bu RELAX Core va TREX-ni birlashtirish orqali yaratilgan sxema tili."". Olingan 2009-12-28.
  4. ^ "TREX va RELAX Unified RELAX NG, engil XML tilini tasdiqlash spetsifikatsiyasi". Muqova sahifalari. 2001-06-05. Olingan 2009-12-28.
  5. ^ RELAX NG spetsifikatsiyasi
  6. ^ RELAX NG Texnik qo'mitasi
  7. ^ ISO. "ISO / IEC 19757-2: 2003 - Axborot texnologiyalari - Hujjatlar sxemasini aniqlash tili (DSDL) - 2 qism: Muntazam grammatikaga asoslangan tasdiqlash - RELAX NG". ISO. Olingan 2009-12-28.

Tashqi havolalar