Next in thread → Next in month →

Re: [dita] Normative statements in DITA 1.3

From
Kristen James Eberlein <>
Date
2019-03-26T17:51:45+00:00
ID
Thread
Re: [dita] Normative statements in DITA 1.3
Thank you! This is very useful.

    

    
Best,

      Kris

      

      Kristen James Eberlein

      Chair, OASIS DITA Technical Committee

      Principal consultant, Eberlein Consulting

      www.eberleinconsulting.com

      +1 919 622-1501; kriseberlein (skype)

      

    

    
On 3/26/2019 1:22 PM, Chris Nitchie
      wrote:

    

    
      
      
      
      

        
I ran a quick and
            dirty script over a monolithic HTML representation of the
            1.3 spec and generated the following. It's the complete list
            of RFC-2119-tagged statements, and the topics in which they
            appear. With today's discussion about conformance, I thought
            it might be useful.

        

          Â

        

          Chris

        

          Â

        

          2.1.1:
              DITA terminology and notation

        
          
An
              XML document that conforms to the requirements of this
              specification. A DITA documentÂMUSTÂhave as its
              root element one of the following elements: <map> or
              a specialization of the <map> element <topic>
              or a specialization of the <topic> element
              <dita>, which cannot be specialized, but which
              allows documents with multiple sibling topics

        
        

          2.1.2:
              Basic concepts

        
          
DITA
              maps are documents that organize topics and other
              resources into structured collections of information. DITA
              maps specify hierarchy and the relationships among the
              topics; they also provide the contexts in which keys are
              defined and resolved. DITA mapsÂSHOULDÂhave .ditamap
              as the file extension. See DITA maps for more information.

        
        

          2.1.3:
              File extensions

        
          
Files
              that contain DITA contentÂSHOULDÂuse the
              following file extensions:

        
        

          2.2.2.1:
              Definition of DITA maps

        
          
DITA
              maps are documents that organize topics and other
              resources into structured collections of information. DITA
              maps specify hierarchy and the relationships among the
              topics; they also provide the contexts in which keys are
              defined and resolved. DITA mapsÂSHOULDÂhave .ditamap
              as the file extension.

        
        

          2.2.2.4:
              DITA map attributes

        
          
Specifies
              whether the default rules for the cascading of metadata
              attributes in a DITA map apply. In addition to the
              following specified values, processors alsoÂMAYÂdefine
              additional values. cascade="merge" The metadata attributes
              cascade; the values of the metadata attributes are
              additive. This is the processing default for the @cascade
              attribute and was the only defined behavior for DITA 1.2
              and earlier. cascade="nomerge" The metadata attributes
              cascade; however, they are not additive for
              <topicref> elements that specify a different value
              for a specific metadata attribute. If the cascading value
              for an attribute is already merged based on multiple
              ancestor elements, that merged value continues to cascade
              until a new value is encountered (that is, setting
              cascade="nomerge" does not undo merging that took place on
              ancestors). For more information, see Example: How the
              @cascade attribute functions.

        
        

          2.2.3:
              Subject scheme maps and their usage

        
          
A
              DITA map can reference a subject scheme map by using a
              <mapref> element. Processors alsoÂMAYÂprovide
              parameters by which subject scheme maps are referenced.

        
        

          2.2.3.2:
              Defining controlled values for attributes

        
          
Authoring
              toolsÂSHOULDÂuse these
              lists of controlled values to provide lists from which
              authors can select values when they specify attribute
              values.

          
Authoring
              toolsÂMAYÂgive an
              organization a list of readable labels, a hierarchy of
              values to simplify selection, and a shared definition of
              the value.

          
An
              editorÂMAYÂsupport
              accessing and displaying the content of the subject
              definition resource in order to provide users with a
              detailed explanation of the subject.

          
ToolsÂMAYÂproduce a help
              file, PDF, or other readable catalog to help authors
              better understand the controlled values.

        
        

          2.2.3.3:
              Binding controlled values to an attribute

        
          
If an
              enumeration is bound, processorsÂSHOULDÂvalidate
              attribute values against the controlled values that are
              defined in the subject scheme map. For authoring tools,
              this validation prevents users from entering misspelled or
              undefined values. Recovery from validation errors is
              implementation specific.

        
        

          2.2.3.4:
              Processing controlled attribute values

        
          
ProcessorsÂSHOULDÂbe aware of
              the hierarchies of attribute values that are defined in
              subject scheme maps for purposes of filtering, flagging,
              or other metadata-based categorization.

          
ProcessorsÂSHOULDÂvalidate that
              the values of attributes that are bound to controlled
              values contain only valid values from those sets. (The
              list of controlled values is not validated by basic XML
              parsers.) If the controlled values are part of a named key
              scope, the scope name is ignored for the purpose of
              validating the controlled values.

          
ProcessorsÂSHOULDÂcheck that all
              values listed for an attribute in a DITAVAL file are bound
              to the attribute by the subject scheme before filtering or
              flagging. If a processor encounters values that are not
              included in the subject scheme, it SHOULD issue a warning.

        
        

          2.2.4.2.3:
              Architectural attributes

        
          
This
              attribute identifies the specialization hierarchy for the
              element type. Every DITA element (except the <dita>
              element that is used as the root of a ditabase document)ÂMUSTÂdeclare a
              @class attribute.

          
This
              attribute identifies the domain modules (and optionally
              the structural modules) that are used in a map or topic.
              Each module also declares its module dependencies. The
              root element of every topic and mapÂMUSTÂdeclare a
              @domains attribute.

          
This
              attribute identifies the version of the DITA architecture
              that is used by the XML grammar. The root element of every
              topic and mapÂMUSTÂdeclare a
              @DITAArchVersion attribute. The attribute is declared in a
              DITA namespace to allow namespace-sensitive tools to
              detect DITA markup.

        
        

          2.2.4.3:
              Metadata in maps and topics

        
          
A
              map can override or supplement everything about a topic
              except its primary title and body content. All the
              metadata elements that are available in a topic also are
              available in a map. In addition, a map can provide
              alternate titles and a short description. The alternate
              titles can override their equivalent titles in the topic.
              The short description in the mapÂMAYÂoverride the
              short description in the topic if the <topicref>
              element specifies a @copy-to attribute.

        
        

          2.2.4.4:
              Cascading of metadata attributes in a DITA map

        
          
ImplementersÂMAYÂdefine their
              own custom, implementation-specific tokens. To avoid name
              conflicts between implementations or with future additions
              to the standard, implementation-specific tokensÂSHOULDconsist of a
              prefix that gives the name or an abbreviation for the
              implementation followed by a colon followed by the token
              or method name.

          
