Relax NG : Syntaxe Compacte
Exemple :
Le code RelaxNG version compacte suivant permet de spécifier qu'un élément "document" contient des éléments "page" qui contiennent du texte .
1
element document {element page {text}}*
Syntaxe : Element
1
element e1 { element e2 {...
Syntaxe : Attributs
1
element e2 { attribute a1 {...
Syntaxe : Nœuds texte
1
element e1 {text}
Syntaxe : Cardinalité
1
element e1 { element e2 {...}*, element e3 {...}+, ...}
Syntaxe : Optionalité
1
element e1 { element e2 {...}?, attribut a1 {...}?}
Syntaxe : Alternative
1
element e1 { element e2 {...} | element e3 {...}}
Exemple : Ensemble non ordonné (set)
1
element setElement { (element e2 {...} | element e3 {...})* }
Exemple : Contenu mixte (mixed-content)
1
element paraTag { (text | element inlineTag {text})* }
Syntaxe : Énumération
1
attribute a1 { "v1" | "v2" }
1
element e1 { "v1" | "v2" }
Syntaxe : Pattern nommés
1
Pattern1 = ...
2
...
3
element e1 {Pattern1}
Syntaxe : Syntaxe générale
1
start = element e1 {...}
2
Pattern1 = ...
3
Pattern2 = ...
Syntaxe : Types de données
Spécifier datatypes xsd="http://www.w3.org/2001/XMLSchema-datatypes"
avant le start
1
datatypes xsd="http://www.w3.org/2001/XMLSchema-datatypes"
2
start = ...
3
element e1 {xsd:decimal {maxInclusive="100"}}
Guidelines for using W3C XML Schema Datatypes with RELAX NG : http://relaxng.org/xsd.html
Syntaxe : Namespace
1
namespace rng = "http://relaxng.org/ns/structure/1.0"
2
default namespace = "http://foo.bar.org/xml-schemas/mtoSchema"
3
start = ...