OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [docbook] DTD from extended RNC


There is a relax-ng mode in emacs?
  Spoiled somewhat from the James Clark original,
but still usable?

HTH

On 21 May 2018 at 12:43, N. Raghavendra <nyraghu27132@gmail.com> wrote:
> I would like to use DocBook for a mathematics book.  For that, I need to
> extend the DocBook 5.1 schema, to incorporate statements like
> "Definition", "Lemma", "Proposition", "Theorem", and "Corollary".  I
> would like both RELAX NG and DTD versions of the extended schema; the
> DTD is necessary for the PSGML mode in Emacs.
>
> I have made a first attempt at extending the RNC.  The resulting schema,
> which I've called `mono.rnc' is deemed valid by `jing':
>
> $ jing -c mono.rnc && echo "VALID"
> VALID
>
> I am also able to convert the RNC to an RNG with trang:
>
> $ trang mono.rnc mono.rng && echo "SUCCESS"
> SUCCESS
>
> Now, to use PSGML, I have to convert the RNC to a DTD.  However, when I
> try to do that with `trang', the command aborts with several errors:
>
> $ trang mono.rnc mono.dtd
>
> /home/raghu/xml/xml/mono.rnc:14:1: error: sorry, combining definitions
> with combine="choice" is not supported
>
> /pkg/docbook/rng/docbookxi.rnc:264:6: error: sorry, ambiguous attribute
> choice not handled (attribute "type" from namespace
> "http://www.w3.org/1999/xlink";)
>
> [...]
>
> I have enclosed the schema `mono.rnc' below.  I would be grateful if you
> have any suggestions.  I have asked this question in an ongoing thread
> at comp.text.xml
>
> https://groups.google.com/d/msg/comp.text.xml/SYhl-SKcKO0/qpVJIKbCBQAJ
>
> but am posting it here, because this is the canonical place for the
> question.
>
> Thanks,
> Raghu.
>
> ---------- mono.rnc ----------
>
> # The namespace for all unqualified names.  We use the prefix `db' for
> # it.
>
> default namespace db = "http://docbook.org/ns/docbook";
>
> ## Include the DocBook schema which allows XInclude.
>
> include "/pkg/docbook/rng/docbookxi.rnc"
>
> ## Add a new choice pattern `db.statement.blocks' to the pattern
> ## `db.formal.blocks'.  This makes the `db.statement.blocks' pattern a
> ## valid option in any context where `db.formal.blocks' appears.
>
> db.formal.blocks |= db.statement.blocks
>
> ## The `db.statement.blocks' pattern is itself a choice pattern, whose
> ## values are the patterns that match definitions, theorems, etc.
>
> db.statement.blocks =
>   db.corollary
> | db.definition
> | db.lemma
> | db.notation
> | db.observation
> | db.proposition
> | db.theorem
>
> ## Here is the definition of the individual values of the
> ## `db.statement.blocks' choice pattern.
>
> div {
>   db.corollary   = element corollary   { db._statement.content }
>
>   db.definition  = element definition  { db._statement.content }
>
>   db.lemma       = element lemma       { db._statement.content }
>
>   db.notation    = element notation    { db._statement.content }
>
>   db.observation = element observation { db._statement.content }
>
>   db.proposition = element proposition { db._statement.content }
>
>   db.theorem     = element theorem     { db._statement.content }
> }
>
> ## The content of an individual value of the `db.statement.blocks'
> ## choice pattern.  Adapted from `db.example'.
>
> div {
>   db._statement.content =
>     db._statement.attlist
>   , db._statement.info
>   , db.all.blocks +
>   , db.caption ?
>
>   db._statement.attlist =
>     db._statement.role.attribute ?
>   & db.common.attributes
>   & db.common.linking.attributes
>   & db._statement.label.attribute ?
>   & db._statement.floatstyle.attribute ?
>   & ( db._statement.width.attribute | db._statement.pgwide.attribute ) ?
>
>   db._statement.info                 = db._info.title.onlyreq
>
>   db._statement.role.attribute       = attribute role { text }
>
>   db._statement.label.attribute      = db.label.attribute
>
>   db._statement.floatstyle.attribute = db.floatstyle.attribute
>
>   db._statement.width.attribute      = db.width.characters.attribute
>
>   db._statement.pgwide.attribute     = db.pgwide.attribute
> }
>
> ---------- mono.rnc ends here ----------
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: docbook-unsubscribe@lists.oasis-open.org
> For additional commands, e-mail: docbook-help@lists.oasis-open.org
>



-- 
Dave Pawson
XSLT XSL-FO FAQ.
Docbook FAQ.


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]