aboutsummaryrefslogtreecommitdiffhomepage
path: root/data/doc/sisu/model
diff options
context:
space:
mode:
Diffstat (limited to 'data/doc/sisu/model')
-rw-r--r--data/doc/sisu/model/README14
-rw-r--r--data/doc/sisu/model/relaxng/sisu_object_model_dom.rnc148
-rw-r--r--data/doc/sisu/model/relaxng/sisu_object_model_input.rnc186
-rw-r--r--data/doc/sisu/model/relaxng/sisu_object_model_metaverse.rnc210
-rw-r--r--data/doc/sisu/model/relaxng/sisu_object_model_sax.rnc86
-rw-r--r--data/doc/sisu/model/relaxng/sisu_object_model_xhtml.rnc105
-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
21 files changed, 3622 insertions, 0 deletions
diff --git a/data/doc/sisu/model/README b/data/doc/sisu/model/README
new file mode 100644
index 00000000..0b03e45e
--- /dev/null
+++ b/data/doc/sisu/model/README
@@ -0,0 +1,14 @@
+Models of SiSU xml
+[early attempt at modelling, not definitive]
+* xsd - xml schema
+* rnc - relax ng compact format
+* rng - relax ng xml format
+
+* input (markup) formats
+ * sax (.sxs.xml)
+ * dom (.sxd.xml)
+ * node (.sxn.xml)
+
+* output formats
+ * sax (sax.xml)
+ * dom (dom.xml)
diff --git a/data/doc/sisu/model/relaxng/sisu_object_model_dom.rnc b/data/doc/sisu/model/relaxng/sisu_object_model_dom.rnc
new file mode 100644
index 00000000..2ab5cf79
--- /dev/null
+++ b/data/doc/sisu/model/relaxng/sisu_object_model_dom.rnc
@@ -0,0 +1,148 @@
+#%% sisu object model: input
+# Name: SiSU information Structuring Universe - Structured information, Serialized Units
+# Author: Ralph Amissah
+# http://www.jus.uio.no/sisu
+# http://www.jus.uio.no/sisu/SiSU/download.html
+
+# Description: sisu object models in relaxNG dom model base
+# used for preliminary modeling, not definitive
+
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Ralph Amissah
+
+# License: GPL 2 or later
+
+# Summary of GPL 2
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+# If you have Internet connection, the latest version of the GPL should be
+# available at these locations:
+# http://www.fsf.org/licenses/gpl.html
+# http://www.gnu.org/copyleft/gpl.html
+# http://www.jus.uio.no/sisu/gpl2.fsf
+
+# SiSU was first released to the public on January 4th 2005
+
+# SiSU uses:
+#
+# Standard SiSU markup syntax,
+# Standard SiSU meta-markup syntax, and the
+# Standard SiSU object citation numbering and system
+#
+# © Ralph Amissah 1997, current 2006.
+# All Rights Reserved.
+
+#%% definitions
+#dublin core:
+element-dc =
+ ( attribute title { text }
+ #attribute subtitle { text }?
+ & attribute creator { text }?
+ & attribute subject { text }?
+ & attribute description { text }?
+ & attribute publisher { text }?
+ & attribute contributor { text }?
+ & attribute date { text }?
+ & attribute datecreated { text }?
+ & attribute dateissued { text }?
+ & attribute dateavailable { text }?
+ & attribute datevalid { text }?
+ & attribute datemodified { text }?
+ & attribute type { text }?
+ & attribute format { text }?
+ & attribute identifier { text }?
+ & attribute source { text }?
+ & attribute relation { text }?
+ & attribute coverage { text }?
+ & attribute rights { text }?
+ & attribute keywords { text }? )
+#element-paragraph =
+# text
+# element b
+# element i
+# element u
+#endnotes, zero or many, embedded in text:
+element-endnote =
+ element endnote {
+ element number { text },
+ element note { text }
+ }*
+#body text/contents
+element-text =
+ element mytext {
+ text
+ & element-endnote
+ }
+#object citation number, unique sequential number for objects:
+element-ocn =
+ element ocn { text }
+#object container:
+element-object =
+ element object {
+ element-ocn,
+ #note nametag is only used in element-heading, object is used in both heading and content ->
+ element nametag { text }?,
+ element-text
+ }+
+#heading object container
+element-heading =
+ element heading {
+ element-object
+ }
+#content/paragraph/main text object container
+element-content =
+ element content {
+ element-object*
+ },
+#text includes <en> endnote pointer numbers, and <b> <i> <u> etc.
+#note includes <b> <i> <u> etc.
+#%% structure
+element document {
+ #document head:
+ element head {
+ attribute id { text },
+ element-dc,
+ attribute copyright { text }?
+ #element title {
+ # attribute xml:lang { text },
+ # text
+ #}
+ },
+ #document body:
+ element body {
+ element heading1 {
+ element-heading,
+ element heading2 {
+ element-heading,
+ element heading3 {
+ element-heading,
+ element contents1 {
+ element-heading,
+ element-content*,
+ element contents2 {
+ element-heading,
+ element-content*,
+ element contents3 {
+ element-heading,
+ element-content*
+ }*
+ }*
+ }+
+ }+
+ }+
+ }+
+ }
+}
+
diff --git a/data/doc/sisu/model/relaxng/sisu_object_model_input.rnc b/data/doc/sisu/model/relaxng/sisu_object_model_input.rnc
new file mode 100644
index 00000000..56c2606c
--- /dev/null
+++ b/data/doc/sisu/model/relaxng/sisu_object_model_input.rnc
@@ -0,0 +1,186 @@
+#%% sisu object model: input
+# Name: SiSU information Structuring Universe - Structured information, Serialized Units
+# Author: Ralph Amissah
+# http://www.jus.uio.no/sisu
+# http://www.jus.uio.no/sisu/SiSU/download.html
+
+# Description: sisu object models in relaxNG input model base
+# used for preliminary modeling, not definitive
+
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Ralph Amissah
+
+# License: GPL 2 or later
+
+# Summary of GPL 2
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+# If you have Internet connection, the latest version of the GPL should be
+# available at these locations:
+# http://www.fsf.org/licenses/gpl.html
+# http://www.gnu.org/copyleft/gpl.html
+# http://www.jus.uio.no/sisu/gpl2.fsf
+
+# SiSU was first released to the public on January 4th 2005
+
+# SiSU uses:
+#
+# Standard SiSU markup syntax,
+# Standard SiSU meta-markup syntax, and the
+# Standard SiSU object citation numbering and system
+#
+# © Ralph Amissah 1997, current 2006.
+# All Rights Reserved.
+
+#%% definitions
+# dublin core:
+element-semantic =
+ element semantic {
+ # dublin core:
+ element title { text }
+ & element creator { text }?
+ & element subject { text }?
+ & element description { text }?
+ & element publisher { text }?
+ & element contributor { text }?
+ & element date { text }?
+ & element date.created { text }?
+ & element date.issued { text }?
+ & element date.available { text }?
+ & element date.valid { text }?
+ & element date.modified { text }?
+ & element type { text }?
+ & element format { text }?
+ & element identifier { text }?
+ & element source { text }?
+ & element relation { text }?
+ & element coverage { text }?
+ & element rights { text }?
+ & element keywords { text }?
+ # extended semantic metadata:
+ & attribute subtitle { text }?
+ & attribute illustrator { text }?
+ & attribute translator { text }?
+ & attribute prepared_by { text }?
+ & attribute digitized_by { text }?
+ & attribute language { text }?
+ & attribute language.original { text }?
+ & attribute classify.pg { text }?
+ & attribute classify.isbn { text }?
+ & attribute classify.dewey { text }?
+ & attribute classify.loc { text }?
+ & attribute prefix.a { text }?
+ & attribute prefix.b { text }?
+ & attribute suffix { text }?
+ & attribute comments { text }?
+ & attribute abstract { text }?
+ # & attribute information { text }?
+ & attribute contact { text }?
+ & attribute links { text }?
+ }
+element-processing =
+ element processing {
+ attribute structure { text }?
+ & attribute level { text }?
+ & attribute markup { text }?
+ & attribute bold { text }?
+ & attribute italics { text }?
+ & attribute papersize { text }?
+ & attribute vocabulary { text }?
+ & element date_scheme { text }?
+ & element date.issued.scheme { text }?
+ & element date.available.scheme { text }?
+ & element date.valid.scheme { text }?
+ & element date.modified.scheme { text }?
+ }?
+element-head =
+ element head {
+ # processing instructions, and semantic data, distinguish?:
+ element metadata {
+ element title { text },
+ element file { text },
+ element generator { text },
+ element-semantic,
+ element-processing
+ }+
+ }
+# body text/contents
+# includes <b> <i> <u> <del> <ins> <indent1> <bullet> etc.
+element-txt =
+ element txt {
+ text*
+ & element b { text }*
+ & element i { text }*
+ & element u { text }*
+ & element ins { text }*
+ & element del { text }*
+ }
+element-endnote =
+ element endnote {
+ element number { text },
+ element note { element-txt }+
+ }+
+element-para =
+ element para {
+ # attribute paragraph_format { text },
+ element-txt+
+ & element-endnote?
+ }
+element-external_space =
+ element external_space {
+ # ignored by sisu, provide program needs
+ element program {
+ # e.g. kdissert
+ element name { text },
+ element xpos { text },
+ element ypos { text },
+ element font { text },
+ element outline_color { text },
+ element text_color { text },
+ element comment { text }
+ }*
+ }*,
+#%% structure
+ element document {
+ # document head:
+ element-head,
+ # document body:
+ element body {
+ # object, a unit of text, usually a paragraph with any associated endnotes
+ element node {
+ element structure {
+ # structure document using either node:heading levels or node:heading relationships:
+ # (i) sisu default uses node:heading levels (1-6 or A-C,1-3) to build document structure
+ element level { text }?,
+ # (ii) sisu alternatively could use node:heading relationship information to build document structure
+ element node.id { text },
+ element node.parent { text },
+ element node.child { text }*
+ },
+ element node.objects {
+ element object.heading {
+ # nametag used only in headings, especially important for segmented html
+ element nametag { text },
+ element-para
+ },
+ element object.para {
+ element-para
+ }*
+ }+,
+ element-external_space
+ }+
+ }
+ }
+
diff --git a/data/doc/sisu/model/relaxng/sisu_object_model_metaverse.rnc b/data/doc/sisu/model/relaxng/sisu_object_model_metaverse.rnc
new file mode 100644
index 00000000..913aee90
--- /dev/null
+++ b/data/doc/sisu/model/relaxng/sisu_object_model_metaverse.rnc
@@ -0,0 +1,210 @@
+#%% sisu object model: input
+# Name: SiSU information Structuring Universe - Structured information, Serialized Units
+# Author: Ralph Amissah
+# http://www.jus.uio.no/sisu
+# http://www.jus.uio.no/sisu/SiSU/download.html
+
+# Description: sisu object models in relaxNG metaverse model base
+# used for preliminary modeling, not definitive
+
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Ralph Amissah
+
+# License: GPL 2 or later
+
+# Summary of GPL 2
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+# If you have Internet connection, the latest version of the GPL should be
+# available at these locations:
+# http://www.fsf.org/licenses/gpl.html
+# http://www.gnu.org/copyleft/gpl.html
+# http://www.jus.uio.no/sisu/gpl2.fsf
+
+# SiSU was first released to the public on January 4th 2005
+
+# SiSU uses:
+#
+# Standard SiSU markup syntax,
+# Standard SiSU meta-markup syntax, and the
+# Standard SiSU object citation numbering and system
+#
+# © Ralph Amissah 1997, current 2006.
+# All Rights Reserved.
+
+#%% definitions
+# dublin core:
+element-semantic =
+ element semantic {
+ # dublin core:
+ element title { text }
+ & element creator { text }?
+ & element subject { text }?
+ & element description { text }?
+ & element publisher { text }?
+ & element contributor { text }?
+ & element date { text }?
+ & element date.created { text }?
+ & element date.issued { text }?
+ & element date.available { text }?
+ & element date.valid { text }?
+ & element date.modified { text }?
+ & element type { text }?
+ & element format { text }?
+ & element identifier { text }?
+ & element source { text }?
+ & element relation { text }?
+ & element coverage { text }?
+ & element rights { text }?
+ & element keywords { text }?
+ # extended semantic metadata:
+ & attribute subtitle { text }?
+ & attribute illustrator { text }?
+ & attribute translator { text }?
+ & attribute prepared_by { text }?
+ & attribute digitized_by { text }?
+ & attribute language { text }?
+ & attribute language.original { text }?
+ & attribute classify.pg { text }?
+ & attribute classify.isbn { text }?
+ & attribute classify.dewey { text }?
+ & attribute classify.loc { text }?
+ & attribute prefix.a { text }?
+ & attribute prefix.b { text }?
+ & attribute suffix { text }?
+ & attribute comments { text }?
+ & attribute abstract { text }?
+ # & attribute information { text }?
+ & attribute contact { text }?
+ & attribute links { text }?
+ }
+element-processing =
+ element processing {
+ attribute structure { text }?
+ & attribute level { text }?
+ & attribute markup { text }?
+ & attribute bold { text }?
+ & attribute italics { text }?
+ & attribute papersize { text }?
+ & attribute vocabulary { text }?
+ & element date_scheme { text }?
+ & element date.issued.scheme { text }?
+ & element date.available.scheme { text }?
+ & element date.valid.scheme { text }?
+ & element date.modified.scheme { text }?
+ }?
+element-head =
+ element head {
+ # processing instructions, and semantic data, distinguish?:
+ element metadata {
+ element title { text },
+ element file { text },
+ element generator { text },
+ element-semantic,
+ element-processing
+ }+
+ }
+# body text/contents
+# includes <b> <i> <u> <del> <ins> <indent1> <bullet> etc.
+element-txt =
+ element txt {
+ text*
+ & element b { text }*
+ & element i { text }*
+ & element u { text }*
+ & element ins { text }*
+ & element del { text }*
+ }
+element-checksum.endnote = element checksum.clean { text }
+element-endnote =
+ element endnote {
+ element number { text },
+ element note { element-txt }+,
+ element-checksum.endnote
+ }+
+element-checksum.para =
+ element checksum.para {
+ element checksum.clean { text },
+ element checksum.marked { text }
+ }
+element-para =
+ element para {
+ # attribute paragraph_format { text },
+ element-txt+
+ & element-endnote?
+ }
+element-object =
+ element object {
+ element-para,
+ element-checksum.para
+ }
+# object citation number, unique sequential number for objects:
+element-ocn = element ocn { text }
+element-object_structure_summary =
+ element-ocn,
+ # type: heading level value 1 -6, or normal text
+ element type { text },
+ # type number: sequential number for designated type
+ element type_number { text },
+ # type category: sequential number for designated category, e.g. sequentially counting all headers
+ element category_number { text }
+element-external_space =
+ element external_space {
+ # ignored by sisu, provide program needs
+ element program {
+ # e.g. kdissert
+ element name { text },
+ element xpos { text },
+ element ypos { text },
+ element font { text },
+ element outline_color { text },
+ element text_color { text },
+ element comment { text }
+ }*
+ }*,
+#%% structure
+ element document {
+ # document head:
+ element-head,
+ # document body:
+ element body {
+ # object, a unit of text, usually a paragraph with any associated endnotes
+ element node {
+ element structure {
+ # structure document using either node:heading levels or node:heading relationships:
+ # (i) sisu default uses node:heading levels (1-6 or A-C,1-3) to build document structure
+ element level { text }?,
+ # (ii) sisu alternatively could use node:heading relationship information to build document structure
+ element node.id { text },
+ element node.parent { text },
+ element node.child { text }*
+ },
+ element node.objects {
+ element object.heading {
+ element-object_structure_summary,
+ # nametag used only in headings, especially important for segmented html
+ element nametag { text },
+ element-object
+ },
+ element object.para {
+ element-object_structure_summary,
+ element-object
+ }*
+ }+,
+ element-external_space
+ }+
+ }
+ }
+
diff --git a/data/doc/sisu/model/relaxng/sisu_object_model_sax.rnc b/data/doc/sisu/model/relaxng/sisu_object_model_sax.rnc
new file mode 100644
index 00000000..0c82dae1
--- /dev/null
+++ b/data/doc/sisu/model/relaxng/sisu_object_model_sax.rnc
@@ -0,0 +1,86 @@
+#%% sisu object model: input
+# Name: SiSU information Structuring Universe - Structured information, Serialized Units
+# Author: Ralph Amissah
+# http://www.jus.uio.no/sisu
+# http://www.jus.uio.no/sisu/SiSU/download.html
+
+# Description: sisu object models in relaxNG sax model base
+# used for preliminary modeling, not definitive
+
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Ralph Amissah
+
+# License: GPL 2 or later
+
+# Summary of GPL 2
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+# If you have Internet connection, the latest version of the GPL should be
+# available at these locations:
+# http://www.fsf.org/licenses/gpl.html
+# http://www.gnu.org/copyleft/gpl.html
+# http://www.jus.uio.no/sisu/gpl2.fsf
+
+# SiSU was first released to the public on January 4th 2005
+
+# SiSU uses:
+#
+# Standard SiSU markup syntax,
+# Standard SiSU meta-markup syntax, and the
+# Standard SiSU object citation numbering and system
+#
+# © Ralph Amissah 1997, current 2006.
+# All Rights Reserved.
+
+# Ralph Amissah: ralph@amissah.com
+# ralph.amissah@gmail.com
+
+#%% definitions
+#text includes <en> endnote pointer numbers, and <b> <i> <u> etc.
+#note includes <b> <i> <u> etc.
+
+#%% structure
+element document {
+ #document head:
+ element head {
+ #dublin core:
+ element dc {
+ attribute class { text }
+ }+
+ },
+ #document body:
+ element body {
+ #object, a unit of text, usually a paragraph with any associated endnotes
+ element object {
+ attribute number { text },
+ element ocn { text },
+ #body content/text, whether ordinary paragraph or heading:
+ element text {
+ #attributes indicates whether ordinary text (norm) or heading, (levels h[1-6]):
+ attribute class { text },
+ text
+ },
+ #endnotes, zero or many:
+ element endnote {
+ attribute notenumber { text },
+ #endnotes number:
+ element number { text },
+ #endnotes content/text:
+ element note { text }
+ }*
+ }+
+ }
+}
+
diff --git a/data/doc/sisu/model/relaxng/sisu_object_model_xhtml.rnc b/data/doc/sisu/model/relaxng/sisu_object_model_xhtml.rnc
new file mode 100644
index 00000000..c4930a40
--- /dev/null
+++ b/data/doc/sisu/model/relaxng/sisu_object_model_xhtml.rnc
@@ -0,0 +1,105 @@
+#%% sisu object model: input
+# Name: SiSU information Structuring Universe - Structured information, Serialized Units
+# Author: Ralph Amissah
+# http://www.jus.uio.no/sisu
+# http://www.jus.uio.no/sisu/SiSU/download.html
+
+# Description: sisu object models in relaxNG xhtml model base
+# used for preliminary modeling, not definitive
+
+# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Ralph Amissah
+
+# License: GPL 2 or later
+
+# Summary of GPL 2
+
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+# If you have Internet connection, the latest version of the GPL should be
+# available at these locations:
+# http://www.fsf.org/licenses/gpl.html
+# http://www.gnu.org/copyleft/gpl.html
+# http://www.jus.uio.no/sisu/gpl2.fsf
+
+# SiSU was first released to the public on January 4th 2005
+
+# SiSU uses:
+#
+# Standard SiSU markup syntax,
+# Standard SiSU meta-markup syntax, and the
+# Standard SiSU object citation numbering and system
+#
+# © Ralph Amissah 1997, current 2006.
+# All Rights Reserved.
+
+#%% definitions
+#dublin core:
+element-dc =
+ ( attribute title { text }
+ #attribute subtitle { text }?
+ & attribute creator { text }?
+ & attribute subject { text }?
+ & attribute description { text }?
+ & attribute publisher { text }?
+ & attribute contributor { text }?
+ & attribute date { text }?
+ & attribute datecreated { text }?
+ & attribute dateissued { text }?
+ & attribute dateavailable { text }?
+ & attribute datevalid { text }?
+ & attribute datemodified { text }?
+ & attribute type { text }?
+ & attribute format { text }?
+ & attribute identifier { text }?
+ & attribute source { text }?
+ & attribute relation { text }?
+ & attribute coverage { text }?
+ & attribute rights { text }?
+ & attribute keywords { text }? ),
+#text includes <en> endnote pointer numbers, and <b> <i> <u> etc.
+#note includes <b> <i> <u> etc.
+#%% structure
+element document {
+ #document head:
+ element head {
+ attribute id { text },
+ element-dc,
+ attribute copyright { text }?
+ #element title {
+ # attribute xml:lang { text },
+ # text
+ #}
+ },
+ #document body:
+ element body {
+ #object, unit
+ element object {
+ #may or may not be a heading, if heading provide heading level [1-6]:
+ element heading { text }?,
+ #object citation number, unique sequential number for objects:
+ element ocn { text },
+ #body content/text, whether heading or ordinary paragraph:
+ element text { text },
+ #endnotes, zero or many:
+ element endnote {
+ #endnotes number:
+ element en_n { text },
+ #endnotes content/text:
+ element note { text }
+ }*
+ }+
+ }
+}
+
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>