Compléter le schéma RelaxNG schema.rng afin que les fichiers XML file1.xml, file2.xml et file3.xml soient valides. On cherchera le schéma le plus restrictif possible. On cherchera un schéma sans description redondante, en utilisant la syntaxe ref/define lorsque c'est nécessaire.

<?xml version="1.0"?>
<!--file1.xml-->
<?oxygen RNGSchema="04.rng" type="xml"?>
<a>
<b><b1/></b>
</a>
<?xml version="1.0"?>
<!--file2.xml-->
<?oxygen RNGSchema="04.rng" type="xml"?>
<a>
<b><b1/></b>
<b><b1/><b2/></b>
<b><b1/></b>
</a>
<?xml version="1.0"?>
<!--file3.xml-->
<?oxygen RNGSchema="04.rng" type="xml"?>
<a>
<b><b1/></b>
<b><b1/><b2/></b>
<b><b1/></b>
<c/>
<c/>
<b><b1/></b>
<b><b1/></b>
</a>

<?xml version="1.0" encoding="UTF-8"?>

<grammar xmlns="http://relaxng.org/ns/structure/1.0">

<start>

 <element name="a">

  <oneOrMore>

   <ref name="B"/>

  </oneOrMore>

  <zeroOrMore>

   <element name="c"><empty/></element>

  </zeroOrMore>

  <zeroOrMore>

   <ref name="B"/>

  </zeroOrMore>

 </element>

</start>

<define name="B">

 <element name="b">

  <element name="b1"><empty/></element>

  <optional>

   <element name="b2"><empty/></element>

  </optional>

 </element>

</define>

</grammar>

<?xml version="1.0" encoding="UTF-8"?>

<grammar xmlns="http://relaxng.org/ns/structure/1.0">

<start>

 <element name="a">

  <oneOrMore>

   <ref name="B"/>

  </oneOrMore>

  <zeroOrMore>

   <element name="c"><empty/></element>

  </zeroOrMore>

  <zeroOrMore>

   <ref name="B"/>

  </zeroOrMore>

 </element>

</start>

<define name="B">

 <element name="b">

  <element name="b1"><empty/></element>

  <optional>

   <element name="b2"><empty/></element>

  </optional>

 </element>

</define>

</grammar>

<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
<start>
 <element name="a">
  <oneOrMore>
   <ref name="B"/>
  </oneOrMore>
  <zeroOrMore>
   <element name="c"><empty/></element>
  </zeroOrMore>
  <zeroOrMore>
   <ref name="B"/>
  </zeroOrMore>
 </element>
</start>
<define name="B">
 <element name="b">
  <element name="b1"><empty/></element>
  <optional>
   <element name="b2"><empty/></element>
  </optional>
 </element>
</define>
</grammar>
AccueilExercices > Exercices RelaxNG > Exercice< PrécédentSuivant >