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.
When an @href attribute references a DITA resource, an @href value that consists of a URI without a fragment identifier resolves to the document element in the referenced document. For the purposes of rendering, such as when a <topicref> reference to a DITA document is used to render the content as HTML, this means that all topics (and topic specializations) in the target document are included in the reference. For the purpose of linking, the reference resolves to the first (or only) topic (or topic specialization) in the document.
An @href value that consists of a URI with a fragment identifier must have a
DITA local identifier as the portion after the hash. A DITA local identifier consists
of
topicID/elementID
for a subelement of a
topic, and of elementID for topics, maps, and subelements of a map. If the topic referenced by a DITA local identifier is for the same
topic, then topicID can be replaced by a period; see Processing xrefs and conrefs within a conref for more information on how this syntax relates to conref resolution.
Note that certain characters - including but not limited to the hash sign ("#"), question mark ("?"), back slash ("\"), and space - are not permitted unescaped within URIs. Such characters must be percent-encoded. Also note that the ampersand ("&") and less than (“<”) characters are not permitted in XML attribute values; they must be represented by appropriate character or entity references. Some tools might perform this encoding automatically, while other tools might require that users either avoid the special characters or manually insert the encoding.
Example: Common syntax for the @href attribute
The following table includes some examples of common @href syntax. Note that these examples represent only a few common scenarios and are not all inclusive.
Target | Syntax |
---|---|
The first topic in a DITA document | href="file.dita" |
A specific topic in a DITA document | href="file.dita#topicid" |
A non-topic element inside a DITA topic | href="#topicid/elementid" |
A non-topic element inside the same DITA topic as the reference | href="#./elementid" |
An element in a DITA map | href="myMap.ditamap#map-branch" |
An image | href="exampleImage.jpg" |
An external resource | href="http://www.example.org" |
where:
- topicid is the value of the @id attribute on the DITA topic.
- elementid is the value of the @id attribute on the (non-topic) DITA element.
- map-branch is the value of the @id attribute on the DITA map element.