SlideShare a Scribd company logo
RELAX NG and DITA: An
Almost Perfect Match
How RELAX NG makes everything
easier for DITA vocabulary
1/14/2016 Contrext, LLC 1
Eliot Kimber
Contrext, LLC
George Bina
Synchro SoftBalisage 2014
About the Authors
• Eliot Kimber
– Independent consultant focusing on DITA analysis, design, and
implementation
– Doing SGML and XML for cough 30 years cough
– Founding member of the DITA Technical Committee
– Founding member of the XML Working Group
– Co-editor of HyTime 2nd Edition standard (ISO/IEC 10744)
– Primary developer and founder of the DITA for Publishers project
– Author of DITA for Practitioners, Vol 1 (XML Press)
• George Bina
– Founding partner of Syncro Soft SRL, makers of oXygen XML
– Contributor to many open-source projects, including DITA-NG and
oNVDL
– More than 15 years experience working with XML and related
technologies
1/14/2016 Contrext, LLC 2
Agenda
• Overview of DITA’s modular vocabulary
architecture
• How DTDs don’t work too well for it
• How XSDs work even less well
• How RELAX NG does things almost perfectly
1/14/2016 Contrext, LLC 3
Executive Summary
• DITA depends on parameterized content models and
attributes to implement integration, extension, and
constraint
• The available document grammar technologies support
this to varying degrees
– DTD: Works but tedious, verbose, and error prone
– XSD: Almost works, tedious, verbose, not reliable or
interchangeable. Redefine feature is evil.
– RELAX NG: Works with minimum verbosity and maximal
ease
• Use of RELAX NG enables generation of conforming
DTD and XSD versions of DITA grammars.
1/14/2016 Contrext, LLC 4
DTD: Works but barely
1/14/2016 Contrext, LLC 5
XSD: Works But Not For This
Purpose
1/14/2016 Contrext, LLC 6
RELAX NG: Just Right
Balisage 2014 Contrext, LLC 7
OVERVIEW OF DITA
VOCABULARY ARCHITECTURE
1/14/2016 Contrext, LLC 8
Relevant DITA Facts
• DITA 1.2 is current version.
• DITA 1.3 in progress, target YE 2014/1Q2015
• DITA standardizes the coding patterns for vocabulary
implementations in specific XML grammar languages
– DITA 1.2: DTD and XSD. DTD and XSD maintained
independently
– DITA 1.3: RELAX NG, DTD, and XSD. DTD and XSD generated
from RELAX NG
• Conforming vocabulary implementations must reflect
these coding standards
• There is no single “DITA DTD”: All working grammars
are “local” to a given group of DITA users
1/14/2016 Contrext, LLC 9
DITA Vocabulary Composition
1/14/2016 Contrext, LLC 10
Document
Type Shell 1
Document
Type Shell 2
Document Type
Shells
Vocabulary Modules (Invariant)
Topic Type A
Topic Type B
Constraint K
Domain Y
Domain Z
User Group 1
User Group 2
domains=“(topic A) (topic Y-d) (topic Z-d)”
domains=“(topic A) (topic B) (topic K-c) (topic Z-d)”
Vocabulary is Modular
• DITA vocabulary defined as an extensible set of
modules
– Map types, topic types, domains (mix-in)
• Modules are invariant for a given version in time
• A unique set of modules defines a unique “DITA
document type”
– Specified by @domains attribute on root element:
domains=“(topic concept) (topic hi-d)”
1/14/2016 Contrext, LLC 11
All Modification is By Imposed
Configuration
• Modules are “integrated” into a “document
type shell”
• Integration depends on use of grammar’s
parameterization features
• Can add constraints that further adjust
(constrain) content models and attributes
• Logically, integration extends content models,
constraint restricts them.
1/14/2016 Contrext, LLC 12
Modular Vocabulary Requirements
• Provide the @domains attribute contribution for
the module
• Parameterize content models:
– Redefine the content model in its entirety
– Allow additional element types where any given
element type is allowed (mix-in of domains)
• Parameterize attribute lists:
– Redefine the attribute list in its entirety
– Extend the attribute list with global attributes
• Provide common reusable content model
fragments
1/14/2016 Contrext, LLC 13
CHALLENGES WITH DITA
VOCABULARY GRAMMARS
1/14/2016 Contrext, LLC 15
Challenges Posed by DTD
Syntax
• Need two files for each topic type or domain
• Syntax is cryptic
• Syntax is difficult to debug
• Lots of opportunities for error
• Few convenient tools for operating on DTDs as
structured data
• Simple task of creating document type shells
is hard, even for experts
1/14/2016 Contrext, LLC 16
Challenges Posed by XML
Schema
• The XSD redefine facility
• Limits on redefine
• Domain integration declarations
• Verbosity of the markup due to class/element
distinction
1/14/2016 Contrext, LLC 17
XSD Redefine: Thank You For
Playing
• Seriously over-constrained
• Ambiguous definition in the XSD 1.0 spec
• Incompatible implementations (maybe)
• Deprecated in XSD 1.1
• Resulting XSD structures very different in
pattern from original DTD or RNG models
• Result: DITA 1.1 and 1.2 XSDs are not generally
constrainable
1/14/2016 Contrext, LLC 18
Particle Preservation
Constraint: Why?
• When redefining a content model, must preserve
all particles
• For sequence groups, mean you can’t simply omit
a member of the sequence via redefine:
– Original: A, B?, C
– Desired redefinition: A, C
– No can do: particle B must be represented
• Solution:
– Refactor as a sequence of choice groups
– Can redefine any group to be empty
1/14/2016 Contrext, LLC 19
XSD Override: Need
Implementations
• The XSD 1.1 Override feature should be
exactly what DITA needs
• Not yet implemented widely enough
• Thus, can’t use for DITA 1.3
• However, as DITA 1.3 XSDs are generated,
could implement it at any time it becomes
appropriate to do so
1/14/2016 Contrext, LLC 20
RELAX NG Makes Everything
Better
• Syntax and semantics match very well to DITA
patterns and practice
• Patterns can unilaterally extend other patterns
– Matches perfectly to DITA domain extension
– Makes domains “self integrating”
• Document type shells become simple
inclusion lists (almost)
• XML syntax makes processing practical, if not
easy
1/14/2016 Contrext, LLC 21
Requirements Beyond base
RELAX NG
• RELAX NG DTD Compatibility
– DITA relies on defaulted attributes (@class,
@domains)
• DITA-specific module metadata to enable DTD
and XSD generation
1/14/2016 Contrext, LLC 22
Areas for RELAX NG
Improvement
• Requirements for attributes of type @ID
require special declarations in DITA shells
• No way to automatically compose attribute
values
– No equivalent to general internal text entities
within attribute default declarations
– Required by @domain attribute in document type
shells
1/14/2016 Contrext, LLC 23
COMPARISON OF DOCUMENT
TYPE SHELLS
1/14/2016 Contrext, LLC 24
DTD Shell
1/14/2016 Contrext, LLC 25
<!-- ============================================================= -->
<!-- TOPIC ENTITY DECLARATIONS -->
<!-- ============================================================= -->
<!ENTITY % concept-dec
PUBLIC "-//OASIS//ENTITIES DITA 1.2 Concept//EN"
"concept.ent"
>%concept-dec;
<!-- ============================================================= -->
<!-- DOMAIN ENTITY DECLARATIONS -->
<!-- ============================================================= -->
<!ENTITY % hi-d-dec
PUBLIC "-//OASIS//ENTITIES DITA 1.2 Highlight Domain//EN"
"../../base/dtd/highlightDomain.ent"
>%hi-d-dec;
<!ENTITY % ut-d-dec
PUBLIC "-//OASIS//ENTITIES DITA 1.2 Utilities Domain//EN"
"../../base/dtd/utilitiesDomain.ent"
>%ut-d-dec;
<!ENTITY % indexing-d-dec
PUBLIC "-//OASIS//ENTITIES DITA 1.2 Indexing Domain//EN"
"../../base/dtd/indexingDomain.ent"
>%indexing-d-dec;
<!ENTITY % hazard-d-dec
PUBLIC "-//OASIS//ENTITIES DITA 1.2 Hazard Statement Domain//EN"
"../../base/dtd/hazardstatementDomain.ent"
>%hazard-d-dec;
<!ENTITY % abbrev-d-dec
PUBLIC "-//OASIS//ENTITIES DITA 1.2 Abbreviated Form Domain//EN"
"abbreviateDomain.ent"
>%abbrev-d-dec;
<!ENTITY % pr-d-dec
PUBLIC "-//OASIS//ENTITIES DITA 1.2 Programming Domain//EN"
"programmingDomain.ent"
>%pr-d-dec;
<!ENTITY % sw-d-dec
PUBLIC "-//OASIS//ENTITIES DITA 1.2 Software Domain//EN"
"softwareDomain.ent"
>%sw-d-dec;
<!ENTITY % ui-d-dec
PUBLIC "-//OASIS//ENTITIES DITA 1.2 User Interface Domain//EN"
"uiDomain.ent"
>%ui-d-dec;
<!-- ============================================================= -->
<!-- DOMAIN ATTRIBUTE DECLARATIONS -->
<!-- ============================================================= -->
<!-- ============================================================= -->
<!-- DOMAIN EXTENSIONS -->
<!-- ============================================================= -->
<!-- One for each extended base element, with
the name of the domain(s) in which the
extension was declared -->
<!ENTITY % pre "pre |
%pr-d-pre; |
%sw-d-pre;|
%ui-d-pre;
">
<!ENTITY % keyword "keyword |
%pr-d-keyword; |
%sw-d-keyword; |
%ui-d-keyword;
">
<!ENTITY % ph "ph |
%hi-d-ph; |
%pr-d-ph; |
%sw-d-ph; |
%ui-d-ph;
">
<!ENTITY % term "term |
%abbrev-d-term;
">
<!ENTITY % fig "fig |
%pr-d-fig; |
%ut-d-fig;
">
<!ENTITY % dl "dl |
%pr-d-dl;
">
<!ENTITY % index-base "index-base |
%indexing-d-index-base;
">
<!ENTITY % note "note |
%hazard-d-note;
">
<!-- ============================================================= -->
<!-- DOMAIN ATTRIBUTE EXTENSIONS -->
<!-- ============================================================= -->
<!ENTITY % props-attribute-extensions "" >
<!ENTITY % base-attribute-extensions "" >
XSD Shell
1/14/2016 Contrext, LLC 26
<xs:schema xmlns:ditaarch="http://dita.oasis-open.org/architecture/2005/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<!-- ================ TOPIC DOMAINS ===================== -->
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:abbreviateDomainMod.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:deliveryTargetAttDomainMod.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:equationDomainMod.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:hazardDomain.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:highlightDomainMod.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:indexingDomain.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:markupDomainMod.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:mathmlDomainMod.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:programmingDomainMod.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:releaseManagementDomainMod.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:softwareDomainMod.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:svgDomainMod.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:uiDomainMod.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:utilitiesDomainMod.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:xmlDomainMod.xsd"/>
<!-- ================ GROUP DEFINITIONS ===================== -->
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:metaDeclGrp.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:tblDeclGrp.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:topicGrp.xsd"/>
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:conceptGrp.xsd"/>
<!-- ================= MODULE INCLUDE DEFINITION ================== -->
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:commonElementMod.xsd"/>
<!-- ======== Table elements ======== -->
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:tblDeclMod.xsd"/>
<!-- ======= MetaData elements, plus keyword and indexterm ======= -->
<xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:metaDeclMod.xsd"/>
<xs:redefine schemaLocation="urn:oasis:names:tc:dita:xsd:commonElementGrp.xsd">
<xs:group name="data">
<xs:choice>
<xs:group ref="data"/>
<xs:group ref="ut-d-data"/>
</xs:choice>
</xs:group>
<xs:group name="foreign">
<xs:choice>
<xs:group ref="foreign"/>
<xs:group ref="mathml-d-foreign"/>
<xs:group ref="svg-d-foreign"/>
</xs:choice>
</xs:group>
<xs:group name="note">
<xs:choice>
<xs:group ref="note"/>
<xs:group ref="hazard-d-note"/>
</xs:choice>
</xs:group>
<xs:group name="dl">
<xs:choice>
<xs:group ref="dl"/>
<xs:group ref="pr-d-dl"/>
</xs:choice>
</xs:group>
<xs:group name="fig">
<xs:choice>
<xs:group ref="fig"/>
<xs:group ref="equation-d-fig"/>
<xs:group ref="pr-d-fig"/>
<xs:group ref="ut-d-fig"/>
</xs:choice>
</xs:group>
<xs:group name="pre">
<xs:choice>
<xs:group ref="pre"/>
<xs:group ref="pr-d-pre"/>
<xs:group ref="sw-d-pre"/>
<xs:group ref="ui-d-pre"/>
</xs:choice>
</xs:group>
<xs:group name="div">
<xs:choice>
<xs:group ref="div"/>
<xs:group ref="equation-d-div"/>
</xs:choice>
</xs:group>
<xs:group name="keyword">
<xs:choice>
<xs:group ref="keyword"/>
<xs:group ref="markup-d-keyword"/>
<xs:group ref="pr-d-keyword"/>
<xs:group ref="sw-d-keyword"/>
<xs:group ref="ui-d-keyword"/>
<xs:group ref="xml-d-keyword"/>
</xs:choice>
RELAX NG Shell
1/14/2016 Contrext, LLC 27
<moduleMetadata>
<moduleType>topicshell</moduleType>
<moduleShortName>concept</moduleShortName>
<shellPublicIds>
<dtdShell>-//OASIS//DTD DITA<var presep=" " name="ditaver"/> Concept//EN</dtdShell>
<rncShell>urn:oasis:names:tc:dita:rnc:concept.rnc<var presep=":" name="ditaver"/></rncShell>
<rngShell>urn:oasis:names:tc:dita:rng:concept.rng<var presep=":" name="ditaver"/></rngShell>
<xsdShell>urn:oasis:names:tc:dita:xsd:concept.xsd<var presep=":" name="ditaver"/></xsdShell>
</shellPublicIds>
</moduleMetadata>
</moduleDesc>
<div>
<a:documentation>ROOT ELEMENT DECLARATION</a:documentation>
<start>
<ref name="concept.element"/>
</start>
</div>
<div>
<a:documentation>DOMAINS ATTRIBUTE</a:documentation>
<define name="domains-att" combine="interleave">
<optional>
<attribute name="domains"
a:defaultValue="(topic abbrev-d)
(topic concept) (topic equation-d) (topic hazard-d) (topic hi-d)
(topic indexing-d)
(topic markup-d xml-d) (topic markup-d) (topic mathml-d) (topic pr-d)
(topic relmgmt-d) (topic svg-d) (topic sw-d) (topic topic)
(topic ui-d)
(topic ut-d)
a(props deliveryTarget)"
/>
</optional>
</define>
</div>
<div>
<a:documentation>MODULE INCLUSIONS</a:documentation>
<include href="../../base/rng/topicMod.rng"/>
<include href="conceptMod.rng">
<define name="concept-info-types">
<ref name="concept.element"/>
</define>
</include>
<include href="abbreviateDomainMod.rng"/>
<include href="../../base/rng/deliveryTargetAttDomainMod.rng" dita:since="1.3"/>
<include href="equationDomainMod.rng" dita:since="1.3"/>
<include href="../../base/rng/hazardstatementDomainMod.rng"/>
<include href="../../base/rng/highlightDomainMod.rng"/>
<include href="../../base/rng/indexingDomainMod.rng"/>
<include href="markupDomainMod.rng" dita:since="1.3"/>
<include href="mathmlDomainMod.rng" dita:since="1.3"/>
<include href="programmingDomainMod.rng"/>
<include href="releaseManagementDomainMod.rng" dita:since="1.3"/>
<include href="softwareDomainMod.rng"/>
<include href="svgDomainMod.rng" dita:since="1.3"/>
<include href="uiDomainMod.rng"/>
<include href="../../base/rng/utilitiesDomainMod.rng"/>
<include href="xmlDomainMod.rng"/>
</div> <div>
<a:documentation>ID-DEFINING-ELEMENT OVERRIDES</a:documentation>
<define name="any">
<zeroOrMore>
<choice>
<ref name="idElements"/>
<element>
<anyName>
<except>
<name>concept</name>
<name>topic</name>
<nsName ns="http://www.w3.org/2000/svg"/>
<nsName ns="http://www.w3.org/1998/Math/MathML"/>
</except>
</anyName>
<zeroOrMore>
<attribute>
<anyName/>
</attribute>
</zeroOrMore>
<ref name="any"/>
</element>
<text/>
</choice>
</zeroOrMore>
</define>
</div>
</grammar>
CONCLUSIONS AND FURTHER
WORK
1/14/2016 Contrext, LLC 28
Conclusions
• RELAX NG:
– Avoids issues with DTDs and XSDs
– Preserves general knowledge of DITA coding patterns
– Makes simple things as simple as they could be
(document type shell creation)
– Has (almost) all the parameterization features
required
• Possible to generate conforming DITA DTDs and
XSDs
• Can now have a single master definition of all
DITA vocabulary
1/14/2016 Contrext, LLC 29
Further Work
• Propose enhancement to RELAX NG to relax
ID-type attribute rules
• Propose enhancement to RELAX NG DTD
compatibility to allow composition of default
attribute values
• Research: Can constrainable XSD content
models be generated in a general way?
1/14/2016 Contrext, LLC 30
The Future
1/14/2016 Contrext, LLC 31
Resources
• RELAX NG specifications: http://relaxng.org
• DITA 1.3 spec: http://tools.oasis-
open.org/version-control/svn/dita/spec/
• DITA RELAX NG conversion tools:
http://tools.oasis-open.org/version-
control/svn/dita/doctypes/tools/relaxng/
• Me: ekimber@contrext.com,
http://contrext.com
1/14/2016 Contrext, LLC 32

