[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [dita] Proposal for Triage: RelaxNG for DITA Vocabulary
+1 for officially supporting RELAX NG schemas
Jirka
On 22.5.2012 23:06, Scott Hudson wrote:
> I agree. This is extremely powerful.
>
> Eliot, I would be willing to help with any editorial work as well.
>
> Thanks and best regards,
>
> --Scott
>
> Scott Hudson | Pelco by Schneider Electric | United States | Standards Lead
> Ph: +1-970-282-1952 | M: +1-720-663-7268 | Site: pdn.pelco.com |
> scott.hudson@schneider-electric.com
>
>
>
>
>
> On 5/22/12 10:31 PM, "Eliot Kimber" <ekimber@rsicms.com> wrote:
>
>> George Bina from SynchroSoft (OxygenXML) has developed a technique and
>> supporting software for using RelaxNG for defining DITA vocabulary modules.
>> He has made this work available through the open-source dita-ng project:
>> http://code.google.com/p/dita-ng/. This project provides a complete RelaxNG
>> expression of the DITA 1.2 vocabulary and constraint modules and document
>> type shells.
>>
>> George presented on his work at the DITA North America conference and those
>> of us who saw it were very excited.
>>
>> To date, the main barrier to using RelaxNG for DITA vocabulary has been that
>> RelaxNG did not have a built-in mechanism for defining default attribute
>> values. This made it unsuitable for normal DITA use where we don't want the
>> @class and @domains attribute explicit in our source documents.
>>
>> RelaxNG now has a companion specification that provides a way to define
>> attribute defaults. George has implemented processing for this specification
>> as an extension to the standard RelaxNG Java library (and has or will
>> contribute that code back to the main projects). It works with any
>> Java-based process that can add the necessarily libraries, including the
>> DITA Open Toolkit.
>>
>> With the ability to define default attributes through RelaxNG, it now
>> becomes possible to use RelaxNG with DITA documents just as you would DTDs
>> or XSDs.
>>
>> That's useful in and of itself.
>>
>> But what really got us excited was the way that RelaxNG's design makes it
>> about as easy as it could possibly be to do module integration and
>> constraint.
>>
>> Here is the RelaxNG for the module inclusions for the topic document type
>> shell
>>
>> <!-- Include modules -->
>> <include href="../../base/rng/topic.mod.rng">
>> <!--
>> Redefine the infotype entity to exclude
>> other topic types and disallow nesting
>> -->
>> <define name="topic-info-types">
>> <ref name="topic.element"/>
>> </define>
>> </include>
>> <include href="../../base/rng/highlightDomain.mod.rng"/>
>> <include href="../../base/rng/utilitiesDomain.mod.rng"/>
>> <include href="../../base/rng/indexingDomain.mod.rng"/>
>> <include href="../../base/rng/hazardstatementDomain.mod.rng"/>
>> <include href="abbreviateDomain.mod.rng"/>
>> <include href="uiDomain.mod.rng"/>
>> <include href="programmingDomain.mod.rng"/>
>> <include href="softwareDomain.mod.rng"/>
>>
>>
>> That's it. Each module declares how it contributes itself to the larger
>> whole like so:
>>
>> The @domains contribution:
>>
>> <define name="domains-atts-value" combine="choice">
>> <value>(topic abbrev-d)</value>
>> </define>
>>
>> Content model extensions:
>>
>> <!-- Define domain extension patterns -->
>> <define name="abbrev-d-term">
>> <ref name="abbreviated-form.element"/>
>> </define>
>>
>> <!-- Extend the patterns with the domain contribution -->
>> <define name="term" combine="choice">
>> <ref name="abbrev-d-term"/>
>> </define>
>>
>>
>> This is simply saying that the <term> element's content is extended by
>> adding <abbreviated-form> as an additional choice.
>>
>> What this means in practice is that the integration of modules is done
>> simply by referencing the modules you want--each module manages its own
>> integration details. There is no separate integration configuration
>> activity.
>>
>> This makes RelaxNG very attractive as the primary form of vocabulary
>> definition *as long as* one can then reliably generate the DTD and XSD
>> versions of the vocabulary. George is working on implementing that process
>> now and I will probably do some work on it as well.
>>
>> Personally, I'm very excited about this because it gives me the potential to
>> greatly simplify the task of defining and maintaining large vocabulary sets,
>> such as DITA for Publishers and allows the easy provisioning of both DTD and
>> XSD forms.
>>
>> RelaxNG also provides for embedding Schematron rules directly in the RelaxNG
>> documents, meaning that a single document can define both the base XML rules
>> and additional rules checkable through Schematron processing (this is also
>> possible in XSD 1.1 with its new "assertion" feature, but support for XSD
>> 1.1 is still not universal).
>>
>> RelaxNG also provides for embedded documentation (similar to how you can do
>> it in XSD).
>>
>> Even if you never used the RelaxNG modules directly with documents, they
>> would have tremendous value as the development source for the working
>> modules.
>>
>> Given all that, I would like to propose the inclusion of RelaxNG as a
>> recognized DITA schema language in addition to DTD and XSD. I am more than
>> willing to act as champion for this proposal and do the editorial work.
>>
>> Cheers,
>>
>> Eliot
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dita-unsubscribe@lists.oasis-open.org
> For additional commands, e-mail: dita-help@lists.oasis-open.org
>
--
------------------------------------------------------------------
Jirka Kosek e-mail: jirka@kosek.cz http://xmlguru.cz
------------------------------------------------------------------
Professional XML consulting and training services
DocBook customization, custom XSLT/XSL-FO document processing
------------------------------------------------------------------
OASIS DocBook TC member, W3C Invited Expert, ISO JTC1/SC34 member
------------------------------------------------------------------
Attachment:
signature.asc
Description: OpenPGP digital signature
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]