Snadné rozšiřování existujících schémat

  • existuje mnoho běžně používaných formátů dat založených na XML

    • XHTML, DocBook, SVG, MathML, TEI, SMIL, …

  • v mnoha případech je můžeme použít rovnou beze změn

  • v mnoha případech nám však něco chybí

    • můžeme si vytvořit vlastní zcela nové schéma – problém je však s výměnou dat a použitím již existujících aplikací

    • můžeme existují schéma upravit – na rozdíl od DTD/XML Schéma je úprava schématu v RELAX NG velmi jednoduchá

Příklad 26. Schéma rozšiřující DocBook o dva nové elementy pro označení registru a instrukce

# slušností je umístit si svoje elementy do jmenného prostoru
namespace a = "urn:cz-kosek:ns:assembler"

# pojmenovaný vzor a.inlines definuje vzor pro dva nové elementy
a.inlines = element a:registr { text }
            | element a:instruction { text }

# naimportujeme původní schéma pro DocBook a mezi obecné
# inline elementy přidáme ty naše
include "docbook.rnc"
  {
    db.general.inlines |= a.inlines
  }