The
              predefined values for the @cascade attributeÂMUSTÂprecede any
              implementation-specific tokens, for example,
              cascade="merge appToken:audience".

          
When
              determining the value of an attribute, processorsÂMUSTÂevaluate each
              attribute on each individual element in a specific order;
              this order is specified in the following list.
              Applications MUST continue through the list until a value
              is established or until the end of the list is reached (at
              which point no value is established for the attribute). In
              essence, the list provides instructions on how processors
              can construct a map where all attribute values are set and
              all cascading is complete.

          
For
              example, in the case of <topicref toc="yes">,
              applicationsÂMUSTÂstop at item 2
              in the list; a value is specified for @toc in the document
              instance, so @toc values from containing elements will not
              cascade to that specific <topicref> element. The
              toc="yes" setting on that <topicref> element will
              cascade to contained elements, provided those elements
              reach item 5 below when evaluating the @toc attribute.

          
For
              attributes within a map, the following processing orderÂMUSTÂoccur:

          
The
              processing-supplied default values do not cascade to other
              maps. For example, most processors will supply a default
              value of toc="yes" when no @toc attribute is specified.
              However, a processor-supplied default of toc="yes"ÂMUSTÂnot override a
              value of toc="no" that is set on a referenced map. If the
              toc="yes" value is explicitly specified, is given as a
              default through a DTD, XSD, RNG, or controlled values
              file, or cascades from a containing element in the map, it
              MUST override a toc="no" setting on the referenced map.
              See Map-to-map cascading behaviors for more details.

        
        

          2.2.4.5:
              Reconciling topic and map metadata elements

        
          
ProcessorsÂMAYÂor MAY NOT
              implement this behavior.

        
        

          2.2.4.6.3:
              Cascading of roles from map to map

        
          
