Regular Language for XML Next Generation

RelaxNG (REgular LAnguage for XML Next Generation) est un langage de schéma XML.

  • RelaxNG est une alternative aux DTD et à W3C XML Schema, qui combine les avantages de ces deux autres langages.

  • RelaxNG est un standard OASIS et une norme ISO/CEI.

  • Deux syntaxes : une syntaxe XML (alternative à W3C Schema) et une syntaxe compacte (alternative aux DTD).

  • RelaxNG ne définit que la structure (comme les DTD) et utilise W3C XML Schema pour le typage des données.

http://relaxng.org/

Exemple de schémas publics définis en Relax NG

  • OpenDocument (format bureautique)

  • DocBook (format documentaire)

  • Atom (syndication)

Exemple de DTD

<!ELEMENT document (paragraphe+)>
<!ATTLIST document type CDATA #REQUIRED>
<!ELEMENT paragraphe (#PCDATA)>

Exemple de schéma RelaxNG correspondant (syntaxe compacte)

start = element document {
  attribute type {text}, 
  element paragraphe {text}+ 
}

Exemple de schéma RelaxNG correspondant (syntaxe XML)

<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
  <start>
    <element name="document">
      <attribute name="type"/>
      <oneOrMore>
        <element name="paragraphe">
          <text/>
        </element>
        </oneOrMore>
    </element>
  </start>
</grammar>

Autre exemple de schéma RelaxNG correspondant (syntaxe compacte, patterns nommés)

start = document
document = element document {attribute type {text}, paragraphe+ }
paragraphe = element paragraphe {text}

Autre exemple de schéma RelaxNG correspondant (syntaxe XML, patterns nommés)

<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
  <start>
    <ref name="document"/>
  </start>
  <define name="document">
    <element name="document">
      <attribute name="type"/>
      <oneOrMore>
        <ref name="paragraphe"/>
      </oneOrMore>
    </element>
  </define>
  <define name="paragraphe">
    <element name="paragraphe">
      <text/>
    </element>
  </define>
</grammar>
AccueilIntroduction aux schémas XML > RelaxNG< PrécédentSuivant >