Exemple : Carnet d'adresse (XML, DTD, Relax NG)

Instance XML

<?xml version="1.0" encoding="UTF-8"?><?oxygen RNGSchema="adresse1.rnc" type="compact"?>
<addressBook>
  <card>
    <name>John Smith</name>
    <email>js@example.com</email>
  </card>
  <card>
    <name>Fred Bloggs</name>
    <email>fb@example.net</email>
  </card>
</addressBook>

DTD

<!ELEMENT addressBook (card*)>
<!ELEMENT card (name, email)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT email (#PCDATA)>

RelaxNG (version 1 : sans pattern, XML)

<?xml version="1.0" encoding="UTF-8"?>
<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
  <oneOrMore>
    <element name="card">
      <element name="name"><text/></element>
      <element name="email"><text/></element>
    </element>
  </oneOrMore>
</element>

RelaxNG (version 1 : sans pattern, compacte)

element addressBook {
  element card {
    element name { text },
    element email { text }
  }+
}

RelaxNG (version 2 : avec pattern, XML)

<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
  <start>
    <element name="addressBook">
      <zeroOrMore>
        <element name="card"><ref name="cardContent"/></element>
      </zeroOrMore>
    </element>
  </start>
  <define name="cardContent">
    <element name="name"><text/></element>
    <element name="email"><text/></element>
  </define>
</grammar>

RelaxNG (version 2 : avec pattern, compacte)

namespace rng = "http://relaxng.org/ns/structure/1.0"
start = AddressBook
AddressBook = element addressBook { Card* }
Card = element card { Name, Email }
Name = element name { text }
Email = element email { text }

RelaxNG (version 3 : avec datatype, 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>
    <element name="addressBook">
      <zeroOrMore>
        <element name="card"><ref name="cardContent"/></element>
      </zeroOrMore>
    </element>
  </start>
  <define name="cardContent">
    <element name="name"><data type="string"/></element>
    <element name="email"><data type="anyURI"/></element>
  </define>
</grammar>
AccueilExemples > Exemple : Carnet d'adresse (XML, DTD, Relax NG)< PrécédentSuivant >