aboutsummaryrefslogtreecommitdiffhomepage
path: root/data/doc/sisu/model/xml
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2007-05-22 02:06:46 +0100
committerRalph Amissah <ralph.amissah@gmail.com>2007-05-22 02:06:46 +0100
commit65477054fd798728bf186aa2938727ddddbe86a5 (patch)
tree612da47b57ad4c4157f495dcf10710d32cdc6ead /data/doc/sisu/model/xml
Imported upstream version 0.52.7upstream/0.52.7sisu_0.52.7
Diffstat (limited to 'data/doc/sisu/model/xml')
-rw-r--r--data/doc/sisu/model/xml/input/rnc/dom.rnc69
-rw-r--r--data/doc/sisu/model/xml/input/rnc/node.rnc67
-rw-r--r--data/doc/sisu/model/xml/input/rnc/sax.rnc47
-rw-r--r--data/doc/sisu/model/xml/input/rng/dom.rng166
-rw-r--r--data/doc/sisu/model/xml/input/rng/node.rng177
-rw-r--r--data/doc/sisu/model/xml/input/rng/sax.rng120
-rw-r--r--data/doc/sisu/model/xml/input/xsd/dom.xsd181
-rw-r--r--data/doc/sisu/model/xml/input/xsd/node.xsd159
-rw-r--r--data/doc/sisu/model/xml/input/xsd/sax.xsd108
-rw-r--r--data/doc/sisu/model/xml/output/rnc/dom.rnc144
-rw-r--r--data/doc/sisu/model/xml/output/rnc/sax.rnc164
-rw-r--r--data/doc/sisu/model/xml/output/rng/dom.rng438
-rw-r--r--data/doc/sisu/model/xml/output/rng/sax.rng374
-rw-r--r--data/doc/sisu/model/xml/output/xsd/dom.xsd327
-rw-r--r--data/doc/sisu/model/xml/output/xsd/sax.xsd332
15 files changed, 2873 insertions, 0 deletions
diff --git a/data/doc/sisu/model/xml/input/rnc/dom.rnc b/data/doc/sisu/model/xml/input/rnc/dom.rnc
new file mode 100644
index 00000000..7391eca4
--- /dev/null
+++ b/data/doc/sisu/model/xml/input/rnc/dom.rnc
@@ -0,0 +1,69 @@
+#% dom input model, part of SiSU and under the same license
+default namespace = ""
+start =
+ element document {
+ element head {
+ element header {
+ attribute class { xsd:NCName },
+ (element creator { text }
+ | element date { xsd:NMTOKEN }
+ | element date.available { xsd:NMTOKEN }
+ | element date.created { xsd:NMTOKEN }
+ | element date.issued { xsd:NMTOKEN }
+ | element date.modified { xsd:NMTOKEN }
+ | element date.valid { xsd:NMTOKEN }
+ | element italicize { text }
+ | element language { xsd:NCName }
+ | element links { text }
+ | element markup { text }
+ | element rights { text }
+ | element skin { xsd:NCName }
+ | element subject { text }
+ | element title { text }
+ | element type { xsd:NCName }
+ | element vocabulary { xsd:NCName })
+ }+
+ },
+ element body {
+ element heading1 {
+ heading,
+ element heading2 {
+ heading,
+ contents1+,
+ element heading3 { heading, contents1+ }+
+ }
+ }
+ }
+ }
+heading = element heading { object }
+contents1 =
+ element contents1 {
+ heading,
+ content,
+ element contents2 {
+ heading,
+ content,
+ element contents3 { heading, content }*
+ }*
+ }
+object =
+ element object {
+ element text {
+ (text
+ | italic
+ | element bold { xsd:NMTOKEN }
+ | element endnote {
+ element symbol { text }?,
+ element note {
+ (text
+ | italic
+ | element br { empty })+
+ }
+ }
+ | element underscore { italic }
+ | element image.path { text }
+ | element italic { text })+
+ }
+ }
+italic = element italic { text }
+content = element content { object+ }
diff --git a/data/doc/sisu/model/xml/input/rnc/node.rnc b/data/doc/sisu/model/xml/input/rnc/node.rnc
new file mode 100644
index 00000000..5116f629
--- /dev/null
+++ b/data/doc/sisu/model/xml/input/rnc/node.rnc
@@ -0,0 +1,67 @@
+#% node input model, part of SiSU and under the same license
+default namespace = ""
+start =
+ element document {
+ element head {
+ element header {
+ attribute class { xsd:NCName },
+ (element creator { text }
+ | element date { xsd:NMTOKEN }
+ | element date.available { xsd:NMTOKEN }
+ | element date.created { xsd:NMTOKEN }
+ | element date.issued { xsd:NMTOKEN }
+ | element date.modified { xsd:NMTOKEN }
+ | element date.valid { xsd:NMTOKEN }
+ | element italicize { (text | i)+ }
+ | element language { xsd:NCName }
+ | element links { text }
+ | element markup { text }
+ | element rights { text }
+ | element skin { xsd:NCName }
+ | element subject { text }
+ | element title { text }
+ | element type { xsd:NCName }
+ | element vocabulary { xsd:NCName })
+ }+
+ },
+ element body {
+ element object {
+ (element text {
+ attribute class { xsd:NCName },
+ (text
+ | b
+ | i
+ | element br { empty }
+ | element endnote {
+ attribute symbol { xsd:NCName },
+ (text | i)+
+ }
+ | element image.path { text }
+ | element sub { text })+
+ }
+ | (element ocn { empty },
+ element table {
+ attribute align { xsd:NCName },
+ attribute bgcolor { xsd:NCName },
+ attribute border { xsd:integer },
+ attribute cellpadding { xsd:integer },
+ attribute summary { text },
+ attribute width { text },
+ element tr {
+ element td {
+ attribute valign { xsd:NCName },
+ attribute width { text },
+ (text | b)+
+ }+
+ }+
+ })),
+ element node {
+ element id { xsd:integer },
+ element parent { xsd:integer },
+ element offspring { text }?
+ }
+ }+
+ }
+ }
+b = element b { text }
+i = element i { text }
diff --git a/data/doc/sisu/model/xml/input/rnc/sax.rnc b/data/doc/sisu/model/xml/input/rnc/sax.rnc
new file mode 100644
index 00000000..891a18f8
--- /dev/null
+++ b/data/doc/sisu/model/xml/input/rnc/sax.rnc
@@ -0,0 +1,47 @@
+#% sax input model, part of SiSU and under the same license
+default namespace = ""
+start =
+ element document {
+ element head {
+ element header {
+ attribute class { xsd:NCName },
+ (element creator { text }
+ | element date { xsd:NMTOKEN }
+ | element date.available { xsd:NMTOKEN }
+ | element date.created { xsd:NMTOKEN }
+ | element date.issued { xsd:NMTOKEN }
+ | element date.modified { xsd:NMTOKEN }
+ | element date.valid { xsd:NMTOKEN }
+ | element italicize { text }
+ | element language { xsd:NCName }
+ | element links { text }
+ | element markup { text }
+ | element rights { text }
+ | element skin { xsd:NCName }
+ | element subject { text }
+ | element title { text }
+ | element type { xsd:NCName }
+ | element vocabulary { xsd:NCName })
+ }+
+ },
+ element body {
+ element object {
+ element text {
+ attribute class { xsd:NCName },
+ (text
+ | b
+ | i
+ | element endnote {
+ attribute symbol { xsd:NCName },
+ (text
+ | i
+ | element br { empty })+
+ }
+ | element u { i }
+ | element image.path { text })+
+ }?
+ }+
+ }
+ }
+i = element i { text }
+b = element b { text }
diff --git a/data/doc/sisu/model/xml/input/rng/dom.rng b/data/doc/sisu/model/xml/input/rng/dom.rng
new file mode 100644
index 00000000..746421c8
--- /dev/null
+++ b/data/doc/sisu/model/xml/input/rng/dom.rng
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- dom rng input model, part of SiSU and under the same license -->
+<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <element name="document">
+ <element name="head">
+ <oneOrMore>
+ <element name="header">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <choice>
+ <element name="creator">
+ <text/>
+ </element>
+ <element name="date">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date.available">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date.created">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date.issued">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date.modified">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date.valid">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="italicize">
+ <text/>
+ </element>
+ <element name="language">
+ <data type="NCName"/>
+ </element>
+ <element name="links">
+ <text/>
+ </element>
+ <element name="markup">
+ <text/>
+ </element>
+ <element name="rights">
+ <text/>
+ </element>
+ <element name="skin">
+ <data type="NCName"/>
+ </element>
+ <element name="subject">
+ <text/>
+ </element>
+ <element name="title">
+ <text/>
+ </element>
+ <element name="type">
+ <data type="NCName"/>
+ </element>
+ <element name="vocabulary">
+ <data type="NCName"/>
+ </element>
+ </choice>
+ </element>
+ </oneOrMore>
+ </element>
+ <element name="body">
+ <element name="heading1">
+ <ref name="heading"/>
+ <element name="heading2">
+ <ref name="heading"/>
+ <oneOrMore>
+ <ref name="contents1"/>
+ </oneOrMore>
+ <oneOrMore>
+ <element name="heading3">
+ <ref name="heading"/>
+ <oneOrMore>
+ <ref name="contents1"/>
+ </oneOrMore>
+ </element>
+ </oneOrMore>
+ </element>
+ </element>
+ </element>
+ </element>
+ </start>
+ <define name="heading">
+ <element name="heading">
+ <ref name="object"/>
+ </element>
+ </define>
+ <define name="contents1">
+ <element name="contents1">
+ <ref name="heading"/>
+ <ref name="content"/>
+ <zeroOrMore>
+ <element name="contents2">
+ <ref name="heading"/>
+ <ref name="content"/>
+ <zeroOrMore>
+ <element name="contents3">
+ <ref name="heading"/>
+ <ref name="content"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="object">
+ <element name="object">
+ <element name="text">
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="italic"/>
+ <element name="bold">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="endnote">
+ <optional>
+ <element name="symbol">
+ <text/>
+ </element>
+ </optional>
+ <element name="note">
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="italic"/>
+ <element name="br">
+ <empty/>
+ </element>
+ </choice>
+ </oneOrMore>
+ </element>
+ </element>
+ <element name="underscore">
+ <ref name="italic"/>
+ </element>
+ <element name="image.path">
+ <text/>
+ </element>
+ <element name="italic">
+ <text/>
+ </element>
+ </choice>
+ </oneOrMore>
+ </element>
+ </element>
+ </define>
+ <define name="italic">
+ <element name="italic">
+ <text/>
+ </element>
+ </define>
+ <define name="content">
+ <element name="content">
+ <oneOrMore>
+ <ref name="object"/>
+ </oneOrMore>
+ </element>
+ </define>
+</grammar>
diff --git a/data/doc/sisu/model/xml/input/rng/node.rng b/data/doc/sisu/model/xml/input/rng/node.rng
new file mode 100644
index 00000000..8b60cce8
--- /dev/null
+++ b/data/doc/sisu/model/xml/input/rng/node.rng
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- node rng input model, part of SiSU and under the same license -->
+<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <element name="document">
+ <element name="head">
+ <oneOrMore>
+ <element name="header">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <choice>
+ <element name="creator">
+ <text/>
+ </element>
+ <element name="date">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date.available">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date.created">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date.issued">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date.modified">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date.valid">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="italicize">
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="i"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ <element name="language">
+ <data type="NCName"/>
+ </element>
+ <element name="links">
+ <text/>
+ </element>
+ <element name="markup">
+ <text/>
+ </element>
+ <element name="rights">
+ <text/>
+ </element>
+ <element name="skin">
+ <data type="NCName"/>
+ </element>
+ <element name="subject">
+ <text/>
+ </element>
+ <element name="title">
+ <text/>
+ </element>
+ <element name="type">
+ <data type="NCName"/>
+ </element>
+ <element name="vocabulary">
+ <data type="NCName"/>
+ </element>
+ </choice>
+ </element>
+ </oneOrMore>
+ </element>
+ <element name="body">
+ <oneOrMore>
+ <element name="object">
+ <choice>
+ <element name="text">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="b"/>
+ <ref name="i"/>
+ <element name="br">
+ <empty/>
+ </element>
+ <element name="endnote">
+ <attribute name="symbol">
+ <data type="NCName"/>
+ </attribute>
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="i"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ <element name="image.path">
+ <text/>
+ </element>
+ <element name="sub">
+ <text/>
+ </element>
+ </choice>
+ </oneOrMore>
+ </element>
+ <group>
+ <element name="ocn">
+ <empty/>
+ </element>
+ <element name="table">
+ <attribute name="align">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="bgcolor">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="border">
+ <data type="integer"/>
+ </attribute>
+ <attribute name="cellpadding">
+ <data type="integer"/>
+ </attribute>
+ <attribute name="summary"/>
+ <attribute name="width"/>
+ <oneOrMore>
+ <element name="tr">
+ <oneOrMore>
+ <element name="td">
+ <attribute name="valign">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="width"/>
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="b"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </oneOrMore>
+ </element>
+ </oneOrMore>
+ </element>
+ </group>
+ </choice>
+ <element name="node">
+ <element name="id">
+ <data type="integer"/>
+ </element>
+ <element name="parent">
+ <data type="integer"/>
+ </element>
+ <optional>
+ <element name="offspring">
+ <text/>
+ </element>
+ </optional>
+ </element>
+ </element>
+ </oneOrMore>
+ </element>
+ </element>
+ </start>
+ <define name="b">
+ <element name="b">
+ <text/>
+ </element>
+ </define>
+ <define name="i">
+ <element name="i">
+ <text/>
+ </element>
+ </define>
+</grammar>
diff --git a/data/doc/sisu/model/xml/input/rng/sax.rng b/data/doc/sisu/model/xml/input/rng/sax.rng
new file mode 100644
index 00000000..14412938
--- /dev/null
+++ b/data/doc/sisu/model/xml/input/rng/sax.rng
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- sax rng input model, part of SiSU and under the same license -->
+<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <element name="document">
+ <element name="head">
+ <oneOrMore>
+ <element name="header">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <choice>
+ <element name="creator">
+ <text/>
+ </element>
+ <element name="date">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date.available">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date.created">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date.issued">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date.modified">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date.valid">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="italicize">
+ <text/>
+ </element>
+ <element name="language">
+ <data type="NCName"/>
+ </element>
+ <element name="links">
+ <text/>
+ </element>
+ <element name="markup">
+ <text/>
+ </element>
+ <element name="rights">
+ <text/>
+ </element>
+ <element name="skin">
+ <data type="NCName"/>
+ </element>
+ <element name="subject">
+ <text/>
+ </element>
+ <element name="title">
+ <text/>
+ </element>
+ <element name="type">
+ <data type="NCName"/>
+ </element>
+ <element name="vocabulary">
+ <data type="NCName"/>
+ </element>
+ </choice>
+ </element>
+ </oneOrMore>
+ </element>
+ <element name="body">
+ <oneOrMore>
+ <element name="object">
+ <optional>
+ <element name="text">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="b"/>
+ <ref name="i"/>
+ <element name="endnote">
+ <attribute name="symbol">
+ <data type="NCName"/>
+ </attribute>
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="i"/>
+ <element name="br">
+ <empty/>
+ </element>
+ </choice>
+ </oneOrMore>
+ </element>
+ <element name="u">
+ <ref name="i"/>
+ </element>
+ <element name="image.path">
+ <text/>
+ </element>
+ </choice>
+ </oneOrMore>
+ </element>
+ </optional>
+ </element>
+ </oneOrMore>
+ </element>
+ </element>
+ </start>
+ <define name="i">
+ <element name="i">
+ <text/>
+ </element>
+ </define>
+ <define name="b">
+ <element name="b">
+ <text/>
+ </element>
+ </define>
+</grammar>
diff --git a/data/doc/sisu/model/xml/input/xsd/dom.xsd b/data/doc/sisu/model/xml/input/xsd/dom.xsd
new file mode 100644
index 00000000..8de8999a
--- /dev/null
+++ b/data/doc/sisu/model/xml/input/xsd/dom.xsd
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- dom input model, part of SiSU and under the same license -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:element name="document">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="head"/>
+ <xs:element ref="body"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="head">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="header"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="header">
+ <xs:complexType>
+ <xs:choice>
+ <xs:element ref="creator"/>
+ <xs:element ref="date"/>
+ <xs:element ref="date.available"/>
+ <xs:element ref="date.created"/>
+ <xs:element ref="date.issued"/>
+ <xs:element ref="date.modified"/>
+ <xs:element ref="date.valid"/>
+ <xs:element ref="italicize"/>
+ <xs:element ref="language"/>
+ <xs:element ref="links"/>
+ <xs:element ref="markup"/>
+ <xs:element ref="rights"/>
+ <xs:element ref="skin"/>
+ <xs:element ref="subject"/>
+ <xs:element ref="title"/>
+ <xs:element ref="type"/>
+ <xs:element ref="vocabulary"/>
+ </xs:choice>
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="creator" type="xs:string"/>
+ <xs:element name="date" type="xs:NMTOKEN"/>
+ <xs:element name="date.available" type="xs:NMTOKEN"/>
+ <xs:element name="date.created" type="xs:NMTOKEN"/>
+ <xs:element name="date.issued" type="xs:NMTOKEN"/>
+ <xs:element name="date.modified" type="xs:NMTOKEN"/>
+ <xs:element name="date.valid" type="xs:NMTOKEN"/>
+ <xs:element name="italicize" type="xs:string"/>
+ <xs:element name="language" type="xs:NCName"/>
+ <xs:element name="links" type="xs:string"/>
+ <xs:element name="markup" type="xs:string"/>
+ <xs:element name="rights" type="xs:string"/>
+ <xs:element name="skin" type="xs:NCName"/>
+ <xs:element name="subject" type="xs:string"/>
+ <xs:element name="title" type="xs:string"/>
+ <xs:element name="type" type="xs:NCName"/>
+ <xs:element name="vocabulary" type="xs:NCName"/>
+ <xs:element name="body">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="heading1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="heading1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="heading"/>
+ <xs:element ref="heading2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="heading2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="heading"/>
+ <xs:element maxOccurs="unbounded" ref="contents1"/>
+ <xs:element maxOccurs="unbounded" ref="heading3"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="heading3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="heading"/>
+ <xs:element maxOccurs="unbounded" ref="contents1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="heading">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="object"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="contents1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="heading"/>
+ <xs:element ref="content"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="contents2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="contents2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="heading"/>
+ <xs:element ref="content"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="contents3"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="contents3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="heading"/>
+ <xs:element ref="content"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="object">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="text"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="text">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="italic"/>
+ <xs:element ref="bold"/>
+ <xs:element ref="endnote"/>
+ <xs:element ref="underscore"/>
+ <xs:element ref="image.path"/>
+ <xs:element ref="italic"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="bold" type="xs:NMTOKEN"/>
+ <xs:element name="endnote">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="symbol"/>
+ <xs:element ref="note"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="symbol" type="xs:string"/>
+ <xs:element name="note">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="italic"/>
+ <xs:element ref="br"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="br">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="underscore">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="italic"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="image.path" type="xs:string"/>
+ <xs:element name="italic" type="xs:string"/>
+ <xs:element name="content">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="object"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/data/doc/sisu/model/xml/input/xsd/node.xsd b/data/doc/sisu/model/xml/input/xsd/node.xsd
new file mode 100644
index 00000000..f0fc9614
--- /dev/null
+++ b/data/doc/sisu/model/xml/input/xsd/node.xsd
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- node input model, part of SiSU and under the same license -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:element name="document">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="head"/>
+ <xs:element ref="body"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="head">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="header"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="header">
+ <xs:complexType>
+ <xs:choice>
+ <xs:element ref="creator"/>
+ <xs:element ref="date"/>
+ <xs:element ref="date.available"/>
+ <xs:element ref="date.created"/>
+ <xs:element ref="date.issued"/>
+ <xs:element ref="date.modified"/>
+ <xs:element ref="date.valid"/>
+ <xs:element ref="italicize"/>
+ <xs:element ref="language"/>
+ <xs:element ref="links"/>
+ <xs:element ref="markup"/>
+ <xs:element ref="rights"/>
+ <xs:element ref="skin"/>
+ <xs:element ref="subject"/>
+ <xs:element ref="title"/>
+ <xs:element ref="type"/>
+ <xs:element ref="vocabulary"/>
+ </xs:choice>
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="creator" type="xs:string"/>
+ <xs:element name="date" type="xs:NMTOKEN"/>
+ <xs:element name="date.available" type="xs:NMTOKEN"/>
+ <xs:element name="date.created" type="xs:NMTOKEN"/>
+ <xs:element name="date.issued" type="xs:NMTOKEN"/>
+ <xs:element name="date.modified" type="xs:NMTOKEN"/>
+ <xs:element name="date.valid" type="xs:NMTOKEN"/>
+ <xs:element name="italicize">
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="i"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="language" type="xs:NCName"/>
+ <xs:element name="links" type="xs:string"/>
+ <xs:element name="markup" type="xs:string"/>
+ <xs:element name="rights" type="xs:string"/>
+ <xs:element name="skin" type="xs:NCName"/>
+ <xs:element name="subject" type="xs:string"/>
+ <xs:element name="title" type="xs:string"/>
+ <xs:element name="type" type="xs:NCName"/>
+ <xs:element name="vocabulary" type="xs:NCName"/>
+ <xs:element name="body">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="object"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="object">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="text"/>
+ <xs:sequence>
+ <xs:element ref="ocn"/>
+ <xs:element ref="table"/>
+ </xs:sequence>
+ </xs:choice>
+ <xs:element ref="node"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="text">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="b"/>
+ <xs:element ref="i"/>
+ <xs:element ref="br"/>
+ <xs:element ref="endnote"/>
+ <xs:element ref="image.path"/>
+ <xs:element ref="sub"/>
+ </xs:choice>
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="br">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="endnote">
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="i"/>
+ </xs:sequence>
+ <xs:attribute name="symbol" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="image.path" type="xs:string"/>
+ <xs:element name="sub" type="xs:string"/>
+ <xs:element name="ocn">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="table">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ </xs:sequence>
+ <xs:attribute name="align" use="required" type="xs:NCName"/>
+ <xs:attribute name="bgcolor" use="required" type="xs:NCName"/>
+ <xs:attribute name="border" use="required" type="xs:integer"/>
+ <xs:attribute name="cellpadding" use="required" type="xs:integer"/>
+ <xs:attribute name="summary" use="required"/>
+ <xs:attribute name="width" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="tr">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="td"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="td">
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="b"/>
+ </xs:sequence>
+ <xs:attribute name="valign" use="required" type="xs:NCName"/>
+ <xs:attribute name="width" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="node">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="id"/>
+ <xs:element ref="parent"/>
+ <xs:element minOccurs="0" ref="offspring"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="id" type="xs:integer"/>
+ <xs:element name="parent" type="xs:integer"/>
+ <xs:element name="offspring" type="xs:string"/>
+ <xs:element name="b" type="xs:string"/>
+ <xs:element name="i" type="xs:string"/>
+</xs:schema>
diff --git a/data/doc/sisu/model/xml/input/xsd/sax.xsd b/data/doc/sisu/model/xml/input/xsd/sax.xsd
new file mode 100644
index 00000000..450bfce5
--- /dev/null
+++ b/data/doc/sisu/model/xml/input/xsd/sax.xsd
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- sax input model, part of SiSU and under the same license -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:element name="document">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="head"/>
+ <xs:element ref="body"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="head">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="header"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="header">
+ <xs:complexType>
+ <xs:choice>
+ <xs:element ref="creator"/>
+ <xs:element ref="date"/>
+ <xs:element ref="date.available"/>
+ <xs:element ref="date.created"/>
+ <xs:element ref="date.issued"/>
+ <xs:element ref="date.modified"/>
+ <xs:element ref="date.valid"/>
+ <xs:element ref="italicize"/>
+ <xs:element ref="language"/>
+ <xs:element ref="links"/>
+ <xs:element ref="markup"/>
+ <xs:element ref="rights"/>
+ <xs:element ref="skin"/>
+ <xs:element ref="subject"/>
+ <xs:element ref="title"/>
+ <xs:element ref="type"/>
+ <xs:element ref="vocabulary"/>
+ </xs:choice>
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="creator" type="xs:string"/>
+ <xs:element name="date" type="xs:NMTOKEN"/>
+ <xs:element name="date.available" type="xs:NMTOKEN"/>
+ <xs:element name="date.created" type="xs:NMTOKEN"/>
+ <xs:element name="date.issued" type="xs:NMTOKEN"/>
+ <xs:element name="date.modified" type="xs:NMTOKEN"/>
+ <xs:element name="date.valid" type="xs:NMTOKEN"/>
+ <xs:element name="italicize" type="xs:string"/>
+ <xs:element name="language" type="xs:NCName"/>
+ <xs:element name="links" type="xs:string"/>
+ <xs:element name="markup" type="xs:string"/>
+ <xs:element name="rights" type="xs:string"/>
+ <xs:element name="skin" type="xs:NCName"/>
+ <xs:element name="subject" type="xs:string"/>
+ <xs:element name="title" type="xs:string"/>
+ <xs:element name="type" type="xs:NCName"/>
+ <xs:element name="vocabulary" type="xs:NCName"/>
+ <xs:element name="body">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="object"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="object">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="text"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="text">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="b"/>
+ <xs:element ref="i"/>
+ <xs:element ref="endnote"/>
+ <xs:element ref="u"/>
+ <xs:element ref="image.path"/>
+ </xs:choice>
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="endnote">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="i"/>
+ <xs:element ref="br"/>
+ </xs:choice>
+ <xs:attribute name="symbol" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="br">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="u">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="i"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="image.path" type="xs:string"/>
+ <xs:element name="i" type="xs:string"/>
+ <xs:element name="b" type="xs:string"/>
+</xs:schema>
diff --git a/data/doc/sisu/model/xml/output/rnc/dom.rnc b/data/doc/sisu/model/xml/output/rnc/dom.rnc
new file mode 100644
index 00000000..e8a3ed42
--- /dev/null
+++ b/data/doc/sisu/model/xml/output/rnc/dom.rnc
@@ -0,0 +1,144 @@
+#% dom output model, part of SiSU and under the same license
+default namespace = ""
+namespace xlink = "http://www.w3.org/1999/xlink"
+start =
+ element document {
+ element head {
+ element header {
+ meta,
+ (element creator { text }
+ | element date { xsd:NMTOKEN }
+ | element date_available { xsd:NMTOKEN }
+ | element date_created { xsd:NMTOKEN }
+ | element date_issued { xsd:NMTOKEN }
+ | element date_modified { xsd:NMTOKEN }
+ | element date_valid { xsd:NMTOKEN }
+ | element keywords { text }
+ | element language { xsd:NCName }
+ | element rights { (text | link)+ }
+ | element source { text }
+ | element structure { text }
+ | element subject { text }
+ | element title { text }
+ | element type { text }
+ | element source_control {
+ (br
+ | meta
+ | element sc {
+ attribute class { xsd:NCName },
+ text
+ })+
+ })
+ }+
+ },
+ element body {
+ element heading1 {
+ heading,
+ contents1*,
+ element heading2 {
+ heading,
+ contents1*,
+ element heading3 {
+ heading,
+ element contents1 {
+ heading,
+ content,
+ element contents2 {
+ heading,
+ content,
+ element contents3 { heading, content }*
+ }*
+ }+
+ }*
+ }*
+ }+
+ }
+ }
+meta = element meta { text }
+br = element br { empty }
+heading = element heading { object }
+contents1 =
+ element contents1 {
+ heading,
+ content,
+ element contents2 {
+ heading,
+ content,
+ element contents3 { heading, content }*
+ }*
+ }
+content = element content { object* }
+object =
+ element object {
+ attribute id { xsd:integer },
+ element ocn { text },
+ element nametag { text }?,
+ (element table {
+ attribute align { xsd:NCName },
+ attribute bgcolor { xsd:NCName },
+ attribute border { xsd:integer },
+ attribute cellpadding { xsd:integer },
+ attribute summary { text },
+ attribute width { text },
+ element tr {
+ element td {
+ attribute valign { xsd:NCName },
+ attribute width { text },
+ (text | b | i)+
+ }+
+ }+
+ }
+ | element text {
+ attribute class { xsd:NCName }?,
+ (text
+ | b
+ | del
+ | endnote
+ | i
+ | link
+ | element br { empty }
+ | element endnote {
+ element number { xsd:integer },
+ element note { (text | i | link)+ }
+ }
+ | element image {
+ attribute height { xsd:integer },
+ attribute width { xsd:integer },
+ attribute xlink:actuate { xsd:NCName },
+ attribute xlink:href { text },
+ attribute xlink:show { xsd:NCName },
+ attribute xlink:type { xsd:NCName }
+ }
+ | element sub { text })+
+ })
+ }
+i = element i { text }
+b = element i { text }
+u = element u { (text | b | i)+ }
+sub = element sub { xsd:NCName }
+sup = element sup { xsd:NCName }
+del = element del { (text | b | i | link)+ }
+link =
+ element link {
+ attribute xlink:href { xsd:anyURI },
+ attribute xlink:type { xsd:NCName },
+ xsd:anyURI
+ }
+endnote =
+ element endnote {
+ (element number { xsd:integer }
+ | element symbol { text }),
+ element note {
+ (text
+ | b
+ | br
+ | del
+ | i
+ | link
+ | sub
+ | sup
+ | u
+ | element em { xsd:NCName }
+ | element sub { xsd:NCName })+
+ }
+ }
diff --git a/data/doc/sisu/model/xml/output/rnc/sax.rnc b/data/doc/sisu/model/xml/output/rnc/sax.rnc
new file mode 100644
index 00000000..b242afb3
--- /dev/null
+++ b/data/doc/sisu/model/xml/output/rnc/sax.rnc
@@ -0,0 +1,164 @@
+# % sax output model, part of SiSU and distributed under the same license
+
+default namespace = ""
+namespace xlink = "http://www.w3.org/1999/xlink"
+
+start =
+ element document {
+ element head {
+ (br
+ | meta
+ | element creator {
+ attribute class { xsd:NCName },
+ (text
+ | element link {
+ attribute xlink:href { xsd:anyURI },
+ attribute xlink:type { xsd:NCName },
+ xsd:anyURI
+ })+
+ }
+ | element date {
+ attribute class { xsd:NCName },
+ xsd:NMTOKEN
+ }
+ | element date_available {
+ attribute class { xsd:NCName },
+ xsd:NMTOKEN
+ }
+ | element date_created {
+ attribute class { xsd:NCName },
+ xsd:NMTOKEN
+ }
+ | element date_issued {
+ attribute class { xsd:NCName },
+ xsd:NMTOKEN
+ }
+ | element date_modified {
+ attribute class { xsd:NCName },
+ xsd:NMTOKEN
+ }
+ | element date_valid {
+ attribute class { xsd:NCName },
+ xsd:NMTOKEN
+ }
+ | element keywords {
+ attribute class { xsd:NCName },
+ text
+ }
+ | element language {
+ attribute class { xsd:NCName },
+ xsd:NCName
+ }
+ | element meta { xsd:NMTOKEN }
+ | element rights {
+ attribute class { xsd:NCName },
+ (text | link)+
+ }
+ | element source {
+ attribute class { xsd:NCName },
+ text
+ }
+ | element structure {
+ attribute class { xsd:NCName },
+ text
+ }
+ | element subject {
+ attribute class { xsd:NCName },
+ text
+ }
+ | element title {
+ attribute class { xsd:NCName },
+ text
+ }
+ | element type {
+ attribute class { xsd:NCName },
+ text
+ }
+ | element source_control {
+ (br
+ | meta
+ | element sc {
+ attribute class { xsd:NCName },
+ text
+ })+
+ })+
+ },
+ element body {
+ element object {
+ attribute id { text },
+ element ocn {
+ text
+ },
+ element text {
+ attribute class { xsd:NCName },
+ (text
+ | b
+ | br
+ | del
+ | en
+ | i
+ | link
+ | sub
+ | sup
+ | u
+ | element image {
+ attribute alt { text }?,
+ attribute height { xsd:integer }?,
+ attribute width { xsd:integer }?,
+ attribute xlink:actuate { xsd:NCName },
+ attribute xlink:href { text },
+ attribute xlink:show { xsd:NCName },
+ attribute xlink:type { xsd:NCName }
+ })+
+ }?,
+ element table {
+ attribute align { xsd:NCName },
+ attribute bgcolor { xsd:NCName },
+ attribute border { xsd:integer },
+ attribute cellpadding { xsd:integer },
+ attribute summary { text },
+ attribute width { text },
+ element tr {
+ element td {
+ attribute valign { xsd:NCName },
+ attribute width { text },
+ (text | b | i)+
+ }+
+ }+
+ }?,
+ element endnote {
+ attribute notenumber { xsd:integer }?,
+ attribute symbol { text }?,
+ (element number { xsd:integer }
+ | element symbol { text }),
+ element note {
+ (text
+ | b
+ | br
+ | del
+ | i
+ | link
+ | sup
+ | u
+ | element em { xsd:NCName }
+ | element sub { xsd:NCName })+
+ }
+ }*
+ }+
+ }
+ }
+meta = element meta { text }
+br = element br { empty }
+b = element b { (text | en | i | link | sup)+ }
+i = element i { (text | b | br | sup)+ }
+en = element en { text }
+sub = element sub { xsd:NCName }
+sup = element sup { xsd:NCName }
+link =
+ element link {
+ attribute xlink:href { xsd:anyURI },
+ attribute xlink:type { xsd:NCName },
+ (xsd:anyURI | text | b | i | sup)+
+ }
+u = element u { (text | b | i)+ }
+del = element del { (text | b | i | link)+ }
diff --git a/data/doc/sisu/model/xml/output/rng/dom.rng b/data/doc/sisu/model/xml/output/rng/dom.rng
new file mode 100644
index 00000000..eea891ec
--- /dev/null
+++ b/data/doc/sisu/model/xml/output/rng/dom.rng
@@ -0,0 +1,438 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- dom output model, part of SiSU and under the same license -->
+<grammar xmlns:xlink="http://www.w3.org/1999/xlink" ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <element name="document">
+ <element name="head">
+ <oneOrMore>
+ <element name="header">
+ <ref name="meta"/>
+ <choice>
+ <element name="creator">
+ <text/>
+ </element>
+ <element name="date">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date_available">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date_created">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date_issued">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date_modified">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date_valid">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="keywords">
+ <text/>
+ </element>
+ <element name="language">
+ <data type="NCName"/>
+ </element>
+ <element name="rights">
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="link"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ <element name="source">
+ <text/>
+ </element>
+ <element name="structure">
+ <text/>
+ </element>
+ <element name="subject">
+ <text/>
+ </element>
+ <element name="title">
+ <text/>
+ </element>
+ <element name="type">
+ <text/>
+ </element>
+ <element name="source_control">
+ <oneOrMore>
+ <choice>
+ <ref name="br"/>
+ <ref name="meta"/>
+ <element name="sc">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <text/>
+ </element>
+ </choice>
+ </oneOrMore>
+ </element>
+ </choice>
+ </element>
+ </oneOrMore>
+ </element>
+ <element name="body">
+ <oneOrMore>
+ <element name="heading1">
+ <ref name="heading"/>
+ <zeroOrMore>
+ <ref name="contents1"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <element name="heading2">
+ <ref name="heading"/>
+ <zeroOrMore>
+ <ref name="contents1"/>
+ </zeroOrMore>
+ <zeroOrMore>
+ <element name="heading3">
+ <ref name="heading"/>
+ <oneOrMore>
+ <element name="contents1">
+ <ref name="heading"/>
+ <ref name="content"/>
+ <zeroOrMore>
+ <element name="contents2">
+ <ref name="heading"/>
+ <ref name="content"/>
+ <zeroOrMore>
+ <element name="contents3">
+ <ref name="heading"/>
+ <ref name="content"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </zeroOrMore>
+ </element>
+ </oneOrMore>
+ </element>
+ </zeroOrMore>
+ </element>
+ </zeroOrMore>
+ </element>
+ </oneOrMore>
+ </element>
+ </element>
+ </start>
+ <define name="meta">
+ <element name="meta">
+ <text/>
+ </element>
+ </define>
+ <define name="br">
+ <element name="br">
+ <empty/>
+ </element>
+ </define>
+ <define name="heading">
+ <element name="heading">
+ <ref name="object"/>
+ </element>
+ </define>
+ <define name="contents1">
+ <element name="contents1">
+ <ref name="heading"/>
+ <ref name="content"/>
+ <zeroOrMore>
+ <element name="contents2">
+ <ref name="heading"/>
+ <ref name="content"/>
+ <zeroOrMore>
+ <element name="contents3">
+ <ref name="heading"/>
+ <ref name="content"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="content">
+ <element name="content">
+ <zeroOrMore>
+ <ref name="object"/>
+ </zeroOrMore>
+ </element>
+ </define>
+<!--
+ <define name="contents1">
+ <element name="contents1">
+ <ref name="heading"/>
+ <element name="content">
+ <oneOrMore>
+ <ref name="object"/>
+ </oneOrMore>
+ </element>
+ </element>
+ </define>
+-->
+ <define name="object">
+ <element name="object">
+ <attribute name="id">
+ <data type="integer"/>
+ </attribute>
+ <element name="ocn">
+ <text/>
+ </element>
+ <optional>
+ <element name="nametag">
+ <text/>
+ </element>
+ </optional>
+ <choice>
+ <element name="table">
+ <attribute name="align">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="bgcolor">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="border">
+ <data type="integer"/>
+ </attribute>
+ <attribute name="cellpadding">
+ <data type="integer"/>
+ </attribute>
+ <attribute name="summary"/>
+ <attribute name="width"/>
+ <oneOrMore>
+ <element name="tr">
+ <oneOrMore>
+ <element name="td">
+ <attribute name="valign">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="width"/>
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="b"/>
+ <ref name="i"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </oneOrMore>
+ </element>
+ </oneOrMore>
+ </element>
+ <element name="text">
+ <optional>
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ </optional>
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="b"/>
+ <ref name="del"/>
+ <ref name="endnote"/>
+ <ref name="i"/>
+ <ref name="link"/>
+ <element name="br">
+ <empty/>
+ </element>
+ <element name="endnote">
+ <element name="number">
+ <data type="integer"/>
+ </element>
+ <element name="note">
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="i"/>
+ <ref name="link"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </element>
+ <element name="image">
+ <attribute name="height">
+ <data type="integer"/>
+ </attribute>
+ <attribute name="width">
+ <data type="integer"/>
+ </attribute>
+ <attribute name="xlink:actuate">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="xlink:href"/>
+ <attribute name="xlink:show">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="xlink:type">
+ <data type="NCName"/>
+ </attribute>
+ </element>
+ <element name="sub">
+ <text/>
+ </element>
+ </choice>
+ </oneOrMore>
+ </element>
+ </choice>
+<!--
+ <element name="text">
+ <optional>
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ </optional>
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="i"/>
+ <element name="b">
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="i"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ <element name="endnote">
+ <choice>
+ <element name="number">
+ <data type="integer"/>
+ </element>
+ <element name="symbol">
+ <text/>
+ </element>
+ </choice>
+ <element name="note">
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="i"/>
+ <element name="br">
+ <empty/>
+ </element>
+ <element name="link">
+ <attribute name="xlink:href">
+ <data type="anyURI"/>
+ </attribute>
+ <attribute name="xlink:type">
+ <data type="NCName"/>
+ </attribute>
+ <data type="anyURI"/>
+ </element>
+ </choice>
+ </oneOrMore>
+ </element>
+ </element>
+ <element name="u">
+ <ref name="i"/>
+ </element>
+ </choice>
+ </oneOrMore>
+ </element>
+-->
+ </element>
+ </define>
+<!--
+ <define name="content">
+ <element name="content">
+ <zeroOrMore>
+ <ref name="object"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="b">
+ <element name="b">
+ <text/>
+ </element>
+ </define>
+-->
+ <define name="i">
+ <element name="i">
+ <text/>
+ </element>
+ </define>
+ <define name="b">
+ <element name="i">
+ <text/>
+ </element>
+ </define>
+ <define name="u">
+ <element name="u">
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="b"/>
+ <ref name="i"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="sub">
+ <element name="sub">
+ <data type="NCName"/>
+ </element>
+ </define>
+ <define name="sup">
+ <element name="sup">
+ <data type="NCName"/>
+ </element>
+ </define>
+ <define name="del">
+ <element name="del">
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="b"/>
+ <ref name="i"/>
+ <ref name="link"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="link">
+ <element name="link">
+ <attribute name="xlink:href">
+ <data type="anyURI"/>
+ </attribute>
+ <attribute name="xlink:type">
+ <data type="NCName"/>
+ </attribute>
+ <data type="anyURI"/>
+ </element>
+ </define>
+ <define name="endnote">
+ <element name="endnote">
+ <choice>
+ <element name="number">
+ <data type="integer"/>
+ </element>
+ <element name="symbol">
+ <text/>
+ </element>
+ </choice>
+ <element name="note">
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="b"/>
+ <ref name="br"/>
+ <ref name="del"/>
+ <ref name="i"/>
+ <ref name="link"/>
+ <ref name="sub"/>
+ <ref name="sup"/>
+ <ref name="u"/>
+ <element name="em">
+ <data type="NCName"/>
+ </element>
+ <element name="sub">
+ <data type="NCName"/>
+ </element>
+ </choice>
+ </oneOrMore>
+ </element>
+ </element>
+ </define>
+</grammar>
diff --git a/data/doc/sisu/model/xml/output/rng/sax.rng b/data/doc/sisu/model/xml/output/rng/sax.rng
new file mode 100644
index 00000000..a2df4fed
--- /dev/null
+++ b/data/doc/sisu/model/xml/output/rng/sax.rng
@@ -0,0 +1,374 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- % sax output model, part of SiSU and distributed under the same license -->
+<grammar xmlns:xlink="http://www.w3.org/1999/xlink" ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <element name="document">
+ <element name="head">
+ <oneOrMore>
+ <choice>
+ <ref name="br"/>
+ <ref name="meta"/>
+ <element name="creator">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <oneOrMore>
+ <choice>
+ <text/>
+ <element name="link">
+ <attribute name="xlink:href">
+ <data type="anyURI"/>
+ </attribute>
+ <attribute name="xlink:type">
+ <data type="NCName"/>
+ </attribute>
+ <data type="anyURI"/>
+ </element>
+ </choice>
+ </oneOrMore>
+ </element>
+ <element name="date">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date_available">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date_created">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date_issued">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date_modified">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="date_valid">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="keywords">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <text/>
+ </element>
+ <element name="language">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <data type="NCName"/>
+ </element>
+ <element name="meta">
+ <data type="NMTOKEN"/>
+ </element>
+ <element name="rights">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="link"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ <element name="source">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <text/>
+ </element>
+ <element name="structure">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <text/>
+ </element>
+ <element name="subject">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <text/>
+ </element>
+ <element name="title">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <text/>
+ </element>
+ <element name="type">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <text/>
+ </element>
+ <element name="source_control">
+ <oneOrMore>
+ <choice>
+ <ref name="br"/>
+ <ref name="meta"/>
+ <element name="sc">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <text/>
+ </element>
+ </choice>
+ </oneOrMore>
+ </element>
+ </choice>
+ </oneOrMore>
+ </element>
+ <element name="body">
+ <oneOrMore>
+ <element name="object">
+ <attribute name="id"/>
+ <!--
+ <attribute name="id">
+ <data type="integer"/>
+ </attribute>
+ -->
+ <element name="ocn">
+ <text/>
+ <!--
+ <data type="integer"/>
+ -->
+ </element>
+ <optional>
+ <element name="text">
+ <attribute name="class">
+ <data type="NCName"/>
+ </attribute>
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="b"/>
+ <ref name="br"/>
+ <ref name="del"/>
+ <ref name="en"/>
+ <ref name="i"/>
+ <ref name="link"/>
+ <ref name="sub"/>
+ <ref name="sup"/>
+ <ref name="u"/>
+ <element name="image">
+ <optional>
+ <attribute name="alt"/>
+ </optional>
+ <optional>
+ <attribute name="height">
+ <data type="integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="width">
+ <data type="integer"/>
+ </attribute>
+ </optional>
+ <attribute name="xlink:actuate">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="xlink:href"/>
+ <attribute name="xlink:show">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="xlink:type">
+ <data type="NCName"/>
+ </attribute>
+ </element>
+ </choice>
+ </oneOrMore>
+ </element>
+ </optional>
+ <optional>
+ <element name="table">
+ <attribute name="align">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="bgcolor">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="border">
+ <data type="integer"/>
+ </attribute>
+ <attribute name="cellpadding">
+ <data type="integer"/>
+ </attribute>
+ <attribute name="summary"/>
+ <attribute name="width"/>
+ <oneOrMore>
+ <element name="tr">
+ <oneOrMore>
+ <element name="td">
+ <attribute name="valign">
+ <data type="NCName"/>
+ </attribute>
+ <attribute name="width"/>
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="b"/>
+ <ref name="i"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </oneOrMore>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
+ <zeroOrMore>
+ <element name="endnote">
+ <optional>
+ <attribute name="notenumber">
+ <data type="integer"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="symbol"/>
+ </optional>
+ <choice>
+ <element name="number">
+ <data type="integer"/>
+ </element>
+ <element name="symbol">
+ <text/>
+ </element>
+ </choice>
+ <element name="note">
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="b"/>
+ <ref name="br"/>
+ <ref name="del"/>
+ <ref name="i"/>
+ <ref name="link"/>
+ <ref name="sup"/>
+ <ref name="u"/>
+ <element name="em">
+ <data type="NCName"/>
+ </element>
+ <element name="sub">
+ <data type="NCName"/>
+ </element>
+ </choice>
+ </oneOrMore>
+ </element>
+ </element>
+ </zeroOrMore>
+ </element>
+ </oneOrMore>
+ </element>
+ </element>
+ </start>
+ <define name="meta">
+ <element name="meta">
+ <text/>
+ </element>
+ </define>
+ <define name="br">
+ <element name="br">
+ <empty/>
+ </element>
+ </define>
+ <define name="b">
+ <element name="b">
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="en"/>
+ <ref name="i"/>
+ <ref name="link"/>
+ <ref name="sup"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="i">
+ <element name="i">
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="b"/>
+ <ref name="br"/>
+ <ref name="sup"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="en">
+ <element name="en">
+ <text/>
+ </element>
+ </define>
+ <define name="sub">
+ <element name="sub">
+ <data type="NCName"/>
+ </element>
+ </define>
+ <define name="sup">
+ <element name="sup">
+ <data type="NCName"/>
+ </element>
+ </define>
+ <define name="link">
+ <element name="link">
+ <attribute name="xlink:href">
+ <data type="anyURI"/>
+ </attribute>
+ <attribute name="xlink:type">
+ <data type="NCName"/>
+ </attribute>
+ <oneOrMore>
+ <choice>
+ <data type="anyURI"/>
+ <text/>
+ <ref name="b"/>
+ <ref name="i"/>
+ <ref name="sup"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="u">
+ <element name="u">
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="b"/>
+ <ref name="i"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+ <define name="del">
+ <element name="del">
+ <oneOrMore>
+ <choice>
+ <text/>
+ <ref name="b"/>
+ <ref name="i"/>
+ <ref name="link"/>
+ </choice>
+ </oneOrMore>
+ </element>
+ </define>
+</grammar>
diff --git a/data/doc/sisu/model/xml/output/xsd/dom.xsd b/data/doc/sisu/model/xml/output/xsd/dom.xsd
new file mode 100644
index 00000000..3132338a
--- /dev/null
+++ b/data/doc/sisu/model/xml/output/xsd/dom.xsd
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- dom output model, part of SiSU and under the same license -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:element name="document">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="head"/>
+ <xs:element ref="body"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="head">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="header"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="header">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="meta"/>
+ <xs:choice>
+ <xs:element ref="creator"/>
+ <xs:element ref="date"/>
+ <xs:element ref="date_available"/>
+ <xs:element ref="date_created"/>
+ <xs:element ref="date_issued"/>
+ <xs:element ref="date_modified"/>
+ <xs:element ref="date_valid"/>
+ <xs:element ref="keywords"/>
+ <xs:element ref="language"/>
+ <xs:element ref="rights"/>
+ <xs:element ref="source"/>
+ <xs:element ref="structure"/>
+ <xs:element ref="subject"/>
+ <xs:element ref="title"/>
+ <xs:element ref="type"/>
+ <xs:element ref="source_control"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="creator" type="xs:string"/>
+ <xs:element name="date" type="xs:NMTOKEN"/>
+ <xs:element name="date_available" type="xs:NMTOKEN"/>
+ <xs:element name="date_created" type="xs:NMTOKEN"/>
+ <xs:element name="date_issued" type="xs:NMTOKEN"/>
+ <xs:element name="date_modified" type="xs:NMTOKEN"/>
+ <xs:element name="date_valid" type="xs:NMTOKEN"/>
+ <xs:element name="keywords" type="xs:string"/>
+ <xs:element name="language" type="xs:NCName"/>
+ <xs:element name="rights">
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="link"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="source" type="xs:string"/>
+ <xs:element name="structure" type="xs:string"/>
+ <xs:element name="subject" type="xs:string"/>
+ <xs:element name="title" type="xs:string"/>
+ <xs:element name="type" type="xs:string"/>
+ <xs:element name="source_control">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="br"/>
+ <xs:element ref="meta"/>
+ <xs:element ref="sc"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="sc">
+ <xs:complexType mixed="true">
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="body">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="heading1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="heading1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="heading"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="contents1"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="heading2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="heading2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="heading"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="contents1"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="heading3"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="heading3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="heading"/>
+ <xs:element maxOccurs="unbounded" ref="contents1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="contents1">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="heading"/>
+ <xs:element ref="content"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="contents2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="contents2">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="heading"/>
+ <xs:element ref="content"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="contents3"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="contents3">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="heading"/>
+ <xs:element ref="content"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="meta" type="xs:string"/>
+ <xs:element name="br">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="heading">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="object"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="content">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="object"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!--
+ <define name="contents1">
+ <element name="contents1">
+ <ref name="heading"/>
+ <element name="content">
+ <oneOrMore>
+ <ref name="object"/>
+ </oneOrMore>
+ </element>
+ </element>
+ </define>
+ -->
+ <xs:element name="object">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="ocn"/>
+ <xs:element minOccurs="0" ref="nametag"/>
+ <xs:choice>
+ <xs:element ref="table"/>
+ <xs:element ref="text"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="id" use="required" type="xs:integer"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ocn" type="xs:string"/>
+ <xs:element name="nametag" type="xs:string"/>
+ <xs:element name="table">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ </xs:sequence>
+ <xs:attribute name="align" use="required" type="xs:NCName"/>
+ <xs:attribute name="bgcolor" use="required" type="xs:NCName"/>
+ <xs:attribute name="border" use="required" type="xs:integer"/>
+ <xs:attribute name="cellpadding" use="required" type="xs:integer"/>
+ <xs:attribute name="summary" use="required"/>
+ <xs:attribute name="width" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="tr">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="td"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="td">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="i"/>
+ <xs:element ref="i"/>
+ </xs:choice>
+ <xs:attribute name="valign" use="required" type="xs:NCName"/>
+ <xs:attribute name="width" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="text">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="i"/>
+ <xs:element ref="del"/>
+ <xs:element ref="endnote"/>
+ <xs:element ref="i"/>
+ <xs:element ref="link"/>
+ <xs:element ref="br"/>
+ <xs:element name="endnote">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="number"/>
+ <xs:element name="note">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="i"/>
+ <xs:element ref="link"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="image"/>
+ <xs:element name="sub" type="xs:string"/>
+ </xs:choice>
+ <xs:attribute name="class" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="number" type="xs:integer"/>
+ <xs:element name="image">
+ <xs:complexType>
+ <xs:attribute name="height" use="required" type="xs:integer"/>
+ <xs:attribute name="width" use="required" type="xs:integer"/>
+ <xs:attribute ref="xlink:actuate" use="required"/>
+ <xs:attributeGroup ref="xlink:href"/>
+ <xs:attribute ref="xlink:show" use="required"/>
+ <xs:attribute ref="xlink:type" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <!--
+ <define name="content">
+ <element name="content">
+ <zeroOrMore>
+ <ref name="object"/>
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="b">
+ <element name="b">
+ <text/>
+ </element>
+ </define>
+ -->
+ <xs:element name="i" type="xs:string"/>
+ <xs:element name="u">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="i"/>
+ <xs:element ref="i"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="sub" type="xs:NCName"/>
+ <xs:element name="sup" type="xs:NCName"/>
+ <xs:element name="del">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="i"/>
+ <xs:element ref="i"/>
+ <xs:element ref="link"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="link">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attributeGroup ref="xlink:href1"/>
+ <xs:attribute ref="xlink:type" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="endnote">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="number"/>
+ <xs:element ref="symbol"/>
+ </xs:choice>
+ <xs:element name="note">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="i"/>
+ <xs:element ref="br"/>
+ <xs:element ref="del"/>
+ <xs:element ref="i"/>
+ <xs:element ref="link"/>
+ <xs:element ref="sub"/>
+ <xs:element ref="sup"/>
+ <xs:element ref="u"/>
+ <xs:element ref="em"/>
+ <xs:element ref="sub"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="symbol" type="xs:string"/>
+ <xs:element name="em" type="xs:NCName"/>
+</xs:schema>
diff --git a/data/doc/sisu/model/xml/output/xsd/sax.xsd b/data/doc/sisu/model/xml/output/xsd/sax.xsd
new file mode 100644
index 00000000..db6eb147
--- /dev/null
+++ b/data/doc/sisu/model/xml/output/xsd/sax.xsd
@@ -0,0 +1,332 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- % sax output model, part of SiSU and distributed under the same license -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
+ <xs:element name="document">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="head"/>
+ <xs:element ref="body"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="head">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="br"/>
+ <xs:element ref="meta"/>
+ <xs:element ref="creator"/>
+ <xs:element ref="date"/>
+ <xs:element ref="date_available"/>
+ <xs:element ref="date_created"/>
+ <xs:element ref="date_issued"/>
+ <xs:element ref="date_modified"/>
+ <xs:element ref="date_valid"/>
+ <xs:element ref="keywords"/>
+ <xs:element ref="language"/>
+ <xs:element name="meta" type="xs:NMTOKEN"/>
+ <xs:element ref="rights"/>
+ <xs:element ref="source"/>
+ <xs:element ref="structure"/>
+ <xs:element ref="subject"/>
+ <xs:element ref="title"/>
+ <xs:element ref="type"/>
+ <xs:element ref="source_control"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="creator">
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="link">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attributeGroup ref="xlink:href"/>
+ <xs:attribute ref="xlink:type" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="date">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:NMTOKEN">
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="date_available">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:NMTOKEN">
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="date_created">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:NMTOKEN">
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="date_issued">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:NMTOKEN">
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="date_modified">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:NMTOKEN">
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="date_valid">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:NMTOKEN">
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="keywords">
+ <xs:complexType mixed="true">
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="language">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:NCName">
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="rights">
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="link"/>
+ </xs:sequence>
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="source">
+ <xs:complexType mixed="true">
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="structure">
+ <xs:complexType mixed="true">
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="subject">
+ <xs:complexType mixed="true">
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="title">
+ <xs:complexType mixed="true">
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="type">
+ <xs:complexType mixed="true">
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="source_control">
+ <xs:complexType>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element ref="br"/>
+ <xs:element ref="meta"/>
+ <xs:element ref="sc"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="sc">
+ <xs:complexType mixed="true">
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="body">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="object"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="object">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="ocn"/>
+ <xs:element minOccurs="0" ref="text"/>
+ <xs:element minOccurs="0" ref="table"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="endnote"/>
+ </xs:sequence>
+ <xs:attribute name="id" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ocn" type="xs:string"/>
+ <xs:element name="text">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="b"/>
+ <xs:element ref="br"/>
+ <xs:element ref="del"/>
+ <xs:element ref="en"/>
+ <xs:element ref="i"/>
+ <xs:element ref="link"/>
+ <xs:element ref="sub"/>
+ <xs:element ref="sup"/>
+ <xs:element ref="u"/>
+ <xs:element ref="image"/>
+ </xs:choice>
+ <xs:attribute name="class" use="required" type="xs:NCName"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="image">
+ <xs:complexType>
+ <xs:attribute name="alt"/>
+ <xs:attribute name="height" type="xs:integer"/>
+ <xs:attribute name="width" type="xs:integer"/>
+ <xs:attribute ref="xlink:actuate" use="required"/>
+ <xs:attributeGroup ref="xlink:href1"/>
+ <xs:attribute ref="xlink:show" use="required"/>
+ <xs:attribute ref="xlink:type" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="table">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="tr"/>
+ </xs:sequence>
+ <xs:attribute name="align" use="required" type="xs:NCName"/>
+ <xs:attribute name="bgcolor" use="required" type="xs:NCName"/>
+ <xs:attribute name="border" use="required" type="xs:integer"/>
+ <xs:attribute name="cellpadding" use="required" type="xs:integer"/>
+ <xs:attribute name="summary" use="required"/>
+ <xs:attribute name="width" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="tr">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="td"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="td">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="b"/>
+ <xs:element ref="i"/>
+ </xs:choice>
+ <xs:attribute name="valign" use="required" type="xs:NCName"/>
+ <xs:attribute name="width" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="endnote">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element ref="number"/>
+ <xs:element ref="symbol"/>
+ </xs:choice>
+ <xs:element ref="note"/>
+ </xs:sequence>
+ <xs:attribute name="notenumber" type="xs:integer"/>
+ <xs:attribute name="symbol"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="number" type="xs:integer"/>
+ <xs:element name="symbol" type="xs:string"/>
+ <xs:element name="note">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="b"/>
+ <xs:element ref="br"/>
+ <xs:element ref="del"/>
+ <xs:element ref="i"/>
+ <xs:element ref="link"/>
+ <xs:element ref="sup"/>
+ <xs:element ref="u"/>
+ <xs:element ref="em"/>
+ <xs:element ref="sub"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="em" type="xs:NCName"/>
+ <xs:element name="sub" type="xs:NCName"/>
+ <xs:element name="meta" type="xs:string"/>
+ <xs:element name="br">
+ <xs:complexType/>
+ </xs:element>
+ <xs:element name="b">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="en"/>
+ <xs:element ref="i"/>
+ <xs:element ref="link"/>
+ <xs:element ref="sup"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="i">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="b"/>
+ <xs:element ref="br"/>
+ <xs:element ref="sup"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="en" type="xs:string"/>
+ <xs:element name="sup" type="xs:NCName"/>
+ <xs:element name="link">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="b"/>
+ <xs:element ref="i"/>
+ <xs:element ref="sup"/>
+ </xs:choice>
+ <xs:attributeGroup ref="xlink:href"/>
+ <xs:attribute ref="xlink:type" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="u">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="b"/>
+ <xs:element ref="i"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="del">
+ <xs:complexType mixed="true">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="b"/>
+ <xs:element ref="i"/>
+ <xs:element ref="link"/>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>