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 .

CTRL+C pour copier, CTRL+V pour coller
1
element document {element page {text}}* 
element document {element page {text}}* 

ExempleSyntaxe compacte

SyntaxeElement

CTRL+C pour copier, CTRL+V pour coller
1
element e1 { element e2 {...
element e1 { element e2 {...

SyntaxeAttributs

CTRL+C pour copier, CTRL+V pour coller
1
element e2 { attribute a1 {...
element e2 { attribute a1 {...

SyntaxeNœuds texte

CTRL+C pour copier, CTRL+V pour coller
1
element e1 {text}
element e1 {text}

SyntaxeCardinalité

CTRL+C pour copier, CTRL+V pour coller
1
element e1 { element e2 {...}*, element e3 {...}+, ...}
element e1 { element e2 {...}*, element e3 {...}+, ...}

SyntaxeOptionalité

CTRL+C pour copier, CTRL+V pour coller
1
element e1 { element e2 {...}?,  attribut a1 {...}?}
element e1 { element e2 {...}?,  attribut a1 {...}?}

SyntaxeAlternative

CTRL+C pour copier, CTRL+V pour coller
1
element e1 { element e2 {...} | element e3 {...}}
element e1 { element e2 {...} | element e3 {...}}

ExempleEnsemble non ordonné (set)

CTRL+C pour copier, CTRL+V pour coller
1
element setElement { (element e2 {...} | element e3 {...})* }
element setElement { (element e2 {...} | element e3 {...})* }

ExempleContenu mixte (mixed-content)

CTRL+C pour copier, CTRL+V pour coller
1
element paraTag { (text | element inlineTag {text})* }
element paraTag { (text | element inlineTag {text})* }

SyntaxeÉnumération

CTRL+C pour copier, CTRL+V pour coller
1
attribute a1 { "v1" | "v2" }
attribute a1 { "v1" | "v2" }
CTRL+C pour copier, CTRL+V pour coller
1
element e1 { "v1" | "v2" }
element e1 { "v1" | "v2" }

SyntaxePattern nommés

CTRL+C pour copier, CTRL+V pour coller
1
Pattern1 = ...
2
...
3
element e1 {Pattern1}
Pattern1 = ...
...
element e1 {Pattern1}

SyntaxeSyntaxe générale

CTRL+C pour copier, CTRL+V pour coller
1
start = element e1 {...}
2
Pattern1 = ...
3
Pattern2 = ...
start = element e1 {...}
Pattern1 = ...
Pattern2 = ...

SyntaxeTypes de données

Spécifier datatypes xsd="http://www.w3.org/2001/XMLSchema-datatypes" avant le start

CTRL+C pour copier, CTRL+V pour coller
1
datatypes xsd="http://www.w3.org/2001/XMLSchema-datatypes"
2
start = ...
3
element e1 {xsd:decimal {maxInclusive="100"}}
datatypes xsd="http://www.w3.org/2001/XMLSchema-datatypes"
start = ...
element e1 {xsd:decimal {maxInclusive="100"}}

Guidelines for using W3C XML Schema Datatypes with RELAX NG : http://relaxng.org/xsd.html

SyntaxeNamespace

CTRL+C pour copier, CTRL+V pour coller
1
namespace rng = "http://relaxng.org/ns/structure/1.0"
2
default namespace = "http://foo.bar.org/xml-schemas/mtoSchema"
3
start = ...
namespace rng = "http://relaxng.org/ns/structure/1.0"
default namespace = "http://foo.bar.org/xml-schemas/mtoSchema"
start = ...