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}}* 

ExempleSyntaxe compacte

SyntaxeElement

1
element e1 { element e2 {...

SyntaxeAttributs

1
element e2 { attribute a1 {...

SyntaxeNœuds texte

1
element e1 {text}

SyntaxeCardinalité

1
element e1 { element e2 {...}*, element e3 {...}+, ...}

SyntaxeOptionalité

1
element e1 { element e2 {...}?,  attribut a1 {...}?}

SyntaxeAlternative

1
element e1 { element e2 {...} | element e3 {...}}

ExempleEnsemble non ordonné (set)

1
element setElement { (element e2 {...} | element e3 {...})* }

ExempleContenu mixte (mixed-content)

1
element paraTag { (text | element inlineTag {text})* }

SyntaxeÉnumération

1
attribute a1 { "v1" | "v2" }
1
element e1 { "v1" | "v2" }

SyntaxePattern nommés

1
Pattern1 = ...
2
...
3
element e1 {Pattern1}

SyntaxeSyntaxe générale

1
start = element e1 {...}
2
Pattern1 = ...
3
Pattern2 = ...

SyntaxeTypes 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

SyntaxeNamespace

1
namespace rng = "http://relaxng.org/ns/structure/1.0"
2
default namespace = "http://foo.bar.org/xml-schemas/mtoSchema"
3
start = ...