More Related Content

What's hot

Xml databases
Xml databasesXml databases
Xml databases
Srinivasan R
 
Best of Marketing
Best of MarketingBest of Marketing
Best of Marketing
marketingtips02
 
Some Options for Non-MARC Descriptive Metadata
Some Options for Non-MARC Descriptive MetadataSome Options for Non-MARC Descriptive Metadata
Some Options for Non-MARC Descriptive Metadata
Jenn Riley
 
XML for beginners
XML for beginnersXML for beginners
XML for beginners
safysidhu
 
XML and Databases
XML and DatabasesXML and Databases
XML and Databases
Cittrex
 
XML - Data Modeling
XML - Data ModelingXML - Data Modeling
XML - Data Modeling
Joel Briza
 
Xml
XmlXml
Xml
Anas Sa
 
Web technology Unit-II Part-C
Web technology Unit-II Part-CWeb technology Unit-II Part-C
Web technology Unit-II Part-C
SSN College of Engineering, Kalavakkam
 
CTDA MODS and Islandora XML Forms
CTDA MODS and Islandora XML FormsCTDA MODS and Islandora XML Forms
CTDA MODS and Islandora XML Forms
University of Connecticut Libraries
 
Introduction to XML
Introduction to XMLIntroduction to XML
Introduction to XML
Maung Nyunt
 
