# coding: utf-8
=begin
* Name: SiSU
* Description: a framework for document structuring, publishing and search
* Author: Ralph Amissah
* Copyright: (C) 1997 - 2010, Ralph Amissah, All Rights Reserved.
* License: GPL 3 or later:
SiSU, a framework for document structuring, publishing and search
Copyright (C) Ralph Amissah
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 3 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, see .
If you have Internet connection, the latest version of the GPL should be
available at these locations:
* SiSU uses:
* Standard SiSU markup syntax,
* Standard SiSU meta-markup syntax, and the
* Standard SiSU object citation numbering and system
* Hompages:
* Download:
* Ralph Amissah
** Description: relaxng flow/logic
=end
module SiSU_relaxng
require "#{SiSU_lib}/sysenv"
class RelaxNG
def gpl3_or_later
@gpl3_or_later =<.
If you have Internet connection, the latest version of the GPL should be
available at these locations:
* SiSU uses:
* Standard SiSU markup syntax,
* Standard SiSU meta-markup syntax, and the
* Standard SiSU object citation numbering and system
* Hompages:
* Download:
* Ralph Amissah
** Description: html generation, processing
=end
RELAXNG
end
def rnc_name
def output_sax
'sisu_sax.rnc'
end
def output_dom
'sisu_dom.rnc'
end
def output_xhtml
'sisu_xhtml.rnc'
end
def input_sax
'sisu_sax.rnc'
end
def input_dom
'sisu_dom.rnc'
end
def input_node
'sisu_node.rnc'
end
self
end
def rng_name
def output_sax
'sisu_sax.rng'
end
def output_dom
'sisu_dom.rng'
end
def output_xhtml
'sisu_xhtml.rng'
end
def input_sax
'sisu_sax.rng'
end
def input_dom
'sisu_dom.rng'
end
def input_node
'sisu_node.rng'
end
self
end
def xsd_name
def output_sax
'sisu_sax.xsd'
end
def output_dom
'sisu_dom.xsd'
end
def output_xhtml
'sisu_xhtml.xsd'
end
def input_sax
'sisu_sax.xsd'
end
def input_dom
'sisu_dom.xsd'
end
def input_node
'sisu_node.xsd'
end
self
end
#def fn_dtd_sax
# 'sisu_sax.dtd'
#end
#def fn_dtd_dom
# 'sisu_dom.dtd'
#end
#def fn_dtd_node
# 'sisu_node.dtd'
#end
#def fn_dtd_xhtml
# 'sisu_xhtml.dtd'
#end
def rnc_sisu_object_input
@relaxng =< 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
}+
}
}
RELAXNG
end
def rnc_sisu_object_dal
@relaxng =< 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
}+
}
}
RELAXNG
end
def rnc_model_output_sax
@relaxng =<