]> granicus.if.org Git - docbook-dsssl/commitdiff
Sample customization layers
authorNorman Walsh <ndw@nwalsh.com>
Fri, 27 Feb 2004 18:10:17 +0000 (18:10 +0000)
committerNorman Walsh <ndw@nwalsh.com>
Fri, 27 Feb 2004 18:10:17 +0000 (18:10 +0000)
docbook/relaxng/src/sdocbook.rnc [new file with mode: 0644]
docbook/relaxng/src/slides-ng.rnc [new file with mode: 0644]
docbook/relaxng/src/website-ng.rnc [new file with mode: 0644]
docbook/relaxng/src/ws-rddl.rnc [new file with mode: 0644]

diff --git a/docbook/relaxng/src/sdocbook.rnc b/docbook/relaxng/src/sdocbook.rnc
new file mode 100644 (file)
index 0000000..6a1dd94
--- /dev/null
@@ -0,0 +1,196 @@
+# This file is part of DocBook NG: The "Bourbon" Release.
+
+# This schema is a reinterpretation of "Simplified DocBook" in the NG framework.
+#
+# Author: Norman Walsh, <ndw@nwalsh.com>
+# Source: Derived from DocBook XML V4.3
+# Release: $Id$
+#
+# ======================================================================
+
+namespace ctrl = "http://nwalsh.com/xmlns/schema-control/"
+namespace rng  = "http://relaxng.org/ns/structure/1.0"
+namespace s = "http://www.ascc.net/xml/schematron"
+namespace db = "http://docbook.org/docbook-ng"
+default namespace = "http://docbook.org/docbook-ng"
+
+start = db.article
+
+include "hier.rnc" {
+   sections.optional = db.section*
+   sections.required = db.section+
+
+   article.components.optional = db.section*
+   article.components.required = db.section+
+
+   db.ackno = notAllowed
+}
+
+include "bibliography.rnc" {
+   db.article =
+      element article {
+         article.attlist,
+         article.info,
+         ((blocks+, article.components.optional) | article.components.required),
+         (db.appendix | navigation.components | db.ackno)*
+      }
+
+   db.bibliography =
+      element bibliography {
+         bibliography.attlist,
+         bibliography.info,
+         blocks*,
+         (db.bibliodiv+ | db.bibliomixed+)
+      }
+
+   db.bibliodiv =
+      element bibliodiv {
+         bibliodiv.attlist,
+         bibliodiv.info,
+         blocks*,
+         db.bibliomixed+
+      }
+}
+
+include "calstbl.rnc"
+include "htmltbl.rnc"
+
+include "pool.rnc" {
+   common.attributes =
+      id.attribute?,
+      xml.lang.attribute?,
+      xml.base.attribute?,
+      revisionflag.attribute?,
+      version.attribute?
+
+   common.attributes.idreq =
+      id.attribute,
+      xml.lang.attribute?,
+      xml.base.attribute?,
+      revisionflag.attribute?,
+      version.attribute?
+
+   info.elements =
+      db.abstract
+    | db.author
+    | db.authorgroup
+    | db.copyright
+    | db.date
+    | db.edition
+    | db.editor
+    | db.issuenum
+    | db.keywordset
+    | db.legalnotice
+    | db.othercredit
+    | db.pubdate
+    | db.publishername
+    | db.releaseinfo
+    | db.revhistory
+    | db.subjectset
+    | db.volumenum
+
+   bibliographic.elements =
+      info.elements
+    | db.abbrev
+    | db.affiliation
+    | db.citetitle
+    | db.orgname
+    | db.personblurb
+    | db.personname
+    | db.subtitle
+    | db.title
+    | db.titleabbrev
+
+   list.blocks = db.itemizedlist|db.orderedlist|db.variablelist
+   admonition.blocks = db.note
+   verbatim.blocks = db.literallayout|db.programlisting
+   para.blocks = db.para
+   publishing.blocks = db.blockquote|db.sidebar
+   graphic.blocks = db.mediaobject
+   informal.blocks = db.informaltable
+   formal.blocks = db.example|db.figure|db.table
+   technical.blocks = empty
+   synopsis.blocks = empty
+
+   blocks.nopara =
+      list.blocks
+    | admonition.blocks
+    | formal.blocks
+    | informal.blocks
+    | publishing.blocks
+    | graphic.blocks
+    | technical.blocks
+    | verbatim.blocks
+    | synopsis.blocks
+    | db.revhistory
+
+   ubiq.inlines = db.inlinemediaobject
+
+   publishing.inlines =
+      db.abbrev
+    | db.acronym
+    | db.emphasis
+    | db.footnote
+    | db.footnoteref
+    | db.phrase
+    | db.quote
+
+   os.inlines =
+      db.filename
+    | db.command
+    | db.computeroutput
+    | db.userinput
+
+   programming.inlines = empty
+   product.inlines = db.trademark
+
+   bibliography.inlines =
+      db.citetitle
+    | db.author
+    | db.personname
+    | db.orgname
+    | db.editor
+
+   markup.inlines = db.literal|db.email
+
+   technical.inlines = db.replaceable | db.option | db.systemitem
+   error.inlines = empty
+   oo.inlines = empty
+
+   link.inlines = db.xref
+
+   gui.inlines = empty
+   keyboard.inlines = empty
+   math.inlines = empty
+
+   # ======================================================================
+
+   person.author = db.personname
+   credit.contentmodel = person.author
+
+   db.abbrev =
+      element abbrev {
+         abbrev.attlist,
+         (docbook.text | db.trademark)*
+      }
+
+   db.acronym =
+      element acronym {
+         acronym.attlist,
+         (docbook.text | db.trademark)*
+      }
+
+   db.affiliation =
+      element affiliation {
+         affiliation.attlist,
+         db.jobtitle*,
+         db.orgname?
+      }
+
+   db.para =
+      element para {
+         para.attlist,
+         para.info,
+         inlines*
+      }
+}
diff --git a/docbook/relaxng/src/slides-ng.rnc b/docbook/relaxng/src/slides-ng.rnc
new file mode 100644 (file)
index 0000000..f17fd2f
--- /dev/null
@@ -0,0 +1,128 @@
+# This file is part of Slides NG
+
+# This schema is a reinterpretation of "Slides" in the NG framework.
+#
+# Author: Norman Walsh, <ndw@nwalsh.com>
+# Source: Derived from Slides V3.3.0
+# Release: $Id$
+#
+# ======================================================================
+
+namespace ctrl = "http://nwalsh.com/xmlns/schema-control/"
+namespace rng  = "http://relaxng.org/ns/structure/1.0"
+namespace s = "http://www.ascc.net/xml/schematron"
+namespace db = "http://docbook.org/docbook-ng"
+default namespace = "http://docbook.org/docbook-ng"
+
+include "sdocbook.rnc" {
+   start = db.slides
+
+   blocks |= db.speakernotes | db.screen
+}
+
+[
+   db:refname [ "slides" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   local.slides.attributes = empty
+
+   slides.role.attribute = attribute role { text }
+
+   slides.attlist =
+      slides.role.attribute?
+    & common.attributes
+    & common.linking.attributes
+    & local.slides.attributes
+
+   slides.info = docbook.info.titlereq
+
+   db.slides =
+      element slides {
+         slides.attlist,
+         slides.info,
+         db.speakernotes?,
+         db.foil*,
+         db.foilgroup*
+      }
+}
+
+[
+   db:refname [ "foilgroup" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   local.foilgroup.attributes = empty
+
+   foilgroup.role.attribute = attribute role { text }
+
+   foilgroup.attlist =
+      foilgroup.role.attribute?
+    & common.attributes
+    & common.linking.attributes
+    & local.foilgroup.attributes
+
+   foilgroup.info = docbook.info.titlereq
+
+   db.foilgroup =
+      element foilgroup {
+         foilgroup.attlist,
+         foilgroup.info,
+         blocks*,
+         db.foil+
+      }
+}
+
+[
+   db:refname [ "foil" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   local.foil.attributes = empty
+
+   foil.role.attribute = attribute role { text }
+
+   foil.attlist =
+      foil.role.attribute?
+    & common.attributes
+    & common.linking.attributes
+    & local.foil.attributes
+
+   foil.info = docbook.info.titlereq
+
+   db.foil =
+      element foil {
+         foil.attlist,
+         foil.info,
+         blocks*
+      }
+}
+
+[
+   db:refname [ "speakernotes" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   local.speakernotes.attributes = empty
+
+   speakernotes.role.attribute = attribute role { text }
+
+   speakernotes.attlist =
+      speakernotes.role.attribute?
+    & common.attributes
+    & common.linking.attributes
+    & local.speakernotes.attributes
+
+   speakernotes.info = docbook.info.titlereq
+
+   db.speakernotes =
+      element speakernotes {
+         speakernotes.attlist,
+         speakernotes.info,
+         blocks*
+      }
+}
diff --git a/docbook/relaxng/src/website-ng.rnc b/docbook/relaxng/src/website-ng.rnc
new file mode 100644 (file)
index 0000000..cc10b3a
--- /dev/null
@@ -0,0 +1,331 @@
+# This file is part of Website NG
+
+# This schema is a reinterpretation of "Website" in the NG framework.
+#
+# Author: Norman Walsh, <ndw@nwalsh.com>
+# Source: Derived from Website V2.5.0
+# Release: $Id$
+#
+# ======================================================================
+
+namespace ctrl = "http://nwalsh.com/xmlns/schema-control/"
+namespace rng  = "http://relaxng.org/ns/structure/1.0"
+namespace s = "http://www.ascc.net/xml/schematron"
+namespace db = "http://docbook.org/docbook-ng"
+namespace ws = "http://docbook.org/docbook-ng/website"
+default namespace = "http://docbook.org/docbook-ng"
+
+rddl = notAllowed
+
+include "qandaset.rnc"
+include "htmlform.rnc"
+include "ws-rddl.rnc"
+
+include "sdocbook.rnc" {
+   start = ws.webpage
+
+   inlines |= db.tag
+
+   list.blocks |= db.simplelist
+
+   blocks |= ws.webtoc | ws.rss
+
+   link.inlines |= db.olink
+}
+
+# ======================================================================
+
+[
+   db:refname [ "olink" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   local.olink.attributes = empty
+
+   olink.role.attribute = attribute role { text }
+
+   olink.attlist =
+      olink.role.attribute?
+    & common.attributes
+    & local.olink.attributes
+    & attribute linkmode { xsd:IDREF }?
+    & attribute localinfo { text }?
+    & attribute type { text }?
+    & attribute targetdoc { text }?
+    & attribute targetptr { text }?
+    & attribute xrefstyle { text }?
+
+   db.olink =
+      element olink {
+         olink.attlist,
+         inlines*
+      }
+}
+
+# ======================================================================
+
+[
+   db:refname [ "ws:webpage" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   local.webpage.attributes = empty
+
+   webpage.role.attribute = attribute role { text }
+
+   webpage.attlist =
+      webpage.role.attribute?
+    & common.attributes.idreq
+    & common.linking.attributes
+    & local.webpage.attributes
+    & attribute navto { "yes" | "no" }?
+
+   ws.webpage =
+      element ws:webpage {
+         webpage.attlist,
+         ws.config*,
+         ws.head,
+         component.contentmodel,
+         db.appendix*,
+         db.bibliography*
+      }
+}
+
+# ======================================================================
+
+[
+   db:refname [ "ws:head" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   local.head.attributes = empty
+
+   head.role.attribute = attribute role { text }
+
+   head.attlist =
+      head.role.attribute?
+    & common.attributes
+    & common.linking.attributes
+    & local.head.attributes
+
+   ws.head =
+      element ws:head {
+         head.attlist,
+         db.title,
+         db.titleabbrev?,
+         db.subtitle?,
+         ws.summary?,
+         ws.base?,
+         ws.keywords?,
+         (db.copyright
+          | db.author
+          | db.edition
+          | ws.meta
+          | ws.headlink
+          | ws.script
+          | ws.style
+          | db.abstract
+          | db.revhistory
+          | rddl)*
+      }
+}
+
+# ======================================================================
+
+[
+   db:refname [ "ws:meta" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   meta.attlist =
+      attribute http-equiv { text }?
+    & attribute name { text }?
+    & attribute content { text }
+
+   ws.meta =
+      element ws:meta {
+         meta.attlist,
+         empty
+      }
+}
+
+# ======================================================================
+
+[
+   db:refname [ "ws:headlink" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   headlink.attlist =
+      attribute href { text }?
+    & attribute media { text }?
+    & attribute name { text }?
+    & attribute rel { text }?
+    & attribute rev { text }?
+    & attribute src { text }?
+    & attribute title { text }?
+    & attribute type { text }?
+
+   ws.headlink =
+      element ws:headlink {
+         headlink.attlist,
+         empty
+      }
+}
+
+# ======================================================================
+
+[
+   db:refname [ "ws:script" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   script.attlist =
+      attribute src { text }?
+    & attribute language { text }?
+    & attribute type { text }?
+
+   ws.script =
+      element ws:script {
+         script.attlist,
+         text
+      }
+}
+
+# ======================================================================
+
+[
+   db:refname [ "ws:style" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   style.attlist =
+      attribute src { text }?
+    & attribute type { text }?
+
+   ws.style =
+      element ws:style {
+         style.attlist,
+         text
+      }
+}
+
+# ======================================================================
+
+[
+   db:refname [ "ws:config" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   config.attlist =
+      common.attributes
+    & attribute param { text }
+    & attribute value { text }
+    & attribute altval { text }?
+
+   ws.config =
+      element ws:config {
+         config.attlist,
+         empty
+      }
+}
+
+# ======================================================================
+
+[
+   db:refname [ "ws:summary" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   summary.attlist =
+      common.attributes
+
+   ws.summary =
+      element ws:summary {
+         summary.attlist,
+         inlines*
+      }
+}
+
+# ======================================================================
+
+[
+   db:refname [ "ws:base" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   base.attlist =
+      attribute href { text }
+    & attribute target { text }?
+
+   ws.base =
+      element ws:base {
+         base.attlist,
+         empty
+      }
+}
+
+# ======================================================================
+
+[
+   db:refname [ "ws:keywords" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   keywords.attlist =
+      common.attributes
+
+   ws.keywords =
+      element ws:keywords {
+         keywords.attlist,
+         text
+      }
+}
+
+# ======================================================================
+
+[
+   db:refname [ "ws:webtoc" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   webtoc.attlist =
+      common.attributes
+
+   ws.webtoc =
+      element ws:webtoc {
+         webtoc.attlist,
+         empty
+      }
+}
+
+# ======================================================================
+
+[
+   db:refname [ "ws:rss" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   rss.attlist =
+      common.attributes
+    & attribute feed { text }
+
+   ws.rss =
+      element ws:rss {
+         rss.attlist,
+         empty
+      }
+}
diff --git a/docbook/relaxng/src/ws-rddl.rnc b/docbook/relaxng/src/ws-rddl.rnc
new file mode 100644 (file)
index 0000000..3b81081
--- /dev/null
@@ -0,0 +1,57 @@
+# This file is part of Website NG
+
+# This schema is a reinterpretation of "Website" in the NG framework.
+#
+# Author: Norman Walsh, <ndw@nwalsh.com>
+# Source: Derived from Website V2.5.0
+# Release: $Id$
+#
+# ======================================================================
+
+namespace ctrl = "http://nwalsh.com/xmlns/schema-control/"
+namespace rng  = "http://relaxng.org/ns/structure/1.0"
+namespace s = "http://www.ascc.net/xml/schematron"
+namespace db = "http://docbook.org/docbook-ng"
+namespace ws = "http://docbook.org/docbook-ng/website"
+namespace rddl = "http://www.rddl.org/"
+namespace xlink = "http://www.w3.org/1999/xlink"
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+default namespace = "http://docbook.org/docbook-ng"
+
+rddl |= rddl.resource
+inlines |= rddl
+
+# ======================================================================
+
+[
+   db:refname [ "rddl:resource" ]
+   db:refpurpose [ "" ]
+]
+div {
+
+   rddl.resource =
+      element rddl:resource {
+         id.attribute?,
+         xml.lang.attribute?,
+         xml.base.attribute?,
+
+         [ a:defaultValue = "simple" ]
+         attribute xlink:type { "simple" }?,
+
+         attribute xlink:arcrole { text }?,
+
+         [ a:defaultValue = "http://www.rddl.org/#resource" ]
+         attribute xlink:role { "http://www.rddl.org/#resource" }?,
+
+         attribute xlink:href { text }?,
+         attribute xlink:title { text }?,
+
+         [ a:defaultValue = "none" ]
+         attribute xlink:embed { "none" }?,
+
+         [ a:defaultValue = "none" ]
+         attribute xlink:actuate { "none" }?,
+
+         inlines*
+      }
+}