blob: 4ebbfa97149f01bb398a1325de866cb058fd7a0c [file] [log] [blame]
# =============================================================
# HEADER
# =============================================================
# MODULE: DITA DITA Topic
# VERSION: 1.1
# DATE: June 2006
#
# =============================================================
# =============================================================
# PUBLIC DOCUMENT TYPE DEFINITION
# TYPICAL INVOCATION
#
# Refer to this file by the following public identifier or an
# appropriate system identifier
# PUBLIC "-//OASIS//ELEMENTS DITA Topic//EN"
# Delivered as file "topic.mod"
# =============================================================
# SYSTEM: Darwin Information Typing Architecture (DITA)
#
# PURPOSE: Declaring the elements and specialization
# attributes for the base Topic type
#
# ORIGINAL CREATION DATE:
# March 2001
#
# (C) Copyright OASIS Open 2005, 2006.
# (C) Copyright IBM Corporation 2001, 2004.
# All Rights Reserved.
#
# UPDATES:
# 2005.11.15 RDA: Corrected the public ID for tblDecl.mod
# 2005.11.15 RDA: Removed old declaration for topicreftypes
# entity
# 2005.11.15 RDA: Corrected the PURPOSE in this comment
# 2005.11.15 RDA: Corrected Long Names for alt, indextermref
# 2006.06.06 RDA: Bug fixes:
# Added xref and fn to fig.cnt
# Remove xmlns="" from global-atts
# 2006.06.06 RDA: Moved shared items to commonElements file
# 2006.06.07 RDA: Added <abstract> element
# 2006.06.07 RDA: Make universal attributes universal
# (DITA 1.1 proposal #12)
# 2006.06.14 RDA: Add dir attribute to localization-atts
# 2006.06.20 RDA: defn.cnt now explicitly sets its content
# 2006.07.06 RDA: Moved class attributes in from topicAttr
# =============================================================
# =============================================================
# ARCHITECTURE ENTITIES
# =============================================================
# default namespace prefix for DITAArchVersion attribute can be
# overridden through predefinition in the document type shell
# must be instanced on each topic type
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
namespace ditaarch = "http://dita.oasis-open.org/architecture/2005/"
arch-atts =
[ a:defaultValue = "1.1" ]
attribute ditaarch:DITAArchVersion { string "1.1" }?
# =============================================================
# ELEMENT NAME ENTITIES
# =============================================================
# Definitions of declared elements
include "topicDefn.ent.rnc"
# Content elements common to map and topic
include "commonElements.mod.rnc"
# MetaData Elements, plus indexterm
include "metaDecl.mod.rnc"
# =============================================================
# ENTITY DECLARATIONS FOR ATTRIBUTE VALUES
# =============================================================
# =============================================================
# COMMON ATTLIST SETS
# =============================================================
body.cnt =
basic.block
| required-cleanup
| data.elements.incl
| foreign.unknown.incl
section.cnt =
text
| basic.ph
| basic.block
| title
| txt.incl
| data.elements.incl
| foreign.unknown.incl
section.notitle.cnt =
text
| basic.ph
| basic.block
| txt.incl
| data.elements.incl
| foreign.unknown.incl
# =============================================================
# COMMON ENTITY DECLARATIONS
# =============================================================
# for use within the DTD and supported topics; these will NOT work
# outside of this DTD or dtds that specialize from it!
# =============================================================
# NOTATION DECLARATIONS
# =============================================================
# DITA uses the direct reference model;
# notations may be added later as required
# =============================================================
# STRUCTURAL MEMBERS
# =============================================================
info-types = topic.element
# =============================================================
# COMMON ATTLIST SETS
# =============================================================
# Copied into metaDecl.mod
# <!ENTITY % date-format 'CDATA' >
rel-atts =
attribute type { text }?,
attribute role {
"parent"
| "child"
| "sibling"
| "friend"
| "next"
| "previous"
| "cousin"
| "ancestor"
| "descendant"
| "sample"
| "external"
| "other"
}?,
attribute otherrole { text }?
# =============================================================
# SPECIALIZATION OF DECLARED ELEMENTS
# =============================================================
topic-info-types = info-types
# =============================================================
# DOMAINS ATTRIBUTE OVERRIDE
# =============================================================
# =============================================================
# ELEMENT DECLARATIONS
# =============================================================
# LONG NAME: Topic
topic.element =
element topic {
topic.attlist,
title,
titlealts?,
(shortdesc | abstract)?,
prolog?,
body?,
related-links?,
topic-info-types*
}
topic.attlist &=
attribute id { xsd:ID },
attribute conref { text }?,
select-atts,
localization-atts,
attribute outputclass { text }?,
arch-atts,
[
a:defaultValue =
"(topic ui-d) (topic hi-d) (topic pr-d) (topic sw-d) (topic ut-d) (topic indexing-d)"
]
attribute domains { text }?
# LONG NAME: Title Alternatives
titlealts.element =
element titlealts { titlealts.attlist, navtitle?, searchtitle? }
titlealts.attlist &= univ-atts
# LONG NAME: Navigation Title
navtitle.element = element navtitle { navtitle.attlist, words.cnt* }
navtitle.attlist &= univ-atts
# LONG NAME: Search Title
searchtitle.element =
element searchtitle { searchtitle.attlist, words.cnt* }
searchtitle.attlist &= univ-atts
# LONG NAME: Abstract
abstract.element =
element abstract {
abstract.attlist, (section.notitle.cnt | shortdesc)*
}
abstract.attlist &=
univ-atts,
attribute outputclass { text }?
# LONG NAME: Short Description
# <!ELEMENT shortdesc (%title.cnt;)* >
# <!ATTLIST shortdesc
# %univ-atts;
# outputclass
# CDATA #IMPLIED >
# LONG NAME: Body
body.element =
element body { body.attlist, (body.cnt | section | example)* }
body.attlist &=
univ-atts,
attribute outputclass { text }?
# LONG NAME: No Topic nesting
no-topic-nesting.element =
element no-topic-nesting { no-topic-nesting.attlist, empty }
# LONG NAME: Section
section.element = element section { section.attlist, section.cnt* }
section.attlist &=
attribute spectitle { text }?,
univ-atts,
attribute outputclass { text }?
# LONG NAME: Example
example.element = element example { example.attlist, section.cnt* }
example.attlist &=
attribute spectitle { text }?,
univ-atts,
attribute outputclass { text }?
# LONG NAME: Description
# Desc is used in context with figure and
# table titles and also for content models
# within linkgroup and object (for
# accessibility)
# <!ELEMENT desc (%desc.cnt;)* >
# <!ATTLIST desc
# %univ-atts;
# outputclass
# CDATA #IMPLIED >
# =============================================================
# PROLOG (METADATA FOR TOPICS)
# TYPED DATA ELEMENTS
# =============================================================
# typed content definitions
# typed, localizable content
# LONG NAME: Prolog
prolog.element =
element prolog {
prolog.attlist,
author*,
source?,
publisher?,
copyright*,
critdates?,
permissions?,
metadata*,
resourceid*,
(data.elements.incl | foreign.unknown.incl)*
}
prolog.attlist &= univ-atts
# LONG NAME: Metadata
metadata.element =
element metadata {
metadata.attlist,
audience*,
category*,
keywords*,
prodinfo*,
othermeta*,
(data.elements.incl | foreign.unknown.incl)*
}
metadata.attlist &=
univ-atts,
attribute mapkeyref { text }?
# =============================================================
# BASIC DOCUMENT ELEMENT DECLARATIONS
# (rich text)
# =============================================================
# =============================================================
# BASE FORM PHRASE TYPES
# =============================================================
# =============================================================
# LINKING GROUPING
# =============================================================
# LONG NAME: Related Links
related-links.element =
element related-links {
related-links.attlist, (link | linklist | linkpool)+
}
related-links.attlist &=
rel-atts,
univ-atts,
attribute format { text }?,
attribute scope { "local" | "peer" | "external" }?,
attribute outputclass { text }?
# LONG NAME: Link
link.element = element link { link.attlist, linktext?, desc? }
link.attlist &=
attribute href { text }?,
attribute keyref { text }?,
attribute query { text }?,
rel-atts,
univ-atts,
attribute format { text }?,
attribute scope { "local" | "peer" | "external" }?,
attribute outputclass { text }?
# LONG NAME: Link Text
linktext.element = element linktext { linktext.attlist, words.cnt* }
linktext.attlist &= univ-atts
# LONG NAME: Link List
linklist.element =
element linklist {
linklist.attlist, title?, desc?, (linklist | link)*, linkinfo?
}
linklist.attlist &=
attribute collection-type {
"unordered" | "sequence" | "choice" | "tree" | "family"
}?,
attribute duplicates { "yes" | "no" }?,
attribute mapkeyref { text }?,
rel-atts,
univ-atts,
attribute spectitle { text }?,
attribute format { text }?,
attribute scope { "local" | "peer" | "external" }?,
attribute outputclass { text }?
# LONG NAME: Link Information
linkinfo.element = element linkinfo { linkinfo.attlist, desc.cnt* }
linkinfo.attlist &= univ-atts
# LONG NAME: Link Pool
linkpool.element =
element linkpool { linkpool.attlist, (linkpool | link)* }
linkpool.attlist &=
attribute collection-type {
"unordered" | "sequence" | "choice" | "tree" | "family"
}?,
attribute duplicates { "yes" | "no" }?,
attribute mapkeyref { text }?,
rel-atts,
univ-atts,
attribute format { text }?,
attribute scope { "local" | "peer" | "external" }?,
attribute outputclass { text }?
# =============================================================
# MODULES CALLS
# =============================================================
# Table Elements
# 2005.11.15 RDA: Corrected the public ID for tblDecl.mod,
# from the old value "-//OASIS//ELEMENTS DITA CALS Tables//EN"
# Tables are now part of commonElements
# <!ENTITY % tableXML PUBLIC
# "-//OASIS//ELEMENTS DITA Exchange Table Model//EN"
# "tblDecl.mod" >
# %tableXML;
# =============================================================
# SPECIALIZATION ATTRIBUTE DECLARATIONS
# =============================================================
abstract.attlist &=
global-atts,
[ a:defaultValue = "- topic/abstract " ] attribute class { text }?
body.attlist &=
global-atts,
[ a:defaultValue = "- topic/body " ] attribute class { text }?
example.attlist &=
global-atts,
[ a:defaultValue = "- topic/example " ] attribute class { text }?
link.attlist &=
global-atts,
[ a:defaultValue = "- topic/link " ] attribute class { text }?
linkinfo.attlist &=
global-atts,
[ a:defaultValue = "- topic/linkinfo " ] attribute class { text }?
linklist.attlist &=
global-atts,
[ a:defaultValue = "- topic/linklist " ] attribute class { text }?
linkpool.attlist &=
global-atts,
[ a:defaultValue = "- topic/linkpool " ] attribute class { text }?
linktext.attlist &=
global-atts,
[ a:defaultValue = "- topic/linktext " ] attribute class { text }?
metadata.attlist &=
global-atts,
[ a:defaultValue = "- topic/metadata " ] attribute class { text }?
navtitle.attlist &=
global-atts,
[ a:defaultValue = "- topic/navtitle " ] attribute class { text }?
no-topic-nesting.attlist &=
global-atts,
[ a:defaultValue = "- topic/no-topic-nesting " ]
attribute class { text }?
prolog.attlist &=
global-atts,
[ a:defaultValue = "- topic/prolog " ] attribute class { text }?
related-links.attlist &=
global-atts,
[ a:defaultValue = "- topic/related-links " ]
attribute class { text }?
searchtitle.attlist &=
global-atts,
[ a:defaultValue = "- topic/searchtitle " ] attribute class { text }?
section.attlist &=
global-atts,
[ a:defaultValue = "- topic/section " ] attribute class { text }?
titlealts.attlist &=
global-atts,
[ a:defaultValue = "- topic/titlealts " ] attribute class { text }?
topic.attlist &=
global-atts,
[ a:defaultValue = "- topic/topic " ] attribute class { text }?
# Shortdesc in map uses map/shortdesc so this one must be
# included, even though the element is common.
shortdesc.attlist &=
global-atts,
[ a:defaultValue = "- topic/shortdesc " ] attribute class { text }?
# ================== End DITA Topic ==========================