Reference · SemText · Document & structure
<sem-audiences>
SemText element
You list each group here, then mark sections with an audience attribute. The reader picks their group and the page hides the rest. Nothing is deleted — machines still read the whole document.
Example
Live render boots with JavaScript — the authored source is alongside.
variant: audience qualifier on content
Both halves in one document. The active profile is the `sem-audience` hash parameter (`#…&sem-audience=operator`), else the author's default. Fallback running: with no profile the operator note and the shared paragraph carry the native `hidden` and the negated note shows; as operator the note and paragraph show (operator implies reader) and the negated note hides. JS-off everything is visible — and that is also the state this site's Render pane shows today: its pane wiring deliberately excludes the audience handler until the bundle sync, so nothing here carries `hidden` in the screenshot.
Live render boots with JavaScript — the authored source is alongside.
variant: authoring error — mixed positive and negated terms
"operator, !reader" mixes `!` with plain terms: warned once, and the positive terms decide — the negated one is ignored. So with the bundle running this note is hidden when no profile is active (a positive term never matches without one) and shown as `operator` — never as `reader`, because the `!reader` plays no part. As rendered here the note shows: this pane has no audience gating, the same all-visible state as JS-off. Unknown tokens fail a spec open instead — see the next variant.
Live render boots with JavaScript — the authored source is alongside.
variant: unknown profile token
A token no sem-audiences block declares is an authoring error: warned, and the content shows anyway — fail-open, because a typo must never hide content.
Live render boots with JavaScript — the authored source is alongside.
Source: spec/schema/sem-audiences.md