id
Audit
- Macro ID
- id
- Source
- XS
- Type
- Generator
- Classification reason
- The macro has no content and its only output is an invisible anchor built from its name parameter, so it is classified as a generator.
- Status
- Reviewed
- Criteria version
- 15.20
- XWiki version
- 18.8.0
- Audit date
- 2026-10-16
- Auditor
- Compared macros
- toc children
Sources
Where to gather the information the criteria are checked against, see Gather the sources.
| Other sources specific to this macro |
|---|
|
| Criterion | Result | Notes |
|---|---|---|
| D1 wording | KO | the name "Id" is a code identifier, not the user's word for what the macro adds. The description itself says that "In HTML for example this is called an Anchor", and the French and German names are "Ancre" and "Anker". In English, the Insert Macro dialog and the Quick Actions menu show "Id". |
| D2 summary | KO | "Allows putting a reference/location in a page. In HTML for example this is called an Anchor. It allows pointing to that location, for example in links." is three sentences and 26 words, with technical terms, "reference/location" and "In HTML". It does not say plainly that the macro adds an invisible anchor that links can jump to. |
| D3 category | OK | Navigation, like the compared macros toc and children. |
| D4 quick-action | KO | Quick Actions finds the macro first for "Id", "id", the synonym "anchor" and the French name "Ancre". The synonyms "bookmark" and "target" give no result: typing "/bookmark" lists nothing. |
| L1 consistency | OK | compared with toc and children: like them it has no content and is in Navigation. Unlike them, its name parameter is mandatory, so the Quick Action opens the Edit Macro dialog instead of inserting the macro right away. This is by design: an anchor without a name cannot be linked to. |
| L2 doc-parameters | KO | the parameter is only documented on the legacy extensions.xwiki.org page, not in the new documentation. |
| L3 doc-example | OK | the documentation gives {{id name="someid" /}} and an example with a link jumping to it, [[Click here to jump to anchor "someid">>||anchor="someid"]] ; both render without error. |
| I1 pattern | OK | compared with children, the reference generator: from the Insert Macro dialog both open the Edit Macro dialog. From Quick Actions, the "Id" entry opens the Edit Macro dialog, since the name is mandatory, the generic behavior of a macro with a mandatory parameter and no dedicated Quick Action. |
| I2 zero-config | OK | submitting the Edit Macro dialog with the empty mandatory name keeps the dialog open with no message, the generic behavior of the dialog. |
| I3 instant | N/A | |
| I4 cursor | N/A | |
| I5 focus | OK | the only field, Name, is mandatory, visible without scrolling and focused when the dialog opens. |
| E1 wysiwyg | KO | the editor only shows the generic "macro:id" placeholder for {{id name="someid"/}} , without the anchor name, while view mode shows nothing, since an anchor is invisible. The placeholder should say that it is an anchor and give its name, so that the user can find it and link to it. |
| E2 errors | KO | the name is accepted silently whatever its value. {{id name=""/}} renders an empty id="" that no link can reach, {{id name="my anchor"/}} renders an id with a space, which HTML does not allow, {{id name="dup"/}}{{id name="dup"/}} renders two elements with the same id, and = Intro = {{id name="HIntro"/}} duplicates the id generated for the heading; in each case no message warns the user, and a link to a duplicated anchor silently goes to the first one. |
| E3 nesting | OK | in a list item, a table cell and a box, {{id name="someid"/}} renders its anchor with no error, inline in the list item and the table cell, and the macro can be edited through its dialog as at the top level. |
| E4 inline-support | OK | the macro declares inline support and renders an inline anchor inside a sentence: one {{id name="mid"/}} two gives one paragraph, with no block breaking the line. |
| E5 empty | N/A | |
| E6 inplace | N/A |
Parameters
| Parameter | C1 clarity | C2 mandatory | C3 defaults | C4 input-assistance | C5 groups | C6 order | C7 alternatives | C8 advanced | C9 technical | C13 constraints | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|
| name | KO | OK | N/A | OK | OK | OK | N/A | OK | OK | KO | C1: the description "the identifier string" is technical and does not say what the name is for, the anchor name that a link targets with anchor="...", nor what value is expected, like a single word without spaces. The French "Le texte de l'ancre à insérer" and German "Die sogenannte ID des Ankers" are clearer. C2: mandatory with no default, which is right: the user needs to know the name to link to the anchor. C4: a text field, which fits a new name chosen by the user. C13, minor: the macro accepts any text, so no format is declared: an empty name or a name with spaces gives an invalid HTML id, see E2 and XRENDERING-821. |
KOs and tickets
Every KO needs a ticket covering it, see Report the KOs. One ticket can cover several KOs. Known issues filed for this macro are suggested in italics: link them as existing tickets when they cover the KO.
| KO | Criterion | Existing tickets | New tickets |
|---|---|---|---|
| D1 | D1 wording | XWIKI-25493 | |
| D2 | D2 summary | XWIKI-25493 | |
| D4 | D4 quick-action | XWIKI-25444 | |
| L2 | L2 doc-parameters | XINFRA-525 | |
| E1 | E1 wysiwyg | XWIKI-25536 | |
| E2 | E2 errors | XRENDERING-821 | XCOMMONS-3847 (partial), XRENDERING-823 (partial) |
| C1:name | C1 clarity, name | XWIKI-25493 | |
| C13:name | C13 constraints, name | XRENDERING-821 |
Tickets
| Ticket | Origin | KOs covered | KOs partly covered |
|---|---|---|---|
| XRENDERING-821 | Existing | C13:name E2 | |
| XCOMMONS-3847 | New | E2 | |
| XRENDERING-823 | New | E2 | |
| XWIKI-25444 | New | D4 | |
| XWIKI-25493 | New | C1:name D1 D2 | |
| XINFRA-525 | New | L2 | |
| XWIKI-25536 | New | E1 |
Known issues of this macro
No known issue is specific to this macro.
68 more known issues affect every macro: see the Known issues.
Lucas Charpentier