01 xml document structure
01 xml document structure01 xml document structure
01 xml document structure
Baskarkncet
 
Xml dtd- Document Type Definition- Web Technology
Xml dtd- Document Type Definition- Web TechnologyXml dtd- Document Type Definition- Web Technology
Xml dtd- Document Type Definition- Web Technology
Rajan Shah
 
Introduction to XML and Databases
Introduction to XML and DatabasesIntroduction to XML and Databases
Introduction to XML and Databases
torp42
 
Easy steps to convert your content to structured (frame maker and xml)
Easy steps to convert your content to structured (frame maker and xml)Easy steps to convert your content to structured (frame maker and xml)
Easy steps to convert your content to structured (frame maker and xml)
Publishing Smarter
 

What's hot (20)

XML2004
XML2004XML2004
XML2004
 
Introduction to DITA
Introduction to DITAIntroduction to DITA
Introduction to DITA
 
Metadata lecture 5 part 2
Metadata lecture 5 part 2Metadata lecture 5 part 2
Metadata lecture 5 part 2
 
Introduction to XML
Introduction to XMLIntroduction to XML
Introduction to XML
 
Xml databases
Xml databasesXml databases
Xml databases
 
Best of Marketing
Best of MarketingBest of Marketing
Best of Marketing
 
Some Options for Non-MARC Descriptive Metadata
Some Options for Non-MARC Descriptive MetadataSome Options for Non-MARC Descriptive Metadata
Some Options for Non-MARC Descriptive Metadata
 
XML for beginners
XML for beginnersXML for beginners
XML for beginners
 
XML and Databases
XML and DatabasesXML and Databases
XML and Databases
 
XML - Data Modeling
XML - Data ModelingXML - Data Modeling
XML - Data Modeling
 
Xml
XmlXml
Xml
 
Web technology Unit-II Part-C
Web technology Unit-II Part-CWeb technology Unit-II Part-C
Web technology Unit-II Part-C
 
23xml
23xml23xml
23xml
 
CTDA MODS and Islandora XML Forms
CTDA MODS and Islandora XML FormsCTDA MODS and Islandora XML Forms
CTDA MODS and Islandora XML Forms
 
Introduction to XML
Introduction to XMLIntroduction to XML
Introduction to XML
 
01 xml document structure
01 xml document structure01 xml document structure
01 xml document structure
 
XML Databases
XML DatabasesXML Databases
XML Databases
 
Xml dtd- Document Type Definition- Web Technology
Xml dtd- Document Type Definition- Web TechnologyXml dtd- Document Type Definition- Web Technology
Xml dtd- Document Type Definition- Web Technology
 
Introduction to XML and Databases
Introduction to XML and DatabasesIntroduction to XML and Databases
Introduction to XML and Databases
 
Easy steps to convert your content to structured (frame maker and xml)
Easy steps to convert your content to structured (frame maker and xml)Easy steps to convert your content to structured (frame maker and xml)
Easy steps to convert your content to structured (frame maker and xml)
 

Similar to RELAX NG and DITA: An Almost Perfect Match

