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 = ...