Alternatively,
              the <mapref> element in the mapgroup domain is a
              convenience element; the top-level <topicref>
              elements in the map referenced by a <mapref>
              elementÂMUSTÂNOT be
              processed as if they are <mapref> elements. The
              @class attribute from the <mapref> element ("+
              map/topicref mapgroup-d/mapref ") does not cascade to the
              referenced map.

          
In
              some cases, preserving the role of the referencing element
              might result in out-of-context content. For example, a
              <chapter> element that references a bookmap might
              pull in <part> elements that contain nested
              <chapter> elements. Treating the <part>
              element as a <chapter> will result in a chapter that
              nests other chapters, which is not valid in bookmap and
              might not be understandable by processors. The result is
              implementation specific; processorsÂMAYÂchoose to
              treat this as an error, issue a warning, or simply assign
              new roles to the problematic elements.

          
The
              <part> element is processed as it were a chapter
              element. Nested <chapter> elements might not be
              understandable by processors; applicationsÂMAYÂrecover as
              described above.

        
        

          2.3.1:
              ID attribute

        
          
Within
              a map document, the values of the @id attributes for all
              elementsÂSHOULDÂbe unique.
              When two elements within a map have the same value for the
              @id attribute, processorsÂMUSTÂresolve
              references to that ID to the first element with the given
              ID value in document order.

        
        

          2.3.3:
              URI-based (direct) addressing

        
          
For
              DITA resources, fragment identifiers can be used with the
              URI to address individual elements. The fragment
              identifier is the part of the URI that starts with a
              number sign (#), for example, #topicid/elementid. URI
              references also can include a query component that is
              introduced with a question mark (?). DITA processorsÂMAYÂignore queries
              on URI references to DITA resources. URI references that
              address components in the same document MAY consist of
              just the fragment identifier.

        
        

          2.3.4.6:
              Processing key references

        
          
If
              both @keyref and @href attributes are specified on an
              element, the @href valueÂMUSTÂbe used as a
              fallback address when the key name is undefined. If both
              @conkeyref and @conref attributes are specified on an
              element, the @conref value MUST be used as a fallback
              address when the key name is undefined.

          
The
              effective key definitions for a key space might be
              affected by conditional processing (filtering).
              ProcessorsÂSHOULDÂperform
              conditional processing before determining the effective
              key definitions. However, processors might determine
              effective key definitions before filtering. Consequently,
              different processors might produce different effective
              bindings for the same map when there are key definitions
              that might be filtered out based on their filtering
              attributes.

          
If a
              topic that contains key references is reused in multiple
              key scopes within a given root map such that its
              references resolve differently in each use context,
              processorsÂMUSTÂproduce
              multiple copies of the source topic in resolved output for
              each distinct set of effective key definitions that are
              referenced by the topic. In such cases, authors can use
              the @copy-to attribute to specify different source URIs
              for each reference to a topic.

          
If a
              referencing element contains a key reference with an
              undefined key, it is processed as if there were no key
              reference, and the value of the @href attribute is used as
              the reference. If the @href attribute is not specified,
              the element is not treated as a navigation link. If it is
              an error for the element to be empty, an implementationÂMAYÂgive an error
              message; it also MAY recover from this error condition by
              leaving the key reference element empty.

        
        

          2.3.4.8:
              Processing key references on <topicref> elements

        
          
The
              effective resource bound to the <topicref> element
              is determined by resolving all intermediate key
              references. Each key reference is resolved either to a
              resource addressed directly by URI reference in an @href
              attribute, or to no resource. ProcessorsÂMAYÂimpose
              reasonable limits on the number of intermediate key
              references that they will resolve. ProcessorsÂSHOULDÂsupport at
              least three levels of key references.

        
        

          2.3.4.9:
              Processing key references to generate text or link text

        
          
When
              the effective content for a key reference element results
              in invalid elements, those elementsÂSHOULDÂbe generalized
              to produce a valid result. For example, <linktext>
              in the key definition might use a domain specialization of
              <keyword> that is not valid in the key reference
              context, in which case the specialized element should be
              generalized to <keyword>. If the generalized content
              is also not valid, a text equivalent should be used
              instead. For example, <linktext> might include
              <ph> or a specialized <ph> in the key
              definition, but neither of those are valid as the
              effective content for a <keyword>. In that case, the
              text content of the <ph> should be used.

        
        

          2.4.2.2:
              Processing conrefs

        
          
Except
              where allowed by weak constraints, a conref processorÂMUSTÂNOT permit
              resolution of a reuse relationship that could be rendered
              invalid under the rules of either the reused or reusing
              content.

          
In
              both cases, processors resolving conrefsÂSHOULDÂtolerate
              specializations of valid elements and generalize elements
              in the pushed or pulled content fragment as needed for the
              resolving context.

        
        

          2.4.2.3:
              Processing attributes when resolving conrefs

        
          
The
              token -dita-use-conref-target is defined by the
              specification to enable easier use of @conref on elements
              with required attributes. The only time the resolved
              element would include an attribute whose specified value
              is "-dita-use-conref-target" is when the referenced
              element had that attribute specified with the
              "-dita-use-conref-target" value and the referencing
              element either had no specification for that attribute or
              had it also specified with the "-dita-use-conref-target"
              value. If the final resolved element (after the complete
              resolution of any conref chain, as explained below) has an
              attribute with the "-dita-use-conref-target" value, that
              elementÂMUSTÂbe treated as
              equivalent to having that attribute unspecified.

        
        

          2.4.2.4:
              Processing xrefs and conrefs within a conref

        
          
When
              the address is a direct URI reference of any form other
              than a same-topic fragment identifier, processorsÂMUSTÂresolve it
              relative to the source document that contains the original
              URI reference.

          
When
              the address is a same-topic fragment identifier,
              processorsÂMUSTÂresolve it
              relative to the location of the content reference
              (referencing context).

          
When
              the address is a key reference, processorsÂMUSTÂresolve it
              relative to the location of the content reference
              (referencing context).

        
        

          2.4.3:
              Conditional processing (profiling)

        
          
ProcessorsÂSHOULDÂbe able to
              perform filtering and flagging using the attributes listed
              above. The @props attribute can be specialized to create
              new attributes, and processors SHOULD be able to perform
              conditional processing on specializations of @props.

        
        

          2.4.4.1:
              Overview of branch filtering

        
          
In
              addition to filtering, applicationsÂMAYÂsupport
              flagging at the branch level based on conditions that are
              specified in referenced DITAVAL documents.

        
        

          2.4.4.4:
              Branch filtering: Impact on resource and key names

        
          
It
              is an error if <ditavalref>-driven branch cloning
              results in multiple copies of a topic that have the same
              resolved name. ProcessorsÂSHOULDÂreport an
              error in such cases. ProcessorsÂMAYÂrecover by
              using an alternate naming scheme for the conflicting
              topics.

          
In
              rare cases, a single topic might appear in different
              branches that set different conditions, yet still produce
              the same result. For example, a topic might appear in both
              the admin and novice copies of a branch but not contain
              content that is tailored to either audience; in that case,
              the filtered copies would match. A processorÂMAYÂconsider this
              form of equivalence when determining if two references to
              the same resource should be reported as an error.

        
        

          2.4.4.5:
              Branch filtering: Implications of processing order

        
          
Because
              the branch filtering process can result in new or renamed
              keys, key scopes, or URIs, the full effects of the branch
              filtering processÂMUSTÂbe calculated
              by processors before they construct the effective map and
              key scope structure.

        
        

          2.4.5.1:
              Using the @chunk attribute

        
          
When
              specified on a <topicref> that contains a title but
              no target, this indicates that processorsÂMUSTÂgenerate a
              title-only topic in the rendered result, along with any
              topics referenced by child <topicref> elements of
              this <topicref>. The rendition address of the
              generated topic is determined as defined for the @copy-to
              attribute. If the @copy-to attribute is not specified and
              the <topicref> has no @id attribute, the address of
              the generated topic is not required to be predictable or
              consistent across rendition instances.

          
Some
              tokens or combinations of tokens might not be appropriate
              for all output types. When unsupported or conflicting
              tokens are encountered during output processing,
              processorsÂSHOULDÂproduce
              warning or error messages. Recovery from such conflicts or
              other errors is implementation dependent.

          
If
              an entire map is used to generate a single chunk (by
              placing to-content on the <map> element), the
              resource nameÂSHOULDÂbe taken from
              the resource name of the map.

          
If
              the @copy-to attribute is specified, the resource nameÂMUSTÂtaken from the
              @copy-to attribute.

          
If
              the @copy-to attribute is not specified and one or more
              keys are specified on the <topicref>, the resource
              nameÂSHOULDÂbe constructed
              using one of the keys.

          
If
              @copy-to and @keys are not specified and the by-topic
              policy is in effect, the resource nameÂSHOULDÂbe taken from
              the @id attribute of the topic.

          
If
              @copy-to and @keys are not specified and the by-document
              policy is in effect, the resource nameÂSHOULDÂbe taken from
              the resource name of the referenced document.

          
When
              following these steps results in resource name clashes,
              processorsÂMAYÂrecover by
              generating alternate resource identifiers. For example,
              when two chunked topics use the same @id attribute, a
              processor could recover by combining the original resource
              name with the @id value instead of using only the @id
              value.

          
ImplementersÂMAYÂdefine their
              own custom, implementation-specific tokens. To avoid name
              conflicts between implementations or with future additions
              to the standard, implementation-specific tokensÂSHOULDconsist of a
              prefix that gives the name or an abbreviation for the
              implementation followed by a colon followed by the token
              or method name.

        
        

          2.4.6.1:
              The @xml:lang attribute

        
          
The
              @xml:lang attributeÂSHOULDÂbe explicitly
              set on the root element of each map and topic.

          
Setting
              the @xml:lang attribute in the DITA source ensures that
              processors handle content in a language- and
              locale-appropriate way. If the @xml:lang attribute is not
              set, processors assume a default value which might not be
              appropriate for the DITA content. When the @xml:lang
              attribute is specified for a document, DITA processorsÂMUSTÂuse the
              specified value to determine the language of the document.

          
If
              the root element of a map or a top-level topic has no
              value for the@xml:lang attribute , a processorÂSHOULDÂassume a
              default value. The default value of the processor can be
              either fixed, configurable, or derived from the content
              itself, such as the @xml:lang attribute on the root map.

          
When
              a DITA topic contains more than one language, set the
              @xml:lang attribute on the highest-level element to
              specify the primary language and locale that applies to
              the topic. If part of a topic is written in a different
              language, authors should ensure that the part is enclosed
              in an element with the @xml:lang attribute set
              appropriately. This method of overriding the default
              document language applies to both block and inline
              elements that use the alternate language. ProcessorsÂSHOULDÂstyle each
              element in a way that is appropriate for its language as
              identified by the @xml:lang attribute.

          
The
              primary language for the mapÂSHOULDÂbe set on the
              <map> element. The specified language remains in
              effect for all child <topicref> elements, unless a
              child specifies a different value for the @xml:lang
              attribute.

          
When
              a @conref or @conkeyref attribute is used to include
              content from one element into another, the processorÂMUSTÂuse the
              effective value of the @xml:lang attribute from the
              referenced element, that is, the element that contains the
              content. If the referenced element does not have an
              explicit value for the @xml:lang attribute, the processorÂSHOULDÂdefault to
              using the same value that is used for topics that do not
              set the @xml:lang attribute.

        
        

          2.4.6.2:
              The @dir attribute

        
          
Directionality
              is either explicitly specified via the @xml:lang attribute
              in combination with the @dir attribute on the highest
              level element (topic or derived peer for topics, map for
              ditamaps) or assumed by the processing application. If
              used, the @dir attributeÂSHOULDÂbe specified
              on the highest level element in the topic or document
              element of the map.

          
Applications
              that process DITA documents, whether at the authoring,
              translation, publishing, or any other stage,ÂSHOULDÂfully support
              the Unicode bidirectional algorithm to correctly implement
              the script and directionality for each language that is
              used in the document.

          
ApplicationsÂSHOULDÂensure that
              the root element in every topic document and the root
              element in the root map has values for the @dir and
              @xml:lang attributes.

        
        

          2.4.7:
              Processing documents with different values of the @domains
              attribute

        
          
When
              copying content from one DITA document to another,
              processorsÂSHOULDÂdetermine if
              the data being copied (the copy source) requires modules
              that are not required by the document into which the data
              is to be copied (the copy target). Such a copy operation
              is always safe if the copy source requires a subset of the
              modules that are required by the copy target. Such a copy
              is unsafe if the copy source requires modules that are not
              required by the copy target.

          
When
              a copy operation is unsafe, processorsÂMAYÂcompare the
              copy source to the copy target to determine if the copy
              source satisfies the constraints of the copy target. If
              the copy source meets the copy target constraints, the
              copy operation can proceed. ProcessorsÂSHOULDÂissue a
              warning that the copy was allowed but the constraints are
              not compatible. If the copy source does not meet the
              constraints of the copy target, processors MAY apply
              generalization until the generalized result either
              satisfies the copy target constraints or no further
              generalization can be performed. If the copy operation can
              be performed following generalization, the processor
              SHOULD issue a warning that the constraints are not
              compatible and generalization had to be performed in order
              to complete the copy operation.

        
        

          2.4.8:
              Sorting

        
          
Each
              element to be sorted must have some inherent text on which
              it will be sorted. This text is the base sort phrase for
              the element. For elements that have titles, the base sort
              phrase usually is the content of the <title>
              element. For elements that do not have titles, the base
              sort phrase might be literal content in the DITA source,
              or it might be generated or constructed based on the
              semantics of the element involved; for example, it could
              be constructed from various attribute or metadata values.
              Processors that perform sortingÂSHOULDÂexplicitly
              document how the base sort phrase is determined for a
              given element.

          
When
              a <sort-as> element is specified, processors that
              sort the containing elementÂMUSTÂconstruct the
              effective sort phrase by prepending the content of the
              <sort-as> element to the base sort phrase. This
              ensures that two items with the same <sort-as>
              element but different base sort phrases will sort in the
              appropriate order.

        
        

          2.5.2.2:
              Rules for document-type shells

        
          
While
              the DITA specification only defines coding requirements
              for DTD, RELAX NG, and XML Schema documents, conforming
              DITA documentsÂMAYÂuse other
              document-type constraint languages, such as Schematron.

          
With
              two exceptions, a document-type shellÂMUSTÂNOT directly
              define element or attribute types; it only includes and
              configures vocabulary and constraint modules. The
              exceptions to this rule are the following:

          
Document
              type shells that are not provided by OASISÂMUSTÂhave a unique
              public identifier, if public identifiers are used.

          
Document
              type shells that are not provided by OASISÂMUSTÂNOT indicate
              OASIS as the owner; the public identifier or URN for such
              document-type shellsÂSHOULDÂreflect the
              owner or creator of the document-type shell.

        
        

          2.5.3.3:
              Vocabulary modules

        
          
Structural
              modules based on topicÂMAYÂdefine
              additional topic types that are then allowed to occur as
              subordinate topics within the top-level topic. However,
              such subordinate topic types MAY NOT be used as the root
              elements of conforming DITA documents. For example, a
              top-level topic type might require the use of subordinate
              topic types that would only ever be meaningful in the
              context of their containing type and thus would never be
              candidates for standalone authoring or aggregation using
              maps. In that case, the subordinate topic type can be
              declared in the module for the top-level topic type that
              uses it. However, in most cases, potential subordinate
              topics should be defined in their own vocabulary modules.

          
Domain
              elements intended for use in topicsÂMUSTÂultimately be
              specialized from elements that are defined in the topic
              module. Domain elements intended for use in maps MUST
              ultimately be specialized from elements defined by or used
              in the map module. Maps share some element types with
              topics but no map-specific elements can be used within
              topics.

        
        

          2.5.3.6:
              @class attribute rules and syntax

        
          
When
              the @class attribute is declared in an XML grammar, itÂMUSTÂbe declared
              with a default value. In order to support generalization
              round-tripping (generalizing specialized content into a
              generic form and then returning it to the specialized
              form) the default value MUST NOT be fixed. This allows a
              generalization process to overwrite the default values
              that are defined by a general document type with
              specialized values taken from the document being
              generalized.

          
A
              vocabulary moduleÂMUSTÂNOT change the
              @class attribute for elements that it does not specialize,
              but simply reuses by reference from more generic levels.
              For example, if <task>, <bctask>, and
              <guitask> use the <p> element without
              specializing it, they MUST NOT declare mappings for it.

          
AuthorsÂSHOULDÂNOT modify the
              @class attribute.

        
        

          2.5.3.7:
              @domains attribute rules and syntax

        
          
Each
              domain and constraint moduleÂMUSTÂprovide a
              value for use by the @domains attribute. Each structural
              vocabulary moduleÂSHOULDÂprovide a
              value for use by the @domains attribute, and it MUST do so
              when it has a dependency on elements from any module that
              is not part of its specialization ancestry.

          
Structural
              modules can directly reference or specialize elements from
              modules that are outside of their specialization ancestry.
              They also can define specialized elements that reference
              specialized attributes. In these cases the structural
              module has a dependency on the non-ancestor module, and
              the structural module contribution to the value of the
              @domains attributeÂMUSTÂinclude the
              names of each dependent, non-ancestor module.

        
        

          2.5.4.1:
              Overview of generalization

        
          
When
              generalizing for migration, the @class attribute and
              @domains attribute should be absent from the generalized
              instance document, so that the default values in the
              document-type shell are used. When generalizing for
              round-tripping, the @class attribute and @domains
              attributeÂSHOULDÂretain the
              original specialized values in the generalized instance
              document.

        
        

          2.5.4.3:
              Processor expectations when generalizing elements

        
          
A
              generalization processorÂSHOULDÂbe able to
              handle cases where it is given:

          
When
              renaming elements during round-trip generalization, the
              generalization processorÂSHOULDÂpreserve the
              values of all attributes. When renaming elements during
              one-way or migration generalization, the process SHOULD
              preserve the values of all attributes except the @class
              and @domains attribute, both of which should be supplied
              by the target document type.

        
        

          2.5.4.4:
              Attribute generalization

        
          
DITA
              provides a syntax to generalize attributes that have been
              specialized from the @props or @base attribute.
              Specialization-aware processorsÂSHOULDÂprocess both
              the specialized and generalized forms of an attribute as
              equivalent in their values.

          
A
              single elementÂMUSTÂNOT contain
              both generalized and specialized values for the same
              attribute. For example, the following <p> element
              provides two values for the @jobrole attribute, one in a
              generalized syntax and the other in a specialized syntax:

        
        

          2.5.4.5:
              Generalization with cross-specialization dependencies

        
          
When
              possible, generalizing processesÂSHOULDÂdetect invalid
              generalization target combinations and report them as
              errors.

        
        

          2.5.5.2:
              Constraint rules

        
          
Each
              constraint that is integrated into a DITA document typeÂMUSTÂbe declared in
              the @domains attribute for each structural type that is
              integrated into the document type. For DTDs, the
              contribution for the @domains attribute is specified in
              the constraint module file; for XSD and RELAX NG, the
              contribution to the @domains attribute is specified
              directly in the document type shell.

        
        

          2.5.5.3:
              Constraints, processing, and interoperability

        
          
A
              constrained document type allows only a subset of the
              possible instances of the unconstrained document type.
              Thus, for a processor to determine whether a document
              instance is compatible with another document type, the
              document instanceÂMUSTÂdeclare any
              constraints on the document type.

        
        

          2.5.5.4:
              Weak and strong constraints

        
          
ProcessorsÂMAYÂperform
              constraint compatibility checking.

          
If
              processors perform constraint compatibility checking,
              theyÂSHOULDÂenforce strict
              compatibility for strong constraints.

          
ProcessorsÂMAYÂhave an option
              for configuring whether all constraints are treated as
              strong constraints.

        
        

          2.6.3.4:
              DTD: Coding requirements for structural modules

        
          
The
              last position in the content model defined for the root
              element of a topic typeÂSHOULDÂbe the
              topictype-info-types parameter entity. A document-type
              shell then can control how topics are allowed to nest for
              this specific topic type by redefining the
              topictype-info-types entity for each topic type. If
              default nesting rules reference the info-types parameter
              entity, a shell can efficiently create common nesting
              rules by redefining the info-types entity.

        
        

          2.6.4.1:
              RELAX NG: Overview of coding requirements

        
          
RELAX
              NG grammars for DITA document-type shells, vocabulary
              modules, and constraint modulesÂMAYÂdo the
              following:

          
Include
              embedded Schematron rules or any other foreign vocabulary.
              ProcessorsÂMAYÂignore any
              foreign vocabularies within DITA grammars that are not in
              theÂhttp://relaxng.org/ns/compatibility/annotations/1.0ÂorÂhttp://dita.oasis-open.org/architecture/2005/Ânamespaces.

          
DITA
              practitioners can author DITA modules using one RELAX NG
              syntax, and then use tools to generate modules in the
              other syntax. The resulting RELAX NG modules are
              conforming if there is a one-to-one file correspondence.
              Conforming RELAX NG-based DITA modulesÂMAYÂomit the
              annotations and foreign elements that are used in the
              OASIS grammar files to enable generation of other XML
              grammars, such as DTDs and XML Schema. When such
              annotations are used, conversion from one RELAX NG syntax
              to the other might lose the information, as processors are
              not required to process the annotations and information
              from foreign vocabularies.

        
        

          2.6.4.4:
              RELAX NG: Coding requirements for structural modules

        
          
In
              the declaration of the root element of a topic type, the
              last position in the content modelÂSHOULDÂbe the
              topictype-info-types pattern. For example, the
              <concept> element places the pattern after
              <related-links>:<div>
              <a:documentation>LONG NAME:
              Concept</a:documentation> <define
              name="concept.content"> <!-- ... -->
              <optional> <ref name="related-links"/>
              </optional> <zeroOrMore> <ref
              name="concept-info-types"/> </zeroOrMore>
              </define> </div>

        
        

          2.6.5.1:
              XML Schema: Overview and limitations of coding
              requirements

        
          
YouÂMAYÂmodify
              OASIS-provided XSD modules to refactor content models if
              required by your constraint. YouÂSHOULDÂnotify the
              DITA Technical Committee (TC) of your constraint
              requirements, so the TC can consider adding the required
              refactoring to the OASIS-provided XSDs.

        
        

          2.6.5.6:
              XML Schema: Coding requirements for constraint modules

        
          
When
              constraining a list of elements provided by a domain,
              there must be a group that lists the subset of domain
              elements in a constraints module. The group nameÂSHOULDÂbe named
              "qualifier domain-c-tagname" where qualifier is a
              description for the constraint module, domain is the name
              of the domain, map, or topic being constrained, and
              tagname is the name of the extension element being
              restricted.

        
        

          3.2.1.5:
              <navtitle>

        
          
When
              both a <navtitle> element and a @navtitle attribute
              are specified, the <navtitle> elementÂSHOULDÂbe used.

        
        

          3.2.1.6:
              <shortdesc>

        
          
The
              content of the <shortdesc> elementÂSHOULDÂbe rendered as
              the initial paragraph of the topic.

          
When
              processors generate link previews that are based on the
              map context, theyÂSHOULDÂuse the
              content of the <shortdesc> that is located in the
              map rather than the <shortdesc> that is located in
              the DITA topic. However, processors SHOULD use the content
              of the <shortdesc> element in the DITA topic when
              they render the topic itself, unless the @copy-to
              attribute is specified on the topic reference to the
              element.

        
        

          3.2.2.4:
              <desc>

        
          
Provides
              a description of the target; processorsÂMAYÂchoose to
              display this text as hover help for a link.

        
        

          3.2.2.7:
              <dl>

        
          
Rendering
              of definition lists will vary by application and by
              display format. Processors MIGHT render the second example
              as follows.

        
        

          3.2.2.11:
              <draft-comment>

        
          
Processing
              systemsÂSHOULDÂprovide a
              mechanism that causes the content of this element to be
              rendered in draft output only. By default, processors
              SHOULD strip them out to prevent publishing internal
              comments by mistake.

        
        

          3.2.2.17:
              <image>

        
          
Indicates
              the vertical dimension for the resulting image display. If
              necessary, the imageÂSHOULDÂbe scaled to
              the specified size. The value of this attribute is a real
              number (expressed in decimal notation) optionally followed
              by a unit of measure from the set of pc, pt, px, in, cm,
              mm, em (picas, points, pixels, inches, centimeters,
              millimeters, and ems respectively). The default unit is px
              (pixels). Possible values include: "5", "5in", and
              "10.5cm". If a height value is specified and no width
              value is specified, the width SHOULD be scaled by the same
              factor as the height. If both a height value and width
              value are specified, implementationsÂMAYÂignore one of
              the two values when they are unable to scale to each
              direction using different factors.

          
Indicates
              the horizontal dimension for the resulting image display.
              If necessary, the imageÂSHOULDÂbe scaled to
              the specified size. The value of this attribute is a real
              number (expressed in decimal notation) optionally followed
              by a unit of measure from the set of pc, pt, px, in, cm,
              mm, em (picas, points, pixels, inches, centimeters,
              millimeters, and ems respectively). The default unit is px
              (pixels). Possible values include: "5", "5in", and
              "10.5cm". If a width value is specified and no height
              value is specified, the height SHOULD be scaled by the
              same factor as the width. If both a height value and width
              value are specified, implementationsÂMAYÂignore one of
              the two values when they are unable to scale to each
              direction using different factors.

        
        

          3.2.2.25:
              <object>

        
          
Indicates
              the vertical dimension for the resulting object display.
              If necessary, the object is scaled to the specified size.
              The value of this attribute is a real number (expressed in
              decimal notation) optionally followed by a unit of measure
              from the set of pc, pt, px, in, cm, mm, em (picas, points,
              pixels, inches, centimeters, millimeters, and ems
              respectively). The default unit is px (pixels). Possible
              values include: "5", "5in", and "10.5cm". If a height
              value is specified and no width value is specified, the
              width will be scaled by the same factor as the height. If
              both a height value and width value are specified,
              implementationsÂMAYÂignore one of
              the two values when they are unable to scale to each
              direction using different factors.

          
Indicates
              the horizontal dimension for the resulting object display.
              If necessary, the object is scaled to the specified size.
              The value of this attribute is a real number (expressed in
              decimal notation) optionally followed by a unit of measure
              from the set of pc, pt, px, in, cm, mm, em (picas, points,
              pixels, inches, centimeters, millimeters, and ems
              respectively). The default unit is px (pixels). Possible
              values include: "5", "5in", and "10.5cm". If a width value
              is specified and no height value is specified, the height
              will be scaled by the same factor as the width. If both a
              height value and width value are specified,
              implementationsÂMAYÂignore one of
              the two values when they are unable to scale to each
              direction using different factors.

        
        

          3.2.2.31:
              <q>

        
          
Authors
              should not add quote punctuation manually when using the
              <q> element. Processors that render the <q>
              elementÂSHOULDÂadd
              appropriate styling, such as locale-specific quotation
              marks.

        
        

          3.2.4.2:
              <linklist>

        
          
The
              <linklist> element defines an author-arranged group
              of links. When rendering the links, processorsÂSHOULDÂpreserve the
              order of links specified within a <linklist>
              element.

        
        

          3.3.1.10:
              <relcolspec>

        
          
Ignoring
              the headers for a moment, the <reltable> here would
              ordinarily define a two-way relationship between
              debug_login.dita and login_error1.dita. This will
              typically be expressed as a link from each to the other.
              An applicationÂMAYÂrender the
              link with a language-appropriate heading such as "Related
              reference", indicating that the target of the link is a
              reference topic.

        
        

          3.3.2.4:
              <topicgroup>

        
          
Beginning
              with DITA 1.2, you are able to specify a <navtitle>
              element within the <topicmeta> element inside of a
              <topicgroup>. The <topicgroup> element is
              meant as a non-titled grouping element, so adding a
              <navtitle> element to the <topicgroup> element
              has no defined purpose, and processorsÂMUSTÂignore the
              title. ProcessorsÂMAYÂissue a
              message when ignoring the title.

        
        

          3.3.2.5:
              <topichead>

        
          
Beginning
              with DITA 1.2, the navtitle can be specified by using a
              <navtitle> element within the <topicmeta>
              element, so the <topichead> element no longer
              requires the @navtitle attribute. In order to ensure
              backward compatibility with earlier versions of DITA, the
              new <navtitle> element is not required. However, a
              <topichead> element must contain either a @navtitle
              attribute or a <topicmeta> element that contains a
              <navtitle> element. DITA processorsÂSHOULDÂgenerate a
              warning if a navigation title is not specified.

        
        

          3.3.2.7:
              <topicsetref>

        
          
For
              situations that do not support reusing a topic set as an
              independent unit, such as a rendered PDF, applicationsÂMAYÂresolve the
              <topicsetref> element as for other <topicset>
              (or <topicref>) elements that have the @format
              attribute set to "ditamap".

        
        

          3.4.2.1:
              <indexterm>

        
          
It
              is an error if an <indexterm> containing no
              <indexterm> children contains both an
              <index-see> and an <index-see-also>. (Note:
              <index-see> and <index-see-also> elements
              within <indexterm> elements that do contain
              <indexterm> children are ignored.) In the case of
              this error condition, an implementationÂMAYÂgive an error
              message, and might recover by treating all such
              <index-see> elements as <index-see-also>
              elements.

        
        

          3.4.2.3:
              <index-see>

        
          
An
              implementationÂMAYÂgive an error
              message when it encounters this condition, and MAY recover
              from this error condition by treating the
              <index-see> as an <index-see-also>.

        
        

          3.4.2.5:
              <index-sort-as>

        
          
When
              an <index-sort-as> element is specified, processors
              that sort the containing index termÂMUSTÂconstruct the
              effective sort phrase by prepending the content of the
              <index-sort-as> element to the textual content of
              its parent <indexterm> element. This ensures that
              two index entries with the same <index-sort-as>
              element but different base sort phrases will sort in the
              appropriate order, and will not merge into a single index
              entry.

        
        

          3.5.1.3:
              <hazardsymbol>

        
          
Indicates
              the vertical dimension for the resulting image display. If
              necessary, the imageÂSHOULDÂbe scaled to
              the specified size. The value of this attribute is a real
              number (expressed in decimal notation) optionally followed
              by a unit of measure from the set of pc, pt, px, in, cm,
              mm, em (picas, points, pixels, inches, centimeters,
              millimeters, and ems respectively). The default unit is px
              (pixels). Possible values include: "5", "5in", and
              "10.5cm". If a height value is specified and no width
              value is specified, the width SHOULD be scaled by the same
              factor as the height. If both a height value and width
              value are specified, implementationsÂMAYÂignore one of
              the two values when they are unable to scale to each
              direction using different factors.

          
Indicates
              the horizontal dimension for the resulting image display.
              If necessary, the imageÂSHOULDÂbe scaled to
              the specified size. The value of this attribute is a real
              number (expressed in decimal notation) optionally followed
              by a unit of measure from the set of pc, pt, px, in, cm,
              mm, em (picas, points, pixels, inches, centimeters,
              millimeters, and ems respectively). The default unit is px
              (pixels). Possible values include: "5", "5in", and
              "10.5cm". If a width value is specified and no height
              value is specified, the height SHOULD be scaled by the
              same factor as the width. If both a height value and width
              value are specified, implementationsÂMAYÂignore one of
              the two values when they are unable to scale to each
              direction using different factors.

        
        

          3.5.3.5:
              <sort-as>

        
          
ProcessorsÂSHOULDÂexpect to
              encounter <sort-as> elements in the above locations.
              Processors that sort SHOULD use the following precedence
              rules:

          
When
              a <sort-as> element is specified, processors that
              sort the containing elementÂMUSTÂconstruct the
              effective sort phrase by prepending the content of the
              <sort-as> element to the base sort phrase. This
              ensures that two items with the same <sort-as>
              element but different base sort phrases will sort in the
              appropriate order.

        
        

          3.5.4.1:
              <ditavalref>

        
          
ProcessorsÂMAYÂrecover by
              using an alternate naming scheme for the conflicting
              copies.

          
Format
              of the target document, whichÂMUSTÂbe a DITAVAL
              document. The default value for this element is "ditaval".
              See The @format attribute for more information.

        
        

          3.7.4:
              <foreign>

        
          
Processors
              should attempt to display <foreign> content unless
              otherwise instructed. If the processor cannot render the
              content, itÂMAYÂissue a
              warning.

        
        

          3.9.3:
              <prop>

        
          
A
              <prop> element with no @att attribute specified sets
              a default action for every <prop> element. It is an
              error to use more than one <prop> element with no
              attribute in a single document. Recovery from this error
              is implementation dependent; in such cases processorsÂMAYÂprovide an
              error or warning message.

          
A
              <prop> element with an @att attribute but no @val
              attribute sets a default action for that specific
              attribute or attribute group. For each specific attribute,
              it is an error to use more than one <prop> element
              with that attribute and no value in a single document.
              Recovery from this error is implementation dependent; in
              such cases processorsÂMAYÂprovide an
              error or warning message.

          
A
              <prop> element with an @att attribute and a @val
              attribute sets an action for that value within that
              attribute or attribute group. It is an error to use more
              than one <prop> element with the same attribute and
              value. Recovery from this error is implementation
              dependent; in such cases processorsÂMAYÂprovide an
              error or warning message.

          
If
              flag has been set, the color to use to flag text. Colors
              can be entered by name or code. ProcessorsÂSHOULDÂsupport the
              color names listed under the heading "<color>" inÂhttp://www.w3.org/TR/2006/REC-xsl11-20061205/#datatypeÂand for the 6
              digit hex code form (#rrggbb, case insensitive). If flag
              has not been set, this attribute is ignored.

          
If
              flag has been set, the text styles to use for flagged
              text. This attribute can contain multiple space-delimited
              tokens. The following tokensÂSHOULDÂbe processed
              by all DITAVAL processors:

          
In
              addition, processors might support other proprietary
              tokens for different types of styling. Such tokensÂSHOULDÂhave a
              processor-specific prefix to identify them as proprietary.
              If a processor encounters an unsupported style token, itÂMAYÂissue a
              warning, and MAY render content flagged with such a style
              token using some default formatting.

        
        

          3.9.4:
              <revprop>

        
          
It
              is an error to include more than one <revprop>
              element with the same @val attribute setting. Recovery
              from this error is implementation dependent; in such cases
              processorsÂMAYÂprovide an
              error or warning message.

          
If
              flag has been set, the color to use to flag text. Colors
              can be entered by name or code. ProcessorsÂSHOULDÂsupport the
              color names listed under the heading "<color>" inÂhttp://www.w3.org/TR/2006/REC-xsl11-20061205/#datatypeÂand for the 6
              digit hex code form (#rrggbb, case insensitive). If flag
              has not been set, this attribute is ignored.

          
If
              flag has been set, the text styles to use for flagged
              text. This attribute can contain multiple space-delimited
              tokens. The following tokensÂSHOULDÂbe processed
              by all DITAVAL processors:

          
In
              addition, processors might support other proprietary
              tokens for different types of styling. Such tokensÂSHOULDÂhave a
              processor-specific prefix to identify them as proprietary.
              If a processor encounters an unsupported style token, itÂMAYÂissue a
              warning, and MAY render content flagged with such a style
              token using some default formatting.

        
        

          3.10.2:
              Architectural attribute group

        
          
Indicates
              the specialized domains that are included in the DTD or
              Schema. This attribute is defined with the XML data type
              CDATA, and each new document typeÂSHOULDÂspecify a
              default. The value will differ depending on what domains
              are included in the current DTD or Schema; a sample value
              is "(topic ui-d) (topic hi-d) (topic pr-d) (topic sw-d)
              (topic ut-d) (topic indexing-d)".

        
        

          3.10.3:
              Attributes common to many map elements

        
          
Controls
              how metadata attributes cascade within a map. There are
              two defined values that should be supported: "merge" and
              "nomerge". If no value is set, and no value cascades from
              an ancestor element, processorsÂSHOULDÂassume a
              default of "merge". See Cascading of metadata attributes
              in a DITA map for more information about how this
              attribute interacts with metadata attributes.

        
        

          3.10.4:
              Complex-table attribute group

        
          
Indicates
              whether the entries in the respective columnÂSHOULDÂbe considered
              row headers. Allowable values are: firstcol Indicates that
              entries in the first column of the table are functionally
              row headers (analogous to the way that a <thead>
              element provides column headers). Applies when @rowheader
              is used on the <table> element. headers Indicates
              that entries of a column described using the
              <colspec> element are functionally row headers (for
              cases with more than one column of row headers). Applies
              when @rowheader is used on the <colspec> element.
              norowheader Indicates that entries in the first column
              have no special significance with respect to column
              headers. Applies when @rowheader is used on the
              <table> element. -dita-use-conref-target See Using
              the -dita-use-conref-target value for more information.
              Note This attribute is not part of the OASIS Exchange
              Table model upon which DITA tables are based. Some DITA
              processors or output formats might not support all values.
              The @rowheader attribute is available on the following
              table elements: <table> and <colspec>.

        
        

          3.10.12:
              Topicref element attributes group

        
          
Use
              the @copy-to attribute on the <topicref> element to
              provide a different resource name for a particular
              instance of a resource referenced by the <topicref>
              (for example, to separate out the different versions of
              the topic, rather than combining them on output). If
              applicable, the @copy-to value can include path
              information. The links and navigation associated with that
              instance will point to a copy of the topic with the file
              name you specified. ApplicationsÂMAYÂsupport
              @copy-to for references to local non-DITA resources. The
              @copy-to attribute is not supported for references to
              resources where the effective value for @scope is "peer"
              or "external". Use the <linktext> and
              <shortdesc> in the <topicref>'s
              <topicmeta> to provide a unique name and short
              description for the new copy.

        
        

          3.10.13.1:
              The @href attribute

        
          
The
              value of a DITA @href attribute must be a valid URI
              reference [RFC 3986]. It is an error if the value is not a
              valid URI reference. An implementationÂMAYÂgenerate an
              error message; it MAY recover from this error condition by
              attempting to convert the value to a valid URI reference.
              Note that the path separator character in a URI is the
              forward slash (â/â); the backward slash character (â\â) is
              not permitted unescaped within URIs.

        
        

          3.10.13.6:
              The @conaction attribute

        
          
It
              is an error for two source topics to replace the same
              element. ApplicationsÂMAYÂwarn users if
              more than one element attempts to replace a single target.

        
        

          3.10.13.7:
              The @conrefend attribute

        
          
The
              start and end elements of a rangeÂMUSTÂbe of the same
              type as the referencing element or generalizable to the
              referencing element. For example, @conref and @conrefend
              attributes on an <li> element might reference other
              <li> elements, or they might reference
              specializations of <li> such as <step>.

          
The
              start and end elements in a rangeÂMUSTÂshare the same
              parent, and the start element MUST precede the end element
              in document order.

          
The
              parent of the referencing elementÂMUSTÂbe the same as
              the parent of the referenced range or generalizable to the
              parent of the referencing element. For example, it is
              possible to pull a range from <conbody> into
              <body>, because <conbody> is generalizable to
              <body>. It is not possible to pull a range from
              <body> into <conbody>, because the result
              might not be valid in <conbody>.

        
        

          3.10.13.8:
              The @conkeyref attribute

        
          
When
              the key name specified by the @conkeyref attribute is not
              defined and the element also specifies a @conref
              attribute, the @conref attribute is used to determine the
              content reference relationship. If no @conref attribute is
              specified there is no content reference relationship.
              ProcessorsÂSHOULDÂissue a
              warning when a @conkeyref reference cannot be resolved and
              there is no @conref attribute to use as a fallback.
              ProcessorsÂMAYÂissue a
              warning when a @conkeyref cannot be resolved to an element
              and a specified @conref is used as a fallback.

        
        

          3.10.13.9:
              The @type attribute

        
          
If
              not explicitly specified on an element, the @type
              attribute value cascades from the closest ancestor
              element. If there is no explicit value for the @type
              attribute on any ancestor, a default value of âtopicâ is
              used. During output processing for references to DITA
              topics (format="dita"), it is an error if the actual type
              of a DITA topic and the explicit, inherited, or default
              value for the @type attribute are not the same as or a
              specialization of the @type attribute value. In this case,
              an implementationÂMAYÂgive an error
              message, and MAY recover from this error condition by
              using the @type attribute value. During output processing
              for references to non-DITA objects (that is, either scope
              is âexternal" or format is neither âditaâ nor âditamapâ)
              or other cases where the type of the referenced item
              cannot be determined from the item itself, the explicit,
              inherited, or default value for the @type attribute is
              used without any validation. When a referencing element is
              first added to or updated in a document, DITA aware
              editors MAY set the @type attribute value based on the
              actual type of a referenced DITA topic.

          
For
              example, if the value is set to type="topic", the link
              could be to a generic topic, or any specialization of
              topic, including concept, task, and reference.
              ApplicationsÂMAYÂissue a
              warning when the specified or inherited @type attribute
              value does not match the target (or a specialization
              ancestor of the target).

        
        

          3.10.13.10:
              The @format attribute

        
          
If
              the actual format of the referenced content differs from
              the effective value of the @format attribute, and a
              processor is capable of identifying such cases, itÂMAYÂrecover
              gracefully and treat the content as its actual format,
              butÂSHOULDÂalso issue a
              message.

        
        

          3.10.13.11:
              The @scope attribute

        
          
Processors
              can consider additional URI schemes as "external" by
              default. ProcessorsÂMUSTÂalways
              consider relative URIs as "local" by default.

        
        

          Chapter
              4: Conformance

        
          
Conforming
              DITA implementationsÂMUSTÂinclude a
              conformance statement that gives the version of the DITA
              specification that is supported. The conformance statement
              must include one of the following:

          
An
              implementation that does not include a particular optional
              featureÂMUSTÂbe prepared to
              interoperate with other implementations that do include
              the feature, though perhaps with reduced functionality. An
              implementation that does include a particular optional
              feature MUST be prepared to interoperate with other
              implementations that do not include the feature.

          
If
              using non-DITA-conforming grammar files for conforming
              DITA documents, those grammar filesÂMUSTÂNOT be
              structured in a way that affects the ability of processors
              to process those documents. The use of non-conforming
              document types or schemas might impede interchange or
              interoperation of those documents with tools that expect
              or require the use of conforming DITA document types or
              schemas.

          
A
              processor that implements all required processing relevant
              to the vocabulary modules that it claims to support. A
              DITA-aware processorÂMUSTÂsupport at
              least one map or topic type, whether defined by the DITA
              standard or defined as a custom vocabulary module.

          
For
              processors that produce final form output, all features
              that are relevant to the type of processing that the
              processor performsÂMUSTÂbe
              implemented, with the exception of features that are
              vocabulary-specific. In particular, such processors MUST
              implement address resolution and content reference
              resolution. Such processorsÂSHOULDÂimplement
              filtering.

          
Processors
              that store, manage, or edit DITA documents might not
              implement specific features that would be required for
              final-form processing. However, such processorsÂMUSTÂenable the
              creation or storage of DITA documents that use all DITA
              features, even if the processor is not aware of the DITA
              semantics for those features.

        
        

          Â

        
Â

      

      The content of this email and any attached files are intended for
      the recipient specified in this message only. It may contain
      information that is confidential, proprietary, privileged, and/or
      exempt from disclosure under applicable law. It is strictly
      forbidden to share any part of this message with any third party
      or rely on any of its contents, without the written consent of the
      sender. If you received this message by mistake, please reply to
      this message and follow with deletion of the original message, any
      copies and all attachments, so that we can ensure such a mistake
      does not occur in the future.
Next in thread → Next in month →