Locale-Aware Sorting and Text Handling in the Open Toolkit
Locale-Aware Sorting and Text Handling in the Open ToolkitLocale-Aware Sorting and Text Handling in the Open Toolkit
Locale-Aware Sorting and Text Handling in the Open Toolkit
Contrext Solutions
 
DITA 1.3: What's New and Different
DITA 1.3: What's New and DifferentDITA 1.3: What's New and Different
DITA 1.3: What's New and Different
Contrext Solutions
 
NISO/NFAIS Joint Virtual Conference: Connecting the Library to the Wider Worl...
NISO/NFAIS Joint Virtual Conference: Connecting the Library to the Wider Worl...NISO/NFAIS Joint Virtual Conference: Connecting the Library to the Wider Worl...
NISO/NFAIS Joint Virtual Conference: Connecting the Library to the Wider Worl...
National Information Standards Organization (NISO)
 
Keep Calm and Specialize your Content Model
Keep Calm and Specialize your Content ModelKeep Calm and Specialize your Content Model
Keep Calm and Specialize your Content Model
ctnitchie
 
Introduction to XML.ppt
Introduction to XML.pptIntroduction to XML.ppt
Introduction to XML.ppt
Varsha Uchagaonkar
 
Introduction to XML.ppt
Introduction to XML.pptIntroduction to XML.ppt
Introduction to XML.ppt
Varsha Uchagaonkar
 
Infromation Reprentation, Structured Data and Semantics
Infromation Reprentation,Structured Data and SemanticsInfromation Reprentation,Structured Data and Semantics
Infromation Reprentation, Structured Data and Semantics
Yogendra Tamang
 
SSSW 2012 - Reusing XML Schemas' Information as a Foundation for Designing Do...
SSSW 2012 - Reusing XML Schemas' Information as a Foundation for Designing Do...SSSW 2012 - Reusing XML Schemas' Information as a Foundation for Designing Do...
SSSW 2012 - Reusing XML Schemas' Information as a Foundation for Designing Do...Dr.-Ing. Thomas Hartmann
 
Metamorphic Domain-Specific Languages
Metamorphic Domain-Specific LanguagesMetamorphic Domain-Specific Languages
Metamorphic Domain-Specific Languages
University of Rennes, INSA Rennes, Inria/IRISA, CNRS
 
Oracle to Postgres Schema Migration Hustle
Oracle to Postgres Schema Migration HustleOracle to Postgres Schema Migration Hustle
Oracle to Postgres Schema Migration Hustle
EDB
 
DITA Quick Start for Authors - Part I
DITA Quick Start for Authors - Part IDITA Quick Start for Authors - Part I
DITA Quick Start for Authors - Part I
Suite Solutions
 
Bdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проектеBdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проектеISsoft
 
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
SQALab
 
Lavacon 2011: Managing Translations in Frame DITA without a CMS
Lavacon 2011: Managing Translations in Frame DITA without a CMSLavacon 2011: Managing Translations in Frame DITA without a CMS
Lavacon 2011: Managing Translations in Frame DITA without a CMSClearPath, LLC
 
JSON-LD update DC 2017
JSON-LD update DC 2017JSON-LD update DC 2017
JSON-LD update DC 2017
Gregg Kellogg
 
DFDL and Apache Daffodil(tm) Overview from Owl Cyber Defense
DFDL and Apache Daffodil(tm) Overview from Owl Cyber DefenseDFDL and Apache Daffodil(tm) Overview from Owl Cyber Defense
DFDL and Apache Daffodil(tm) Overview from Owl Cyber Defense
Mike Beckerle
 
Jump Start on Apache Spark 2.2 with Databricks
Jump Start on Apache Spark 2.2 with DatabricksJump Start on Apache Spark 2.2 with Databricks
Jump Start on Apache Spark 2.2 with Databricks
Anyscale
 
Markup For Dummies (Russ Ward)
Markup For Dummies (Russ Ward)Markup For Dummies (Russ Ward)
Markup For Dummies (Russ Ward)
STC-Philadelphia Metro Chapter
 
Graph databases & data integration v2
Graph databases & data integration v2Graph databases & data integration v2
Graph databases & data integration v2
Dimitris Kontokostas
 
Domain Driven Design - Distillation - Chapter 15
Domain Driven Design - Distillation - Chapter 15Domain Driven Design - Distillation - Chapter 15
Domain Driven Design - Distillation - Chapter 15
Mark Windholtz
 

Similar to RELAX NG and DITA: An Almost Perfect Match (20)

Locale-Aware Sorting and Text Handling in the Open Toolkit
Locale-Aware Sorting and Text Handling in the Open ToolkitLocale-Aware Sorting and Text Handling in the Open Toolkit
Locale-Aware Sorting and Text Handling in the Open Toolkit
 
DITA 1.3: What's New and Different
DITA 1.3: What's New and DifferentDITA 1.3: What's New and Different
DITA 1.3: What's New and Different
 
NISO/NFAIS Joint Virtual Conference: Connecting the Library to the Wider Worl...
NISO/NFAIS Joint Virtual Conference: Connecting the Library to the Wider Worl...NISO/NFAIS Joint Virtual Conference: Connecting the Library to the Wider Worl...
NISO/NFAIS Joint Virtual Conference: Connecting the Library to the Wider Worl...
 
Keep Calm and Specialize your Content Model
Keep Calm and Specialize your Content ModelKeep Calm and Specialize your Content Model
Keep Calm and Specialize your Content Model
 
Introduction to XML.ppt
Introduction to XML.pptIntroduction to XML.ppt
Introduction to XML.ppt
 
Introduction to XML.ppt
Introduction to XML.pptIntroduction to XML.ppt
Introduction to XML.ppt
 
Infromation Reprentation, Structured Data and Semantics
Infromation Reprentation,Structured Data and SemanticsInfromation Reprentation,Structured Data and Semantics
Infromation Reprentation, Structured Data and Semantics
 
SSSW 2012 - Reusing XML Schemas' Information as a Foundation for Designing Do...
SSSW 2012 - Reusing XML Schemas' Information as a Foundation for Designing Do...SSSW 2012 - Reusing XML Schemas' Information as a Foundation for Designing Do...
SSSW 2012 - Reusing XML Schemas' Information as a Foundation for Designing Do...
 
Metamorphic Domain-Specific Languages
Metamorphic Domain-Specific LanguagesMetamorphic Domain-Specific Languages
Metamorphic Domain-Specific Languages
 
Oracle to Postgres Schema Migration Hustle
Oracle to Postgres Schema Migration HustleOracle to Postgres Schema Migration Hustle
Oracle to Postgres Schema Migration Hustle
 
DITA Quick Start for Authors - Part I
DITA Quick Start for Authors - Part IDITA Quick Start for Authors - Part I
DITA Quick Start for Authors - Part I
 
Bdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проектеBdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проекте
 
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
 
Lavacon 2011: Managing Translations in Frame DITA without a CMS
Lavacon 2011: Managing Translations in Frame DITA without a CMSLavacon 2011: Managing Translations in Frame DITA without a CMS
Lavacon 2011: Managing Translations in Frame DITA without a CMS
 
JSON-LD update DC 2017
JSON-LD update DC 2017JSON-LD update DC 2017
JSON-LD update DC 2017
 
DFDL and Apache Daffodil(tm) Overview from Owl Cyber Defense
DFDL and Apache Daffodil(tm) Overview from Owl Cyber DefenseDFDL and Apache Daffodil(tm) Overview from Owl Cyber Defense
DFDL and Apache Daffodil(tm) Overview from Owl Cyber Defense
 
