Relaxați-vă NG

Relax NG ( Re gular nguage pentru X ML N ext G utilizare generație) este o descriere document de limbaj XML care rezultă din fuziune Trex de James Clark si Relax Murata Makoto. Considerat ca o alternativă la schema XML , este un dialect XML care face posibilă definirea precisă a diferitelor constrângeri care determină clasa documentelor XML care pot trece etapa de validare . Există, de asemenea, o sintaxă compactă, non-XML.

Relax NG specifică doar structura documentelor XML (ce elemente, cum să le combine), fără a avea grijă de valoarea elementelor (de exemplu, faptul că conținutul unui element trebuie să fie neapărat o dată sau altfel neapărat să fie un zece șir de caractere). Această verificare a valorii elementelor este subcontractată bibliotecii de tip XML Schema (care se face automat de procesorul Relax NG).

Liderul acestui proiect este James Clark, deja recunoscut pentru munca sa în SGML , în special pe analizorul nsgmls .

Relax NG este specificat de OASIS și face parte din standardul Document Schema Definition Languages (DSDL) al standardului ISO / IEC 19757-2.

Relax NG este utilizat pentru a specifica OpenDocument , Atom și DocBook de la versiunea 5.

Exemplu

Iată un exemplu de fișier Relax NG (în sintaxă compactă, pentru ochi):

start = personne personne = element personne {nom & prenom & date_naissance?} nom = element nom {text} prenom = element prenom {text} date_naissance = element date_naissance {xsd:date}

și același lucru în sintaxa XML (observăm referința la tipurile de schemă XML ):

<?xml version="1.0" encoding="UTF-8"?> <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <start> <ref name="personne"/> </start> <define name="personne"> <element name="personne"> <interleave> <ref name="nom"/> <ref name="prenom"/> <optional> <ref name="date_naissance"/> </optional> </interleave> </element> </define> <define name="nom"> <element name="nom"> <text/> </element> </define> <define name="prenom"> <element name="prenom"> <text/> </element> </define> <define name="date_naissance"> <element name="date_naissance"> <data type="date"/> </element> </define> </grammar>

Există instrumente, cum ar fi Trang, care vă permit să convertiți între cele două sintaxe sau de la Relax NG la XML Schema sau un DTD . Pe de altă parte, este mult mai dificil să transformi o schemă XML în Relax NG.

Vezi și tu

linkuri externe