<subjectScheme>

The <subjectScheme> element defines controlled values and taxonomic subjects.

Specialization hierarchy

The <subjectScheme> element is specialized from <map>. It is defined in the subject scheme module.

Content model

<title> ?, <topicmeta> ?, ( <data> | <enumerationdef> | <navref> | <reltable> | <schemeref> | <subjectdef> | <subjectHead> | <topicref> )*

Attributes

The following attributes are available on this element: architectural attributes, common map attributes, universal attributes, @format, @scope, and @type.

For this element, the following considerations apply:
  • The @processing-role attribute has a default value of resource-only.
  • The @toc attribute has a default value of no.

The following attributes are available on this element: universal attributes and the attributes defined below.

@cascade (common map attributes)

Specifies how metadata attributes cascade within a map. The specification defines the following values:

merge
Indicates that the metadata attributes cascade, and that the values of the metadata attributes are additive. This is the processing default for the @cascade attribute.
nomerge
Indicates that the metadata attributes cascade, but that 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 ancestor elements.

Processors can also define custom, implementation-specific tokens for this attribute.

See Cascading of metadata attributes in a DITA map for more information about how this attribute interacts with metadata attributes.

@chunk (common map attributes)
Specifies how a processor should render a map or branch of a map. For example, it can be used to specify that individual topic documents should be rendered as a single document, or that a single document with multiple topics should be rendered as multiple documents.
The following values are valid:
combine
Instructs a processor to combine the referenced source documents for rendering purposes. This is intended for cases where a publishing process normally results in a single output artifact for each source XML document.
split
Instructs a processor to split each topic from the referenced source document into its own document for rendering purposes. This is intended for cases where a publishing process normally results in a single output artifact for each source XML document, regardless of how many DITA topics exist within each source document.

Processors can also define custom, implementation-specific tokens for this attribute.

For a detailed description of the @chunk attribute and its usage, see Chunking.

@collection-type (common map attributes)
Specifies how topics or links relate to each other. The processing default is unordered, although no default is specified in the OASIS-provided grammar files. The following values are valid:
unordered
Indicates that the order of the child topics is not significant.
sequence
Indicates that the order of the child topics is significant. Output processors will typically link between them in order.
choice
Indicates that one of the children should be selected.
family
Indicates a tight grouping in which each of the referenced topics not only relates to the current topic but also relate to each other.
@DITAArchVersion (architectural attributes)
Specifies the version of the DITA architecture that is in use. This attribute is in the namespace http://dita.​oasis-open.​org/​architecture/​2005/. This attribute is specified in the topic and map modules, and it uses a default value of the current version of DITA. The current default is 2.0.
@format (link-relationship attributes)
Specifies the format of the resource that is referenced. See The format attribute for detailed information on supported values and processing implications.
@keyscope (common map attributes)
Specifies that the element marks the boundaries of a key scope.

See The keyscope attribute for information on using this attribute.

@linking (common map attributes)
Specifies linking characteristics of a topic specific to the location of this reference in a map. If the value is not specified locally, the value might cascade from another element in the map (for cascade rules, see Cascading of metadata attributes in a DITA map). The following values are valid:
targetonly
A topic can only be linked to and cannot link to other topics.
sourceonly
A topic cannot be linked to but can link to other topics.
normal
A topic can be linked to and can link to other topics. Use this to override the linking value of a parent topic.
none
A topic cannot be linked to or link to other topics.
-dita-use-conref-target
See Using the -dita-use-conref-target value for more information.
@processing-role (common map attributes)
Specifies whether the referenced resource is processed normally or treated as a resource that is only included in order to resolve references, such as key or content references. The following values are valid:
normal
Indicates that the resource is a readable part of the information set. It is included in navigation and search results. This is the default value for the <topicref> element.
resource-only
Indicates that the resource should be used only for processing purposes. It is not included in navigation or search results, nor is it rendered as a topic. This is the default value for the <keydef> element.
-dita-use-conref-target
See Using the -dita-use-conref-target value for more information.

If no value is specified but the attribute is specified on a containing element within a map or within the related-links section, the value cascades from the closest containing element.

The @processing-role attribute has a default value of resource-only.
@scope (link-relationship attributes)
Specifies the closeness of the relationship between the current document and the referenced resource. The following values are valid: local, peer, external, and -dita-use-conref-target.

See The scope attribute for detailed information on supported values and processing implications.

Specifies whether the target is available for searching. If the value is not specified locally, the value might cascade from another element in the map (for cascade rules, see Cascading of metadata attributes in a DITA map). The following values are valid: yes, no, and -dita-use-conref-target.
@specializations (architectural attributes)
Specifies the attribute-domain specializations that are included in the document-type shell. This attribute is set as a default within the document-type shell. The value varies depending on what domains are integrated into the document-type shell. For example, a grammar file that includes the specialized attributes @audience, @deliveryTarget, and @newBaseAtt would set the value to @props/audience @props/deliveryTarget @base/newBaseAtt.
@subjectrefs (common map attributes)
Specifies one or more keys that are each defined by a subject definition in a subject scheme map. Multiple values are separated by white space.
@toc (common map attributes)
Specifies whether a topic appears in the table of contents (TOC) based on the current map context. If the value is not specified locally, the value might cascade from another element in the map (for cascade rules, see Cascading of metadata attributes in a DITA map). The following values are valid:
yes
The topic appears in a generated TOC.
no
The topic does not appear in a generated TOC.
-dita-use-conref-target
See Using the -dita-use-conref-target value for more information.
The @toc attribute has a default value of no.
@type (link-relationship attributes)
Describes the target of a reference. See The type attribute for detailed information on supported values and processing implications.

Example

This section is non-normative.

The following code sample shows a subject scheme map:

<subjectScheme>
  <!-- Pull in a scheme that defines values for @deliveryTarget -->
  <schemeref href="deliveryTarget.ditamap"/>
  <!-- Define values for Windows and Linux -->
  <subjectdef keys="operating-systems">
    <subjectdef keys="windows">
      <subjectdef keys="windows-10"/>
      <subjectdef keys="windows-11"/>
    </subjectdef>
    <subjectdef keys="linux">
      <subjectdef keys="redhat"/>
      <subjectdef keys="suse"/>
    </subjectdef>
  </subjectdef>
  <!-- Define application values -->
  <subjectdef keys="applications">
    <subjectdef keys="apache-server" href="subject/apache.dita"/>
    <subjectdef keys="my-sql"      href="subject/sql.dita"/>
  </subjectdef>

  <!-- Define an enumeration of the platform attribute. This makes the
       following values valuid for platform: windows, windows-10, windows-11,
       linux, redhat, and suse. -->
  <enumerationdef>
    <attributedef name="platform"/>
    <subjectdef keyref="operating-systems"/>
  </enumerationdef>
  <!-- Define an enumeration of the otherprops attribute, equal to
       each value in the application subjects.
       This makes the following values valid for the otherprops attribute:
       apache-server, my-sql -->
  <enumerationdef>
    <attributedef name="otherprops"/>
    <subjectdef keyref="applications"/>
  </enumerationdef>
</subjectScheme>