Jump Start on Apache Spark 2.2 with Databricks
Jump Start on Apache Spark 2.2 with DatabricksJump Start on Apache Spark 2.2 with Databricks
Jump Start on Apache Spark 2.2 with Databricks
 
Markup For Dummies (Russ Ward)
Markup For Dummies (Russ Ward)Markup For Dummies (Russ Ward)
Markup For Dummies (Russ Ward)
 
Graph databases & data integration v2
Graph databases & data integration v2Graph databases & data integration v2
Graph databases & data integration v2
 
Domain Driven Design - Distillation - Chapter 15
Domain Driven Design - Distillation - Chapter 15Domain Driven Design - Distillation - Chapter 15
Domain Driven Design - Distillation - Chapter 15
 

More from Contrext Solutions

Stupid DITA Tricks: After-The-Fact Specialization: Treating Aircraft Manuals ...
Stupid DITA Tricks:After-The-Fact Specialization: Treating Aircraft Manuals ...Stupid DITA Tricks:After-The-Fact Specialization: Treating Aircraft Manuals ...
Stupid DITA Tricks: After-The-Fact Specialization: Treating Aircraft Manuals ...
Contrext Solutions
 
Loose Leaf Publishing Using Antenna House Formatter and CSS for Pagination
Loose Leaf Publishing Using Antenna House Formatter and CSS for PaginationLoose Leaf Publishing Using Antenna House Formatter and CSS for Pagination
Loose Leaf Publishing Using Antenna House Formatter and CSS for Pagination
Contrext Solutions
 
Definition of the DITA Glossary: Or How to Get Some Cool Glossary Tools for Free
Definition of the DITA Glossary: Or How to Get Some Cool Glossary Tools for FreeDefinition of the DITA Glossary: Or How to Get Some Cool Glossary Tools for Free
Definition of the DITA Glossary: Or How to Get Some Cool Glossary Tools for Free
Contrext Solutions
 
Twisted XSL Tricks: Column Switching for FOP
Twisted XSL Tricks: Column Switching for FOPTwisted XSL Tricks: Column Switching for FOP
Twisted XSL Tricks: Column Switching for FOP
Contrext Solutions
 
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITACan I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Contrext Solutions
 
Ki, Qi, Key: The Way of DITA Harmony With Keys and Key References
Ki, Qi, Key: The Way of DITA Harmony With Keys and Key ReferencesKi, Qi, Key: The Way of DITA Harmony With Keys and Key References
Ki, Qi, Key: The Way of DITA Harmony With Keys and Key References
Contrext Solutions
 
Content Management on Zero Budget: DITA for Small Teams
Content Management on Zero Budget: DITA for Small TeamsContent Management on Zero Budget: DITA for Small Teams
Content Management on Zero Budget: DITA for Small Teams
Contrext Solutions
 
Using CSS Paging to Render DITA Documents
Using CSS Paging to Render DITA DocumentsUsing CSS Paging to Render DITA Documents
Using CSS Paging to Render DITA Documents
Contrext Solutions
 
DITA for Small Teams Workshop (Tekom 2017)
DITA for Small Teams Workshop (Tekom 2017)DITA for Small Teams Workshop (Tekom 2017)
DITA for Small Teams Workshop (Tekom 2017)
Contrext Solutions
 
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITACan I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Contrext Solutions
 
XSLT Magic Tricks with DITA and FrameMaker
XSLT Magic Tricks with DITA and FrameMakerXSLT Magic Tricks with DITA and FrameMaker
XSLT Magic Tricks with DITA and FrameMaker
Contrext Solutions
 
FrameMaker and the DITA Open Toolkit
FrameMaker and the DITA Open ToolkitFrameMaker and the DITA Open Toolkit
FrameMaker and the DITA Open Toolkit
Contrext Solutions
 
Managing Multiple Open Toolkit Configurations Using git Lightning Talk
Managing Multiple Open Toolkit Configurations Using git Lightning TalkManaging Multiple Open Toolkit Configurations Using git Lightning Talk
Managing Multiple Open Toolkit Configurations Using git Lightning Talk
Contrext Solutions
 
DITA OT Day 2015 Lightning Talk On The DITA Community Project
DITA OT Day 2015 Lightning Talk On The DITA Community ProjectDITA OT Day 2015 Lightning Talk On The DITA Community Project
DITA OT Day 2015 Lightning Talk On The DITA Community Project
Contrext Solutions
 
Why Is DITA So Hard?
Why Is DITA So Hard?Why Is DITA So Hard?
Why Is DITA So Hard?
Contrext Solutions
 
Poster: Cross-Document Linking in DITA
Poster: Cross-Document Linking in DITAPoster: Cross-Document Linking in DITA
Poster: Cross-Document Linking in DITA
Contrext Solutions
 
DITA for Small Teams
DITA for Small TeamsDITA for Small Teams
DITA for Small Teams
Contrext Solutions
 
Managing Deliverable-Specific Link Anchors: New Suggested Best Practice for Keys
Managing Deliverable-Specific Link Anchors: New Suggested Best Practice for KeysManaging Deliverable-Specific Link Anchors: New Suggested Best Practice for Keys
Managing Deliverable-Specific Link Anchors: New Suggested Best Practice for Keys
Contrext Solutions
 
What's New in DITA 1.3 (Tekom, Nov 2014)
What's New in DITA 1.3 (Tekom, Nov 2014)What's New in DITA 1.3 (Tekom, Nov 2014)
What's New in DITA 1.3 (Tekom, Nov 2014)
Contrext Solutions
 
Taking Cross References to the Next Level: Reltables for Non-Topic Elements
Taking Cross References to the Next Level: Reltables for Non-Topic ElementsTaking Cross References to the Next Level: Reltables for Non-Topic Elements
Taking Cross References to the Next Level: Reltables for Non-Topic Elements
Contrext Solutions
 

More from Contrext Solutions (20)

Stupid DITA Tricks: After-The-Fact Specialization: Treating Aircraft Manuals ...
Stupid DITA Tricks:After-The-Fact Specialization: Treating Aircraft Manuals ...Stupid DITA Tricks:After-The-Fact Specialization: Treating Aircraft Manuals ...
Stupid DITA Tricks: After-The-Fact Specialization: Treating Aircraft Manuals ...
 
Loose Leaf Publishing Using Antenna House Formatter and CSS for Pagination
Loose Leaf Publishing Using Antenna House Formatter and CSS for PaginationLoose Leaf Publishing Using Antenna House Formatter and CSS for Pagination
Loose Leaf Publishing Using Antenna House Formatter and CSS for Pagination
 
Definition of the DITA Glossary: Or How to Get Some Cool Glossary Tools for Free
Definition of the DITA Glossary: Or How to Get Some Cool Glossary Tools for FreeDefinition of the DITA Glossary: Or How to Get Some Cool Glossary Tools for Free
Definition of the DITA Glossary: Or How to Get Some Cool Glossary Tools for Free
 
Twisted XSL Tricks: Column Switching for FOP
Twisted XSL Tricks: Column Switching for FOPTwisted XSL Tricks: Column Switching for FOP
Twisted XSL Tricks: Column Switching for FOP
 
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITACan I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITA
 
Ki, Qi, Key: The Way of DITA Harmony With Keys and Key References
Ki, Qi, Key: The Way of DITA Harmony With Keys and Key ReferencesKi, Qi, Key: The Way of DITA Harmony With Keys and Key References
Ki, Qi, Key: The Way of DITA Harmony With Keys and Key References
 
Content Management on Zero Budget: DITA for Small Teams
Content Management on Zero Budget: DITA for Small TeamsContent Management on Zero Budget: DITA for Small Teams
Content Management on Zero Budget: DITA for Small Teams
 
