# =============================================================

# HEADER

# =============================================================

# MODULE:    DITA MAP DTD

# 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//DTD DITA Map//EN"
#      Delivered as file "map.dtd"

# =============================================================

# SYSTEM:     Darwin Information Typing Architecture (DITA)

#

# PURPOSE:    DTD to describe DITA maps

#

# 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 public ID for map.mod

# 2005.11.15 RDA: Updated these comments to match template

# 2006.06.07 RDA: Added indexing domain

# 2006.06.21 RDA: Added props attribute extensions

# =============================================================

# =============================================================

# DOMAIN ENTITY DECLARATIONS

# =============================================================

include "mapGroup.ent.rnc"
include "indexingDomain.ent.rnc"
# =============================================================

# DOMAIN ATTRIBUTE DECLARATIONS

# =============================================================

# =============================================================

# DOMAIN EXTENSIONS

# =============================================================

# One for each extended base element, with
# the name of the domain(s) in which the
# extension was declared
topicref = topicref.element | mapgroup-d-topicref
index-base = index-base.element | indexing-d-index-base
# =============================================================

# DOMAIN ATTRIBUTE EXTENSIONS

# =============================================================
props-attribute-extensions = empty
base-attribute-extensions = empty
# =============================================================

# DOMAINS ATTRIBUTE OVERRIDE

# =============================================================

# Must be declared ahead of the DTDs, which
# puts @domains first in order

# =============================================================

# MAP ELEMENT INTEGRATION

# =============================================================

# Embed map to get generic elements

# 2005.11.15 RDA: Corrected public ID for map.mod. It was

# "-//OASIS//Elements DITA Map Group Domain//EN"
include "map.mod.rnc"
# =============================================================

# DOMAIN ELEMENT INTEGRATION

# =============================================================
include "mapGroup.mod.rnc"
include "indexingDomain.mod.rnc"
start = map.element
any =
  (element * {
     attribute * { text }*,
     any
   }
   | text)*
# ================== End DITA Map DTD  ========================
