Applicability attributes
Standard DITA filtering attributes on any map entry, topic or element decide which readers see it. One rule covers both the reader's release and what their organization is entitled to.
The attributes
| Attribute | Values | A reader sees the content when |
|---|---|---|
product | tokens declared in opend.config.yaml | their organization holds at least one listed product |
feature | tokens declared in opend.config.yaml | their organization holds at least one listed feature |
release | versions and ranges such as 0.1, 2, 2.0.., ..1.9, 1.2..1.9 | their version matches at least one listed range |
audience, platform, otherprops, props, deliveryTarget | tokens declared in opend.config.yaml | the build-time DITAVAL does not exclude them |
For example, this site declares product: [core, hosted, embed]. The self-hosting
guides carry product="core", the embedded-help section carries
product="embed", and the architecture overview carries
product="core hosted" because it matters to anyone with either.
How conditions combine
These are DITAVAL semantics:
- Values within one attribute are alternatives:
product="core hosted"shows to a reader holding either. - Separate attributes must all pass:
product="embed" release="0.2.."needs the embed product and release 0.2 or later. - A condition on an ancestor applies to everything inside it: an element, a topic, a
topicrefor atopichead. - A topic is published to a reader only when a navigation entry they can see points at it and the topic's own root passes.
<topichead navtitle="Embedded help" product="embed"> <!-- whole section -->
<topicref href="../topics/help/tokens.dita"/>
</topichead>
<p product="core">Set OPEND_EMBED_SECRET on the server.</p> <!-- one paragraph -->
<step release="..0.1">...</step> <!-- up to 0.1.x -->
Reader attributes and build attributes
product, feature and release are reader
attributes: they are kept in the release snapshot and decided for each reader at request time. The
other attributes are build attributes: the build-time DITAVAL decides them once for everyone, and
readers are never gated by them. So audience="admin" labels content, but does not
hide it from anyone unless the DITAVAL excludes that value. Use product or
feature to gate readers.
What readers never see
- Content their filter excludes, in pages, navigation, search, the help panel or PDFs.
- The title of a hidden topic: a link to it renders as its authored text only. See Links, and links to hidden topics.
- Filtering attributes themselves: they are stripped from the HTML.
A page the reader cannot see returns the same 404 as a page that does not exist, so guessing URLs reveals nothing.