Using CSS Paging to Render DITA Documents
Using CSS Paging to Render DITA DocumentsUsing CSS Paging to Render DITA Documents
Using CSS Paging to Render DITA Documents
 
DITA for Small Teams Workshop (Tekom 2017)
DITA for Small Teams Workshop (Tekom 2017)DITA for Small Teams Workshop (Tekom 2017)
DITA for Small Teams Workshop (Tekom 2017)
 
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITACan I Have a Word: Managing Shared Glossaries and References to Terms With DITA
Can I Have a Word: Managing Shared Glossaries and References to Terms With DITA
 
XSLT Magic Tricks with DITA and FrameMaker
XSLT Magic Tricks with DITA and FrameMakerXSLT Magic Tricks with DITA and FrameMaker
XSLT Magic Tricks with DITA and FrameMaker
 
FrameMaker and the DITA Open Toolkit
FrameMaker and the DITA Open ToolkitFrameMaker and the DITA Open Toolkit
FrameMaker and the DITA Open Toolkit
 
Managing Multiple Open Toolkit Configurations Using git Lightning Talk
Managing Multiple Open Toolkit Configurations Using git Lightning TalkManaging Multiple Open Toolkit Configurations Using git Lightning Talk
Managing Multiple Open Toolkit Configurations Using git Lightning Talk
 
DITA OT Day 2015 Lightning Talk On The DITA Community Project
DITA OT Day 2015 Lightning Talk On The DITA Community ProjectDITA OT Day 2015 Lightning Talk On The DITA Community Project
DITA OT Day 2015 Lightning Talk On The DITA Community Project
 
Why Is DITA So Hard?
Why Is DITA So Hard?Why Is DITA So Hard?
Why Is DITA So Hard?
 
Poster: Cross-Document Linking in DITA
Poster: Cross-Document Linking in DITAPoster: Cross-Document Linking in DITA
Poster: Cross-Document Linking in DITA
 
DITA for Small Teams
DITA for Small TeamsDITA for Small Teams
DITA for Small Teams
 
Managing Deliverable-Specific Link Anchors: New Suggested Best Practice for Keys
Managing Deliverable-Specific Link Anchors: New Suggested Best Practice for KeysManaging Deliverable-Specific Link Anchors: New Suggested Best Practice for Keys
Managing Deliverable-Specific Link Anchors: New Suggested Best Practice for Keys
 
What's New in DITA 1.3 (Tekom, Nov 2014)
What's New in DITA 1.3 (Tekom, Nov 2014)What's New in DITA 1.3 (Tekom, Nov 2014)
What's New in DITA 1.3 (Tekom, Nov 2014)
 
Taking Cross References to the Next Level: Reltables for Non-Topic Elements
Taking Cross References to the Next Level: Reltables for Non-Topic ElementsTaking Cross References to the Next Level: Reltables for Non-Topic Elements
Taking Cross References to the Next Level: Reltables for Non-Topic Elements
 

Recently uploaded

重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
vmemo1
 
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
zoowe
 
Understanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdfUnderstanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdf
SEO Article Boost
 
制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
cuobya
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Brad Spiegel Macon GA
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
eutxy
 
Explore-Insanony: Watch Instagram Stories Secretly
Explore-Insanony: Watch Instagram Stories SecretlyExplore-Insanony: Watch Instagram Stories Secretly
Explore-Insanony: Watch Instagram Stories Secretly
Trending Blogers
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
ysasp1
 
Bài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docxBài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docx
nhiyenphan2005
 
Search Result Showing My Post is Now Buried
Search Result Showing My Post is Now BuriedSearch Result Showing My Post is Now Buried
Search Result Showing My Post is Now Buried
Trish Parr
 
Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027
harveenkaur52
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Florence Consulting
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
3ipehhoa
 
[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024
hackersuli
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
fovkoyb
 
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
cuobya
 
7 Best Cloud Hosting Services to Try Out in 2024
7 Best Cloud Hosting Services to Try Out in 20247 Best Cloud Hosting Services to Try Out in 2024
7 Best Cloud Hosting Services to Try Out in 2024
Danica Gill
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
Rogerio Filho
 
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
zyfovom
 
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
3ipehhoa
 

Recently uploaded (20)

重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
 
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
 
Understanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdfUnderstanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdf
 
制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
 
Explore-Insanony: Watch Instagram Stories Secretly
Explore-Insanony: Watch Instagram Stories SecretlyExplore-Insanony: Watch Instagram Stories Secretly
Explore-Insanony: Watch Instagram Stories Secretly
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
 
Bài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docxBài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docx
 
Search Result Showing My Post is Now Buried
Search Result Showing My Post is Now BuriedSearch Result Showing My Post is Now Buried
Search Result Showing My Post is Now Buried
 
Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
 
[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
 
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
 
7 Best Cloud Hosting Services to Try Out in 2024
7 Best Cloud Hosting Services to Try Out in 20247 Best Cloud Hosting Services to Try Out in 2024
7 Best Cloud Hosting Services to Try Out in 2024
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
 
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
学位认证网(DU毕业证)迪肯大学毕业证成绩单一比一原版制作
 
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
 

RELAX NG and DITA: An Almost Perfect Match

  • 1. RELAX NG and DITA: An Almost Perfect Match How RELAX NG makes everything easier for DITA vocabulary 1/14/2016 Contrext, LLC 1 Eliot Kimber Contrext, LLC George Bina Synchro SoftBalisage 2014
  • 2. About the Authors • Eliot Kimber – Independent consultant focusing on DITA analysis, design, and implementation – Doing SGML and XML for cough 30 years cough – Founding member of the DITA Technical Committee – Founding member of the XML Working Group – Co-editor of HyTime 2nd Edition standard (ISO/IEC 10744) – Primary developer and founder of the DITA for Publishers project – Author of DITA for Practitioners, Vol 1 (XML Press) • George Bina – Founding partner of Syncro Soft SRL, makers of oXygen XML – Contributor to many open-source projects, including DITA-NG and oNVDL – More than 15 years experience working with XML and related technologies 1/14/2016 Contrext, LLC 2
  • 3. Agenda • Overview of DITA’s modular vocabulary architecture • How DTDs don’t work too well for it • How XSDs work even less well • How RELAX NG does things almost perfectly 1/14/2016 Contrext, LLC 3
  • 4. Executive Summary • DITA depends on parameterized content models and attributes to implement integration, extension, and constraint • The available document grammar technologies support this to varying degrees – DTD: Works but tedious, verbose, and error prone – XSD: Almost works, tedious, verbose, not reliable or interchangeable. Redefine feature is evil. – RELAX NG: Works with minimum verbosity and maximal ease • Use of RELAX NG enables generation of conforming DTD and XSD versions of DITA grammars. 1/14/2016 Contrext, LLC 4
  • 5. DTD: Works but barely 1/14/2016 Contrext, LLC 5
  • 6. XSD: Works But Not For This Purpose 1/14/2016 Contrext, LLC 6
  • 7. RELAX NG: Just Right Balisage 2014 Contrext, LLC 7
  • 8. OVERVIEW OF DITA VOCABULARY ARCHITECTURE 1/14/2016 Contrext, LLC 8
  • 9. Relevant DITA Facts • DITA 1.2 is current version. • DITA 1.3 in progress, target YE 2014/1Q2015 • DITA standardizes the coding patterns for vocabulary implementations in specific XML grammar languages – DITA 1.2: DTD and XSD. DTD and XSD maintained independently – DITA 1.3: RELAX NG, DTD, and XSD. DTD and XSD generated from RELAX NG • Conforming vocabulary implementations must reflect these coding standards • There is no single “DITA DTD”: All working grammars are “local” to a given group of DITA users 1/14/2016 Contrext, LLC 9
  • 10. DITA Vocabulary Composition 1/14/2016 Contrext, LLC 10 Document Type Shell 1 Document Type Shell 2 Document Type Shells Vocabulary Modules (Invariant) Topic Type A Topic Type B Constraint K Domain Y Domain Z User Group 1 User Group 2 domains=“(topic A) (topic Y-d) (topic Z-d)” domains=“(topic A) (topic B) (topic K-c) (topic Z-d)”
  • 11. Vocabulary is Modular • DITA vocabulary defined as an extensible set of modules – Map types, topic types, domains (mix-in) • Modules are invariant for a given version in time • A unique set of modules defines a unique “DITA document type” – Specified by @domains attribute on root element: domains=“(topic concept) (topic hi-d)” 1/14/2016 Contrext, LLC 11
  • 12. All Modification is By Imposed Configuration • Modules are “integrated” into a “document type shell” • Integration depends on use of grammar’s parameterization features • Can add constraints that further adjust (constrain) content models and attributes • Logically, integration extends content models, constraint restricts them. 1/14/2016 Contrext, LLC 12
  • 13. Modular Vocabulary Requirements • Provide the @domains attribute contribution for the module • Parameterize content models: – Redefine the content model in its entirety – Allow additional element types where any given element type is allowed (mix-in of domains) • Parameterize attribute lists: – Redefine the attribute list in its entirety – Extend the attribute list with global attributes • Provide common reusable content model fragments 1/14/2016 Contrext, LLC 13
  • 14. CHALLENGES WITH DITA VOCABULARY GRAMMARS 1/14/2016 Contrext, LLC 15
  • 15. Challenges Posed by DTD Syntax • Need two files for each topic type or domain • Syntax is cryptic • Syntax is difficult to debug • Lots of opportunities for error • Few convenient tools for operating on DTDs as structured data • Simple task of creating document type shells is hard, even for experts 1/14/2016 Contrext, LLC 16
  • 16. Challenges Posed by XML Schema • The XSD redefine facility • Limits on redefine • Domain integration declarations • Verbosity of the markup due to class/element distinction 1/14/2016 Contrext, LLC 17
  • 17. XSD Redefine: Thank You For Playing • Seriously over-constrained • Ambiguous definition in the XSD 1.0 spec • Incompatible implementations (maybe) • Deprecated in XSD 1.1 • Resulting XSD structures very different in pattern from original DTD or RNG models • Result: DITA 1.1 and 1.2 XSDs are not generally constrainable 1/14/2016 Contrext, LLC 18
  • 18. Particle Preservation Constraint: Why? • When redefining a content model, must preserve all particles • For sequence groups, mean you can’t simply omit a member of the sequence via redefine: – Original: A, B?, C – Desired redefinition: A, C – No can do: particle B must be represented • Solution: – Refactor as a sequence of choice groups – Can redefine any group to be empty 1/14/2016 Contrext, LLC 19
  • 19. XSD Override: Need Implementations • The XSD 1.1 Override feature should be exactly what DITA needs • Not yet implemented widely enough • Thus, can’t use for DITA 1.3 • However, as DITA 1.3 XSDs are generated, could implement it at any time it becomes appropriate to do so 1/14/2016 Contrext, LLC 20
  • 20. RELAX NG Makes Everything Better • Syntax and semantics match very well to DITA patterns and practice • Patterns can unilaterally extend other patterns – Matches perfectly to DITA domain extension – Makes domains “self integrating” • Document type shells become simple inclusion lists (almost) • XML syntax makes processing practical, if not easy 1/14/2016 Contrext, LLC 21
  • 21. Requirements Beyond base RELAX NG • RELAX NG DTD Compatibility – DITA relies on defaulted attributes (@class, @domains) • DITA-specific module metadata to enable DTD and XSD generation 1/14/2016 Contrext, LLC 22
  • 22. Areas for RELAX NG Improvement • Requirements for attributes of type @ID require special declarations in DITA shells • No way to automatically compose attribute values – No equivalent to general internal text entities within attribute default declarations – Required by @domain attribute in document type shells 1/14/2016 Contrext, LLC 23
  • 23. COMPARISON OF DOCUMENT TYPE SHELLS 1/14/2016 Contrext, LLC 24
  • 24. DTD Shell 1/14/2016 Contrext, LLC 25 <!-- ============================================================= --> <!-- TOPIC ENTITY DECLARATIONS --> <!-- ============================================================= --> <!ENTITY % concept-dec PUBLIC "-//OASIS//ENTITIES DITA 1.2 Concept//EN" "concept.ent" >%concept-dec; <!-- ============================================================= --> <!-- DOMAIN ENTITY DECLARATIONS --> <!-- ============================================================= --> <!ENTITY % hi-d-dec PUBLIC "-//OASIS//ENTITIES DITA 1.2 Highlight Domain//EN" "../../base/dtd/highlightDomain.ent" >%hi-d-dec; <!ENTITY % ut-d-dec PUBLIC "-//OASIS//ENTITIES DITA 1.2 Utilities Domain//EN" "../../base/dtd/utilitiesDomain.ent" >%ut-d-dec; <!ENTITY % indexing-d-dec PUBLIC "-//OASIS//ENTITIES DITA 1.2 Indexing Domain//EN" "../../base/dtd/indexingDomain.ent" >%indexing-d-dec; <!ENTITY % hazard-d-dec PUBLIC "-//OASIS//ENTITIES DITA 1.2 Hazard Statement Domain//EN" "../../base/dtd/hazardstatementDomain.ent" >%hazard-d-dec; <!ENTITY % abbrev-d-dec PUBLIC "-//OASIS//ENTITIES DITA 1.2 Abbreviated Form Domain//EN" "abbreviateDomain.ent" >%abbrev-d-dec; <!ENTITY % pr-d-dec PUBLIC "-//OASIS//ENTITIES DITA 1.2 Programming Domain//EN" "programmingDomain.ent" >%pr-d-dec; <!ENTITY % sw-d-dec PUBLIC "-//OASIS//ENTITIES DITA 1.2 Software Domain//EN" "softwareDomain.ent" >%sw-d-dec; <!ENTITY % ui-d-dec PUBLIC "-//OASIS//ENTITIES DITA 1.2 User Interface Domain//EN" "uiDomain.ent" >%ui-d-dec; <!-- ============================================================= --> <!-- DOMAIN ATTRIBUTE DECLARATIONS --> <!-- ============================================================= --> <!-- ============================================================= --> <!-- DOMAIN EXTENSIONS --> <!-- ============================================================= --> <!-- One for each extended base element, with the name of the domain(s) in which the extension was declared --> <!ENTITY % pre "pre | %pr-d-pre; | %sw-d-pre;| %ui-d-pre; "> <!ENTITY % keyword "keyword | %pr-d-keyword; | %sw-d-keyword; | %ui-d-keyword; "> <!ENTITY % ph "ph | %hi-d-ph; | %pr-d-ph; | %sw-d-ph; | %ui-d-ph; "> <!ENTITY % term "term | %abbrev-d-term; "> <!ENTITY % fig "fig | %pr-d-fig; | %ut-d-fig; "> <!ENTITY % dl "dl | %pr-d-dl; "> <!ENTITY % index-base "index-base | %indexing-d-index-base; "> <!ENTITY % note "note | %hazard-d-note; "> <!-- ============================================================= --> <!-- DOMAIN ATTRIBUTE EXTENSIONS --> <!-- ============================================================= --> <!ENTITY % props-attribute-extensions "" > <!ENTITY % base-attribute-extensions "" >
  • 25. XSD Shell 1/14/2016 Contrext, LLC 26 <xs:schema xmlns:ditaarch="http://dita.oasis-open.org/architecture/2005/" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <!-- ================ TOPIC DOMAINS ===================== --> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:abbreviateDomainMod.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:deliveryTargetAttDomainMod.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:equationDomainMod.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:hazardDomain.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:highlightDomainMod.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:indexingDomain.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:markupDomainMod.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:mathmlDomainMod.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:programmingDomainMod.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:releaseManagementDomainMod.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:softwareDomainMod.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:svgDomainMod.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:uiDomainMod.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:utilitiesDomainMod.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:xmlDomainMod.xsd"/> <!-- ================ GROUP DEFINITIONS ===================== --> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:metaDeclGrp.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:tblDeclGrp.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:topicGrp.xsd"/> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:conceptGrp.xsd"/> <!-- ================= MODULE INCLUDE DEFINITION ================== --> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:commonElementMod.xsd"/> <!-- ======== Table elements ======== --> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:tblDeclMod.xsd"/> <!-- ======= MetaData elements, plus keyword and indexterm ======= --> <xs:include schemaLocation="urn:oasis:names:tc:dita:xsd:metaDeclMod.xsd"/> <xs:redefine schemaLocation="urn:oasis:names:tc:dita:xsd:commonElementGrp.xsd"> <xs:group name="data"> <xs:choice> <xs:group ref="data"/> <xs:group ref="ut-d-data"/> </xs:choice> </xs:group> <xs:group name="foreign"> <xs:choice> <xs:group ref="foreign"/> <xs:group ref="mathml-d-foreign"/> <xs:group ref="svg-d-foreign"/> </xs:choice> </xs:group> <xs:group name="note"> <xs:choice> <xs:group ref="note"/> <xs:group ref="hazard-d-note"/> </xs:choice> </xs:group> <xs:group name="dl"> <xs:choice> <xs:group ref="dl"/> <xs:group ref="pr-d-dl"/> </xs:choice> </xs:group> <xs:group name="fig"> <xs:choice> <xs:group ref="fig"/> <xs:group ref="equation-d-fig"/> <xs:group ref="pr-d-fig"/> <xs:group ref="ut-d-fig"/> </xs:choice> </xs:group> <xs:group name="pre"> <xs:choice> <xs:group ref="pre"/> <xs:group ref="pr-d-pre"/> <xs:group ref="sw-d-pre"/> <xs:group ref="ui-d-pre"/> </xs:choice> </xs:group> <xs:group name="div"> <xs:choice> <xs:group ref="div"/> <xs:group ref="equation-d-div"/> </xs:choice> </xs:group> <xs:group name="keyword"> <xs:choice> <xs:group ref="keyword"/> <xs:group ref="markup-d-keyword"/> <xs:group ref="pr-d-keyword"/> <xs:group ref="sw-d-keyword"/> <xs:group ref="ui-d-keyword"/> <xs:group ref="xml-d-keyword"/> </xs:choice>
  • 26. RELAX NG Shell 1/14/2016 Contrext, LLC 27 <moduleMetadata> <moduleType>topicshell</moduleType> <moduleShortName>concept</moduleShortName> <shellPublicIds> <dtdShell>-//OASIS//DTD DITA<var presep=" " name="ditaver"/> Concept//EN</dtdShell> <rncShell>urn:oasis:names:tc:dita:rnc:concept.rnc<var presep=":" name="ditaver"/></rncShell> <rngShell>urn:oasis:names:tc:dita:rng:concept.rng<var presep=":" name="ditaver"/></rngShell> <xsdShell>urn:oasis:names:tc:dita:xsd:concept.xsd<var presep=":" name="ditaver"/></xsdShell> </shellPublicIds> </moduleMetadata> </moduleDesc> <div> <a:documentation>ROOT ELEMENT DECLARATION</a:documentation> <start> <ref name="concept.element"/> </start> </div> <div> <a:documentation>DOMAINS ATTRIBUTE</a:documentation> <define name="domains-att" combine="interleave"> <optional> <attribute name="domains" a:defaultValue="(topic abbrev-d) (topic concept) (topic equation-d) (topic hazard-d) (topic hi-d) (topic indexing-d) (topic markup-d xml-d) (topic markup-d) (topic mathml-d) (topic pr-d) (topic relmgmt-d) (topic svg-d) (topic sw-d) (topic topic) (topic ui-d) (topic ut-d) a(props deliveryTarget)" /> </optional> </define> </div> <div> <a:documentation>MODULE INCLUSIONS</a:documentation> <include href="../../base/rng/topicMod.rng"/> <include href="conceptMod.rng"> <define name="concept-info-types"> <ref name="concept.element"/> </define> </include> <include href="abbreviateDomainMod.rng"/> <include href="../../base/rng/deliveryTargetAttDomainMod.rng" dita:since="1.3"/> <include href="equationDomainMod.rng" dita:since="1.3"/> <include href="../../base/rng/hazardstatementDomainMod.rng"/> <include href="../../base/rng/highlightDomainMod.rng"/> <include href="../../base/rng/indexingDomainMod.rng"/> <include href="markupDomainMod.rng" dita:since="1.3"/> <include href="mathmlDomainMod.rng" dita:since="1.3"/> <include href="programmingDomainMod.rng"/> <include href="releaseManagementDomainMod.rng" dita:since="1.3"/> <include href="softwareDomainMod.rng"/> <include href="svgDomainMod.rng" dita:since="1.3"/> <include href="uiDomainMod.rng"/> <include href="../../base/rng/utilitiesDomainMod.rng"/> <include href="xmlDomainMod.rng"/> </div> <div> <a:documentation>ID-DEFINING-ELEMENT OVERRIDES</a:documentation> <define name="any"> <zeroOrMore> <choice> <ref name="idElements"/> <element> <anyName> <except> <name>concept</name> <name>topic</name> <nsName ns="http://www.w3.org/2000/svg"/> <nsName ns="http://www.w3.org/1998/Math/MathML"/> </except> </anyName> <zeroOrMore> <attribute> <anyName/> </attribute> </zeroOrMore> <ref name="any"/> </element> <text/> </choice> </zeroOrMore> </define> </div> </grammar>
  • 28. Conclusions • RELAX NG: – Avoids issues with DTDs and XSDs – Preserves general knowledge of DITA coding patterns – Makes simple things as simple as they could be (document type shell creation) – Has (almost) all the parameterization features required • Possible to generate conforming DITA DTDs and XSDs • Can now have a single master definition of all DITA vocabulary 1/14/2016 Contrext, LLC 29
  • 29. Further Work • Propose enhancement to RELAX NG to relax ID-type attribute rules • Propose enhancement to RELAX NG DTD compatibility to allow composition of default attribute values • Research: Can constrainable XSD content models be generated in a general way? 1/14/2016 Contrext, LLC 30
  • 31. Resources • RELAX NG specifications: http://relaxng.org • DITA 1.3 spec: http://tools.oasis- open.org/version-control/svn/dita/spec/ • DITA RELAX NG conversion tools: http://tools.oasis-open.org/version- control/svn/dita/doctypes/tools/relaxng/ • Me: ekimber@contrext.com, http://contrext.com 1/14/2016 Contrext, LLC 32