@dogsbay/format-dita 0.2.0-beta.123 → 0.2.0-beta.124

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -27,7 +27,7 @@ dogsbay import-dita docs/ -o content --report topics.md
27
27
  ```
28
28
 
29
29
  Tasks become native `:::steps`, notes become callouts, CALS and
30
- simpletables become tables, `<xref href="x.dita">` becomes `[…](x.md)`,
30
+ simpletables (and a reference topic's `<properties>`) become tables, `<xref href="x.dita">` becomes `[…](x.md)`,
31
31
  and `keyref` links become `key:` links. Nested or sibling topics in
32
32
  multi-topic files are emitted inline as anchored sections.
33
33
 
@@ -38,6 +38,18 @@ emit `{% include %}` so one canonical copy of reused text survives. Use
38
38
  `dogsbay import-dita --no-conref-includes` to keep conrefs on the ledger
39
39
  instead.
40
40
 
41
+ **Specializations in raw source:** a file as authored has no `@class`, so
42
+ an element is known only by its name, and a specialization the converter
43
+ does not know by name (a `<troubleshooting>` topic, a hazard statement's
44
+ items) loses its markup. `{ classDefaults: true }` fills in each missing
45
+ `@class` from the DITA 1.3 DTD defaults first (612 elements, the table
46
+ `DITA_CLASS_DEFAULTS`, generated by `scripts/generate-class-defaults.mjs`
47
+ from DITA-OT's `.mod` files), as parsing against the DTDs would; the
48
+ element then converts as what it specializes. An existing `@class` is kept;
49
+ a name the DTDs do not declare (custom or DITA 2.0) stays unclassed, with
50
+ one note per topic. It is off by default for now because it changes the
51
+ output for such elements.
52
+
41
53
  Everything that cannot map cleanly lands in the conversion ledger instead
42
54
  of disappearing: filter attributes, table spans, semantic-inline downgrades,
43
55
  `conkeyref`, conref ranges/pushes, whole-topic conrefs, unresolved targets,
package/dist/blocks.js CHANGED
@@ -210,8 +210,14 @@ const definingItemNode = (el, ctx, type) => {
210
210
  ctx.note("@conref", `<${el.name.toLowerCase()} id="${el.attribs.id}"> is reused elsewhere via "${snippet.file}" but its content is multi-line — replace it with the include manually to keep one copy`);
211
211
  return null;
212
212
  };
213
+ /**
214
+ * Whether an element is a `tag` by name or, with @class, by what it
215
+ * specializes: a hazard statement's <typeofhazard> is an <li>. Matching the
216
+ * name alone dropped such items, and their text, without a note.
217
+ */
218
+ const isPart = (el, ctx, tag) => isElement(el) && elementName(el, ctx, (n) => n === tag) === tag;
213
219
  const convertListItems = (el, ctx, itemTag) => el.children
214
- .filter((c) => isElement(c) && c.name.toLowerCase() === itemTag)
220
+ .filter((c) => isPart(c, ctx, itemTag))
215
221
  .map((li) => {
216
222
  const viaConref = itemConref(li, ctx, "list-item") ?? definingItemNode(li, ctx, "list-item");
217
223
  if (viaConref)
@@ -529,7 +535,7 @@ const inlineLabel = (inline) => (inline ?? [])
529
535
  const dlComponentEntries = (el, ctx, component, keepEmpty = false, anchorsOut) => {
530
536
  const out = [];
531
537
  let pending = [];
532
- const entries = el.children.filter((c) => isElement(c) && c.name.toLowerCase() === "dlentry");
538
+ const entries = el.children.filter((c) => isPart(c, ctx, "dlentry"));
533
539
  for (const entry of entries) {
534
540
  const items = convertDefList({ ...el, children: [entry] }, ctx).children ?? [];
535
541
  const terms = items.filter((n) => n.type === "dt");
@@ -637,7 +643,7 @@ const dlToCards = (el, ctx, anchors) => {
637
643
  const convertDefList = (el, ctx, tags = { entry: "dlentry", term: "dt", def: "dd" }) => {
638
644
  const children = [];
639
645
  for (const entry of el.children.filter(isElement)) {
640
- if (entry.name.toLowerCase() !== tags.entry)
646
+ if (!isPart(entry, ctx, tags.entry))
641
647
  continue;
642
648
  // Entry-level conref (<dlentry conref>): a term/definition pair can't
643
649
  // splice as an include — ledger it so the loss is never silent
@@ -647,8 +653,7 @@ const convertDefList = (el, ctx, tags = { entry: "dlentry", term: "dt", def: "dd
647
653
  }
648
654
  let entryAnchored = false;
649
655
  for (const part of entry.children.filter(isElement)) {
650
- const name = part.name.toLowerCase();
651
- if (name === tags.term) {
656
+ if (isPart(part, ctx, tags.term)) {
652
657
  // Term-level conref (<dt conref>/<pt conref>): single-line
653
658
  // include or ledger — never a silent empty term
654
659
  const viaConref = constrainedConrefInline(part, ctx);
@@ -659,7 +664,7 @@ const convertDefList = (el, ctx, tags = { entry: "dlentry", term: "dt", def: "dd
659
664
  });
660
665
  entryAnchored = true;
661
666
  }
662
- else if (name === tags.def) {
667
+ else if (isPart(part, ctx, tags.def)) {
663
668
  const viaConref = constrainedConrefInline(part, ctx);
664
669
  if (viaConref) {
665
670
  children.push({ type: "dd", inline: viaConref });
@@ -719,12 +724,23 @@ const TABLE_PARTS = new Set([
719
724
  const hasClassToken = (el, token) => ` ${el.attribs?.class ?? ""} `.includes(` ${token} `);
720
725
  const elementChildren = (el) => el.children.filter(isElement);
721
726
  const PROPERTY_KINDS = ["proptype", "propvalue", "propdesc"];
727
+ /**
728
+ * Whether an element is the reference domain's `local` (`properties`, `property`, …):
729
+ * by @class when DITA-OT has filled it in, else by name, as authored source has none.
730
+ */
731
+ const isReference = (el, local) => hasClassToken(el, `reference/${local}`) || el.name.toLowerCase() === local;
722
732
  /** A properties table cell's column: `proptype`, or with suffix "hd" a header cell (`proptypehd`). */
723
- const propertyKind = (cell, suffix = "") => PROPERTY_KINDS.find((k) => hasClassToken(cell, `reference/${k}${suffix}`));
733
+ const propertyKind = (cell, suffix = "") => PROPERTY_KINDS.find((k) => isReference(cell, `${k}${suffix}`));
734
+ /**
735
+ * A properties table's cells. Exactly the cells `propertyKind` recognizes (a
736
+ * published cell's @class names its kind before the stentry it specializes),
737
+ * so a row's converted cells and its cell elements line up index for index.
738
+ */
739
+ const PROPERTY_CELLS = new Set([...PROPERTY_KINDS, ...PROPERTY_KINDS.map((k) => `${k}hd`)]);
724
740
  /** A properties table's columns in use, its properties that have cells, and its header row. */
725
741
  const propertiesColumns = (el) => {
726
- const header = elementChildren(el).find((c) => hasClassToken(c, "reference/prophead"));
727
- const propertyRows = elementChildren(el).filter((c) => hasClassToken(c, "reference/property") && elementChildren(c).some((cell) => !!propertyKind(cell)));
742
+ const header = elementChildren(el).find((c) => isReference(c, "prophead"));
743
+ const propertyRows = elementChildren(el).filter((c) => isReference(c, "property") && elementChildren(c).some((cell) => !!propertyKind(cell)));
728
744
  const used = PROPERTY_KINDS.filter((k) => propertyRows.some((r) => elementChildren(r).some((c) => propertyKind(c) === k)) ||
729
745
  (header ? elementChildren(header).some((c) => propertyKind(c, "hd") === k) : false));
730
746
  return { used, propertyRows, ...(header ? { header } : {}) };
@@ -829,15 +845,24 @@ const convertTable = (el, ctx) => {
829
845
  }
830
846
  };
831
847
  walk(el);
832
- // Publishing: a properties table's columns are the type, value and description columns
848
+ // A properties table's columns are the type, value and description columns
833
849
  // its header or any property uses (DITA-OT's hasType, hasValue, hasDesc); each row
834
850
  // aligns its cells to them, a property with no cells is dropped, and a header cell
835
- // missing for a column in use is DITA-OT's generated label ("Type", "Value", "Description")
836
- if (ctx.publish && hasClassToken(el, "reference/properties")) {
851
+ // missing for a column in use is DITA-OT's generated label ("Type", "Value",
852
+ // "Description"; localized when publishing). Authored source has no @class, so
853
+ // the parts are matched by name too (the walk above sees no sthead/strow then).
854
+ if (isReference(el, "properties")) {
837
855
  const { used, propertyRows, header } = propertiesColumns(el);
856
+ // A property with no cells has no row; one that reuses a row by conref is noted, not lost
857
+ for (const row of elementChildren(el)) {
858
+ if (isReference(row, "property") && !propertyRows.includes(row) && (row.attribs?.conref || row.attribs?.conkeyref)) {
859
+ const ref = row.attribs.conref ?? row.attribs.conkeyref;
860
+ ctx.note(row.attribs.conref ? "@conref" : "@conkeyref", `<property> pulls content from "${ref}" — ${conrefLedgerDetail(row.attribs, undefined, ctx.conref !== undefined)}`);
861
+ }
862
+ }
838
863
  rows.length = 0;
839
864
  for (const row of propertyRows) {
840
- const converted = convertRow(row, SIMPLE_CELLS);
865
+ const converted = convertRow(row, PROPERTY_CELLS);
841
866
  const cellEls = elementChildren(row).filter((c) => !!propertyKind(c));
842
867
  rows.push({
843
868
  type: "tr",
@@ -847,13 +872,10 @@ const convertTable = (el, ctx) => {
847
872
  }),
848
873
  });
849
874
  }
850
- const lang = publishLanguage(el, ctx.publish);
851
- const label = {
852
- proptype: publishString(ctx.publish, lang, "Type"),
853
- propvalue: publishString(ctx.publish, lang, "Value"),
854
- propdesc: publishString(ctx.publish, lang, "Description"),
855
- };
856
- const authored = header ? convertRow(header, SIMPLE_CELLS, true) : undefined;
875
+ const lang = ctx.publish ? publishLanguage(el, ctx.publish) : undefined;
876
+ const word = (w) => (ctx.publish ? publishString(ctx.publish, lang, w) : w);
877
+ const label = { proptype: word("Type"), propvalue: word("Value"), propdesc: word("Description") };
878
+ const authored = header ? convertRow(header, PROPERTY_CELLS, true) : undefined;
857
879
  const headerCells = header ? elementChildren(header).filter((c) => !!propertyKind(c, "hd")) : [];
858
880
  headRows.length = 0;
859
881
  headRows.push({
@@ -940,7 +962,7 @@ export const convertStepContent = (stepEl, ctx) => {
940
962
  const convertSteps = (el, ctx, type) => {
941
963
  const stepTag = type === "steps" ? "step" : "substep";
942
964
  const children = el.children
943
- .filter((c) => isElement(c) && c.name.toLowerCase() === stepTag)
965
+ .filter((c) => isPart(c, ctx, stepTag))
944
966
  .map((stepEl) => {
945
967
  const viaConref = itemConref(stepEl, ctx, "step") ?? definingItemNode(stepEl, ctx, "step");
946
968
  if (viaConref)
@@ -1012,7 +1034,7 @@ const publishTaskLabel = (name, ctx, el) => ctx.publish?.taskLabels && TASK_LABE
1012
1034
  /** Block-level DITA elements (used to split mixed content). */
1013
1035
  const BLOCK_ELEMENTS = new Set([
1014
1036
  "p", "shortdesc", "note", "codeblock", "pre", "screen", "msgblock", "ul", "ol", "sl", "dl", "parml", "table", "simpletable",
1015
- "fig", "image", "section", "example", "steps", "steps-unordered", "substeps", "lq", "object",
1037
+ "properties", "fig", "image", "section", "example", "steps", "steps-unordered", "substeps", "lq", "object",
1016
1038
  "prereq", "context", "result", "postreq", "tasktroubleshooting", "choices", "choicetable", "syntaxdiagram",
1017
1039
  ]);
1018
1040
  const SYNTAX_GROUPS = new Set(["groupseq", "groupchoice", "groupcomp"]);
@@ -1364,7 +1386,7 @@ function convertBlockContent(el, ctx) {
1364
1386
  // as <li>: referencing items include or ledger, defining items
1365
1387
  // hand their text to the snippet)
1366
1388
  const items = el.children
1367
- .filter((c) => isElement(c) && c.name.toLowerCase() === "sli")
1389
+ .filter((c) => isPart(c, ctx, "sli"))
1368
1390
  .map((sli) => {
1369
1391
  const viaConref = itemConref(sli, ctx, "list-item") ?? definingItemNode(sli, ctx, "list-item");
1370
1392
  if (viaConref)
@@ -1400,9 +1422,17 @@ function convertBlockContent(el, ctx) {
1400
1422
  return [withProvenance(convertDefList(el, ctx, { entry: "plentry", term: "pt", def: "pd" }), el)];
1401
1423
  case "table":
1402
1424
  case "simpletable":
1403
- // Publishing: DITA-OT drops a properties table none of whose properties has a cell
1404
- if (ctx.publish && hasClassToken(el, "reference/properties") && propertiesColumns(el).propertyRows.length === 0)
1425
+ case "properties":
1426
+ // A properties table none of whose properties has a cell has no columns: DITA-OT drops it
1427
+ if (isReference(el, "properties") && propertiesColumns(el).propertyRows.length === 0) {
1428
+ if (!ctx.publish) {
1429
+ for (const row of elementChildren(el).filter((r) => r.attribs?.conref || r.attribs?.conkeyref)) {
1430
+ const ref = row.attribs.conref ?? row.attribs.conkeyref;
1431
+ ctx.note(row.attribs.conref ? "@conref" : "@conkeyref", `<${row.name.toLowerCase()}> pulls content from "${ref}" — ${conrefLedgerDetail(row.attribs, undefined, ctx.conref !== undefined)}`);
1432
+ }
1433
+ }
1405
1434
  return [];
1435
+ }
1406
1436
  return [withProvenance(convertTable(el, ctx), el)];
1407
1437
  case "syntaxdiagram":
1408
1438
  if (ctx.publish)
@@ -0,0 +1,15 @@
1
+ import type { AnyNode } from "domhandler";
2
+ /** An element's DITA 1.3 default @class (`inMap`: inside a map document), or undefined for a name the DTDs do not declare. */
3
+ export declare const classDefault: (name: string, inMap?: boolean) => string | undefined;
4
+ /**
5
+ * Fill in the @class a DTD would have defaulted, on every element that has
6
+ * none, as parsing against the DTDs (or DITA-OT preprocessing) does. An
7
+ * existing @class is kept. Returns the element names the DITA 1.3 DTDs do not
8
+ * declare (custom specializations, DITA 2.0), in document order, each once;
9
+ * those stay unclassed. Not reported: the `<dita>` wrapper of a composite
10
+ * topic, which has no @class by design, and foreign vocabularies (a
11
+ * namespace prefix, or an undeclared name inside a `<foreign>`
12
+ * specialization: MathML, SVG), which are not DITA elements and are left
13
+ * untouched. A DITA element inside one (`<mathmlref>`, `<svgref>`) is classed.
14
+ */
15
+ export declare function applyClassDefaults(nodes: AnyNode[]): string[];
@@ -0,0 +1,40 @@
1
+ import { isTag } from "domhandler";
2
+ import { DITA_CLASS_DEFAULTS, DITA_MAP_CLASS_DEFAULTS } from "./class-defaults.js";
3
+ const own = (table, name) => Object.prototype.hasOwnProperty.call(table, name) ? table[name] : undefined;
4
+ /** An element's DITA 1.3 default @class (`inMap`: inside a map document), or undefined for a name the DTDs do not declare. */
5
+ export const classDefault = (name, inMap = false) => (inMap ? own(DITA_MAP_CLASS_DEFAULTS, name) : undefined) ?? own(DITA_CLASS_DEFAULTS, name);
6
+ /**
7
+ * Fill in the @class a DTD would have defaulted, on every element that has
8
+ * none, as parsing against the DTDs (or DITA-OT preprocessing) does. An
9
+ * existing @class is kept. Returns the element names the DITA 1.3 DTDs do not
10
+ * declare (custom specializations, DITA 2.0), in document order, each once;
11
+ * those stay unclassed. Not reported: the `<dita>` wrapper of a composite
12
+ * topic, which has no @class by design, and foreign vocabularies (a
13
+ * namespace prefix, or an undeclared name inside a `<foreign>`
14
+ * specialization: MathML, SVG), which are not DITA elements and are left
15
+ * untouched. A DITA element inside one (`<mathmlref>`, `<svgref>`) is classed.
16
+ */
17
+ export function applyClassDefaults(nodes) {
18
+ const root = nodes.find(isTag);
19
+ const inMap = !!root && (["map", "bookmap", "subjectScheme"].includes(root.name) || ` ${root.attribs?.class ?? ""} `.includes(" map/map "));
20
+ const unknown = new Set();
21
+ const visit = (el, inForeign) => {
22
+ if (el.name.includes(":"))
23
+ return;
24
+ if (!el.attribs?.class?.trim()) {
25
+ const value = classDefault(el.name, inMap);
26
+ if (value)
27
+ el.attribs = { ...el.attribs, class: value };
28
+ else if (el.name !== "dita" && !inForeign)
29
+ unknown.add(el.name);
30
+ }
31
+ const foreign = inForeign || ` ${el.attribs?.class ?? ""} `.includes(" topic/foreign ");
32
+ for (const child of el.children)
33
+ if (isTag(child))
34
+ visit(child, foreign);
35
+ };
36
+ for (const node of nodes)
37
+ if (isTag(node))
38
+ visit(node, false);
39
+ return [...unknown];
40
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Each DITA 1.3 element's default @class, as its DTD declares it. GENERATED by
3
+ * scripts/generate-class-defaults.mjs from the .mod files under dita-ot-4.3.5's
4
+ * plugins/org.oasis-open.dita.v1_3/dtd/ (612 elements); do not edit.
5
+ */
6
+ export declare const DITA_CLASS_DEFAULTS: Readonly<Record<string, string>>;
7
+ /** Elements whose class differs inside a map (map.mod declares them too). */
8
+ export declare const DITA_MAP_CLASS_DEFAULTS: Readonly<Record<string, string>>;
@@ -0,0 +1,625 @@
1
+ /**
2
+ * Each DITA 1.3 element's default @class, as its DTD declares it. GENERATED by
3
+ * scripts/generate-class-defaults.mjs from the .mod files under dita-ot-4.3.5's
4
+ * plugins/org.oasis-open.dita.v1_3/dtd/ (612 elements); do not edit.
5
+ */
6
+ export const DITA_CLASS_DEFAULTS = Object.freeze({
7
+ "abbreviated-form": "+ topic/term abbrev-d/abbreviated-form ",
8
+ "abbrevlist": "- map/topicref bookmap/abbrevlist ",
9
+ "abstract": "- topic/abstract ",
10
+ "addressdetails": "+ topic/ph xnal-d/addressdetails ",
11
+ "administrativearea": "+ topic/ph xnal-d/administrativearea ",
12
+ "alt": "- topic/alt ",
13
+ "amendments": "- map/topicref bookmap/amendments ",
14
+ "anchor": "- map/anchor ",
15
+ "anchorid": "+ topic/keyword delay-d/anchorid ",
16
+ "anchorkey": "+ topic/keyword delay-d/anchorkey ",
17
+ "anchorref": "+ map/topicref mapgroup-d/anchorref ",
18
+ "apiname": "+ topic/keyword pr-d/apiname ",
19
+ "appendices": "- map/topicref bookmap/appendices ",
20
+ "appendix": "- map/topicref bookmap/appendix ",
21
+ "approved": "- topic/data bookmap/approved ",
22
+ "area": "+ topic/figgroup ut-d/area ",
23
+ "attributedef": "- topic/data subjectScheme/attributedef ",
24
+ "audience": "- topic/audience ",
25
+ "author": "- topic/author ",
26
+ "authorinformation": "+ topic/author xnal-d/authorinformation ",
27
+ "b": "+ topic/ph hi-d/b ",
28
+ "backmatter": "- map/topicref bookmap/backmatter ",
29
+ "bibliolist": "- map/topicref bookmap/bibliolist ",
30
+ "body": "- topic/body ",
31
+ "bodydiv": "- topic/bodydiv ",
32
+ "bookabstract": "- map/topicref bookmap/bookabstract ",
33
+ "bookchangehistory": "- topic/data bookmap/bookchangehistory ",
34
+ "bookevent": "- topic/data bookmap/bookevent ",
35
+ "bookeventtype": "- topic/data bookmap/bookeventtype ",
36
+ "bookid": "- topic/data bookmap/bookid ",
37
+ "booklibrary": "- topic/ph bookmap/booklibrary ",
38
+ "booklist": "- map/topicref bookmap/booklist ",
39
+ "booklists": "- map/topicref bookmap/booklists ",
40
+ "bookmap": "- map/map bookmap/bookmap ",
41
+ "bookmeta": "- map/topicmeta bookmap/bookmeta ",
42
+ "booknumber": "- topic/data bookmap/booknumber ",
43
+ "bookowner": "- topic/data bookmap/bookowner ",
44
+ "bookpartno": "- topic/data bookmap/bookpartno ",
45
+ "bookrestriction": "- topic/data bookmap/bookrestriction ",
46
+ "bookrights": "- topic/data bookmap/bookrights ",
47
+ "booktitle": "- topic/title bookmap/booktitle ",
48
+ "booktitlealt": "- topic/ph bookmap/booktitlealt ",
49
+ "boolean": "- topic/boolean ",
50
+ "brand": "- topic/brand ",
51
+ "category": "- topic/category ",
52
+ "cause": "- topic/section troubleshooting/cause ",
53
+ "change-completed": "+ topic/data relmgmt-d/change-completed ",
54
+ "change-historylist": "+ topic/metadata relmgmt-d/change-historylist ",
55
+ "change-item": "+ topic/data relmgmt-d/change-item ",
56
+ "change-organization": "+ topic/data relmgmt-d/change-organization ",
57
+ "change-person": "+ topic/data relmgmt-d/change-person ",
58
+ "change-request-id": "+ topic/data relmgmt-d/change-request-id ",
59
+ "change-request-reference": "+ topic/data relmgmt-d/change-request-reference ",
60
+ "change-request-system": "+ topic/data relmgmt-d/change-request-system ",
61
+ "change-revisionid": "+ topic/data relmgmt-d/change-revisionid ",
62
+ "change-started": "+ topic/data relmgmt-d/change-started ",
63
+ "change-summary": "+ topic/data relmgmt-d/change-summary ",
64
+ "chapter": "- map/topicref bookmap/chapter ",
65
+ "chdesc": "- topic/stentry task/chdesc ",
66
+ "chdeschd": "- topic/stentry task/chdeschd ",
67
+ "chhead": "- topic/sthead task/chhead ",
68
+ "choice": "- topic/li task/choice ",
69
+ "choices": "- topic/ul task/choices ",
70
+ "choicetable": "- topic/simpletable task/choicetable ",
71
+ "choption": "- topic/stentry task/choption ",
72
+ "choptionhd": "- topic/stentry task/choptionhd ",
73
+ "chrow": "- topic/strow task/chrow ",
74
+ "cite": "- topic/cite ",
75
+ "closereqs": "+ topic/section task/postreq taskreq-d/closereqs ",
76
+ "cmd": "- topic/ph task/cmd ",
77
+ "cmdname": "+ topic/keyword sw-d/cmdname ",
78
+ "codeblock": "+ topic/pre pr-d/codeblock ",
79
+ "codeph": "+ topic/ph pr-d/codeph ",
80
+ "coderef": "+ topic/xref pr-d/coderef ",
81
+ "colophon": "- map/topicref bookmap/colophon ",
82
+ "colspec": "- topic/colspec ",
83
+ "completed": "- topic/ph bookmap/completed ",
84
+ "component": "- topic/component ",
85
+ "conbody": "- topic/body concept/conbody ",
86
+ "conbodydiv": "- topic/bodydiv concept/conbodydiv ",
87
+ "concept": "- topic/topic concept/concept ",
88
+ "condition": "- topic/section troubleshooting/condition ",
89
+ "consequence": "+ topic/li hazard-d/consequence ",
90
+ "contactnumber": "+ topic/data xnal-d/contactnumber ",
91
+ "contactnumbers": "+ topic/data xnal-d/contactnumbers ",
92
+ "context": "- topic/section task/context ",
93
+ "coords": "+ topic/ph ut-d/coords ",
94
+ "copyrfirst": "- topic/data bookmap/copyrfirst ",
95
+ "copyrholder": "- topic/copyrholder ",
96
+ "copyright": "- topic/copyright ",
97
+ "copyrlast": "- topic/data bookmap/copyrlast ",
98
+ "copyryear": "- topic/copyryear ",
99
+ "country": "+ topic/ph xnal-d/country ",
100
+ "created": "- topic/created ",
101
+ "critdates": "- topic/critdates ",
102
+ "data": "- topic/data ",
103
+ "data-about": "- topic/data-about ",
104
+ "day": "- topic/ph bookmap/day ",
105
+ "dd": "- topic/dd ",
106
+ "ddhd": "- topic/ddhd ",
107
+ "dedication": "- map/topicref bookmap/dedication ",
108
+ "defaultSubject": "- map/topicref subjectScheme/defaultSubject ",
109
+ "delim": "+ topic/ph pr-d/delim ",
110
+ "desc": "- topic/desc ",
111
+ "ditavalmeta": "+ map/topicmeta ditavalref-d/ditavalmeta ",
112
+ "ditavalref": "+ map/topicref ditavalref-d/ditavalref ",
113
+ "div": "- topic/div ",
114
+ "dl": "- topic/dl ",
115
+ "dlentry": "- topic/dlentry ",
116
+ "dlhead": "- topic/dlhead ",
117
+ "draft-comment": "- topic/draft-comment ",
118
+ "draftintro": "- map/topicref bookmap/draftintro ",
119
+ "dt": "- topic/dt ",
120
+ "dthd": "- topic/dthd ",
121
+ "dvrKeyscopePrefix": "+ topic/data ditavalref-d/dvrKeyscopePrefix ",
122
+ "dvrKeyscopeSuffix": "+ topic/data ditavalref-d/dvrKeyscopeSuffix ",
123
+ "dvrResourcePrefix": "+ topic/data ditavalref-d/dvrResourcePrefix ",
124
+ "dvrResourceSuffix": "+ topic/data ditavalref-d/dvrResourceSuffix ",
125
+ "edited": "- topic/data bookmap/edited ",
126
+ "edition": "- topic/data bookmap/edition ",
127
+ "elementdef": "- topic/data subjectScheme/elementdef ",
128
+ "emailaddress": "+ topic/data xnal-d/emailaddress ",
129
+ "emailaddresses": "+ topic/data xnal-d/emailaddresses ",
130
+ "entry": "- topic/entry ",
131
+ "enumerationdef": "- map/topicref subjectScheme/enumerationdef ",
132
+ "equation-block": "+ topic/div equation-d/equation-block ",
133
+ "equation-figure": "+ topic/fig equation-d/equation-figure ",
134
+ "equation-inline": "+ topic/ph equation-d/equation-inline ",
135
+ "equation-number": "+ topic/ph equation-d/equation-number ",
136
+ "esttime": "+ topic/li task/li taskreq-d/esttime ",
137
+ "example": "- topic/example ",
138
+ "exportanchors": "+ topic/keywords delay-d/exportanchors ",
139
+ "featnum": "- topic/featnum ",
140
+ "fig": "- topic/fig ",
141
+ "figgroup": "- topic/figgroup ",
142
+ "figurelist": "- map/topicref bookmap/figurelist ",
143
+ "filepath": "+ topic/ph sw-d/filepath ",
144
+ "firstname": "+ topic/data xnal-d/firstname ",
145
+ "fn": "- topic/fn ",
146
+ "foreign": "- topic/foreign ",
147
+ "fragment": "+ topic/figgroup pr-d/fragment ",
148
+ "fragref": "+ topic/xref pr-d/fragref ",
149
+ "frontmatter": "- map/topicref bookmap/frontmatter ",
150
+ "generationidentifier": "+ topic/data xnal-d/generationidentifier ",
151
+ "glossAbbreviation": "- topic/title concept/title glossentry/glossAbbreviation ",
152
+ "glossAcronym": "- topic/title concept/title glossentry/glossAcronym ",
153
+ "glossAlt": "- topic/section concept/section glossentry/glossAlt ",
154
+ "glossAlternateFor": "- topic/xref concept/xref glossentry/glossAlternateFor ",
155
+ "glossBody": "- topic/body concept/conbody glossentry/glossBody ",
156
+ "glossPartOfSpeech": "- topic/data concept/data glossentry/glossPartOfSpeech ",
157
+ "glossProperty": "- topic/data concept/data glossentry/glossProperty ",
158
+ "glossScopeNote": "- topic/note concept/note glossentry/glossScopeNote ",
159
+ "glossShortForm": "- topic/title concept/title glossentry/glossShortForm ",
160
+ "glossStatus": "- topic/data concept/data glossentry/glossStatus ",
161
+ "glossSurfaceForm": "- topic/p concept/p glossentry/glossSurfaceForm ",
162
+ "glossSymbol": "- topic/image concept/image glossentry/glossSymbol ",
163
+ "glossSynonym": "- topic/title concept/title glossentry/glossSynonym ",
164
+ "glossUsage": "- topic/note concept/note glossentry/glossUsage ",
165
+ "glossarylist": "- map/topicref bookmap/glossarylist ",
166
+ "glossdef": "- topic/abstract concept/abstract glossentry/glossdef ",
167
+ "glossentry": "- topic/topic concept/concept glossentry/glossentry ",
168
+ "glossgroup": "- topic/topic concept/concept glossgroup/glossgroup ",
169
+ "glossref": "+ map/topicref glossref-d/glossref ",
170
+ "glossterm": "- topic/title concept/title glossentry/glossterm ",
171
+ "groupchoice": "+ topic/figgroup pr-d/groupchoice ",
172
+ "groupcomp": "+ topic/figgroup pr-d/groupcomp ",
173
+ "groupseq": "+ topic/figgroup pr-d/groupseq ",
174
+ "hasInstance": "- map/topicref subjectScheme/hasInstance ",
175
+ "hasKind": "- map/topicref subjectScheme/hasKind ",
176
+ "hasNarrower": "- map/topicref subjectScheme/hasNarrower ",
177
+ "hasPart": "- map/topicref subjectScheme/hasPart ",
178
+ "hasRelated": "- map/topicref subjectScheme/hasRelated ",
179
+ "hazardstatement": "+ topic/note hazard-d/hazardstatement ",
180
+ "hazardsymbol": "+ topic/image hazard-d/hazardsymbol ",
181
+ "honorific": "+ topic/data xnal-d/honorific ",
182
+ "howtoavoid": "+ topic/li hazard-d/howtoavoid ",
183
+ "i": "+ topic/ph hi-d/i ",
184
+ "image": "- topic/image ",
185
+ "imagemap": "+ topic/fig ut-d/imagemap ",
186
+ "index-base": "- topic/index-base ",
187
+ "index-see": "+ topic/index-base indexing-d/index-see ",
188
+ "index-see-also": "+ topic/index-base indexing-d/index-see-also ",
189
+ "index-sort-as": "+ topic/index-base indexing-d/index-sort-as ",
190
+ "indexlist": "- map/topicref bookmap/indexlist ",
191
+ "indexterm": "- topic/indexterm ",
192
+ "indextermref": "- topic/indextermref ",
193
+ "info": "- topic/itemgroup task/info ",
194
+ "isbn": "- topic/data bookmap/isbn ",
195
+ "itemgroup": "- topic/itemgroup ",
196
+ "keydef": "+ map/topicref mapgroup-d/keydef ",
197
+ "keyword": "- topic/keyword ",
198
+ "keywords": "- topic/keywords ",
199
+ "kwd": "+ topic/keyword pr-d/kwd ",
200
+ "lastname": "+ topic/data xnal-d/lastname ",
201
+ "lcAge": "- topic/p learningBase/p learningPlan/lcAge ",
202
+ "lcAnswerContent": "+ topic/p learningInteractionBase-d/p learning-d/lcAnswerContent ",
203
+ "lcAnswerContent2": "+ topic/div learningInteractionBase2-d/div learning2-d/lcAnswerContent2 ",
204
+ "lcAnswerOption": "+ topic/li learningInteractionBase-d/li learning-d/lcAnswerOption ",
205
+ "lcAnswerOption2": "+ topic/li learningInteractionBase2-d/li learning2-d/lcAnswerOption2 ",
206
+ "lcAnswerOptionGroup": "+ topic/ul learningInteractionBase-d/ul learning-d/lcAnswerOptionGroup ",
207
+ "lcAnswerOptionGroup2": "+ topic/ul learningInteractionBase2-d/ul learning2-d/lcAnswerOptionGroup2 ",
208
+ "lcArea": "+ topic/figgroup learningInteractionBase-d/figgroup learning-d/lcArea ",
209
+ "lcArea2": "+ topic/figgroup learningInteractionBase2-d/figgroup learning2-d/lcArea2 ",
210
+ "lcAreaCoords": "+ topic/ph learningInteractionBase-d/ph learning-d/lcAreaCoords ",
211
+ "lcAreaCoords2": "+ topic/ph learningInteractionBase2-d/ph learning2-d/lcAreaCoords2 ",
212
+ "lcAreaShape": "+ topic/keyword learningInteractionBase-d/keyword learning-d/lcAreaShape ",
213
+ "lcAreaShape2": "+ topic/keyword learningInteractionBase2-d/keyword learning2-d/lcAreaShape2 ",
214
+ "lcAssessment": "- topic/p learningBase/p learningPlan/lcAssessment ",
215
+ "lcAsset": "+ topic/p learningInteractionBase-d/p learning-d/lcAsset ",
216
+ "lcAsset2": "+ topic/div learningInteractionBase2-d/div learning2-d/lcAsset2 ",
217
+ "lcAttitude": "- topic/p learningBase/p learningPlan/lcAttitude ",
218
+ "lcAudience": "- topic/section learningBase/lcAudience ",
219
+ "lcBackground": "- topic/p learningBase/p learningPlan/lcBackground ",
220
+ "lcCIN": "- topic/fig learningBase/fig learningPlan/lcCIN ",
221
+ "lcChallenge": "- topic/section learningBase/lcChallenge ",
222
+ "lcClassroom": "- topic/fig learningBase/fig learningPlan/lcClassroom ",
223
+ "lcClient": "- topic/fig learningBase/fig learningPlan/lcClient ",
224
+ "lcConstraints": "- topic/fig learningBase/fig learningPlan/lcConstraints ",
225
+ "lcCorrectResponse": "+ topic/data learningInteractionBase-d/data learning-d/lcCorrectResponse ",
226
+ "lcCorrectResponse2": "+ topic/data learningInteractionBase2-d/data learning2-d/lcCorrectResponse2 ",
227
+ "lcDelivDate": "- topic/fig learningBase/fig learningPlan/lcDelivDate ",
228
+ "lcDelivery": "- topic/p learningBase/p learningPlan/lcDelivery ",
229
+ "lcDownloadTime": "- topic/fig learningBase/fig learningPlan/lcDownloadTime ",
230
+ "lcDuration": "- topic/section learningBase/lcDuration ",
231
+ "lcEdLevel": "- topic/p learningBase/p learningPlan/lcEdLevel ",
232
+ "lcFeedback": "+ topic/p learningInteractionBase-d/p learning-d/lcFeedback ",
233
+ "lcFeedback2": "+ topic/div learningInteractionBase2-d/div learning2-d/lcFeedback2 ",
234
+ "lcFeedbackCorrect": "+ topic/p learningInteractionBase-d/p learning-d/lcFeedbackCorrect ",
235
+ "lcFeedbackCorrect2": "+ topic/div learningInteractionBase2-d/div learning2-d/lcFeedbackCorrect2 ",
236
+ "lcFeedbackIncorrect": "+ topic/p learningInteractionBase-d/p learning-d/lcFeedbackIncorrect ",
237
+ "lcFeedbackIncorrect2": "+ topic/div learningInteractionBase2-d/div learning2-d/lcFeedbackIncorrect2 ",
238
+ "lcFileSizeLimitations": "- topic/fig learningBase/fig learningPlan/lcFileSizeLimitations ",
239
+ "lcGapAnalysis": "- topic/section learningBase/section learningPlan/lcGapAnalysis ",
240
+ "lcGapItem": "- topic/fig learningBase/fig learningPlan/lcGapItem ",
241
+ "lcGapItemDelta": "- topic/p learningBase/p learningPlan/lcGapItemDelta ",
242
+ "lcGeneralDescription": "- topic/p learningBase/p learningPlan/lcGeneralDescription ",
243
+ "lcGoals": "- topic/p learningBase/p learningPlan/lcGoals ",
244
+ "lcGraphics": "- topic/fig learningBase/fig learningPlan/lcGraphics ",
245
+ "lcHandouts": "- topic/fig learningBase/fig learningPlan/lcHandouts ",
246
+ "lcHotspot": "+ topic/fig learningInteractionBase-d/lcInteractionBase learning-d/lcHotspot ",
247
+ "lcHotspot2": "+ topic/div learningInteractionBase2-d/lcInteractionBase2 learning2-d/lcHotspot2 ",
248
+ "lcHotspotMap": "+ topic/fig learningInteractionBase-d/figgroup learning-d/lcHotspotMap ",
249
+ "lcHotspotMap2": "+ topic/fig learningInteractionBase2-d/figgroup learning2-d/lcHotspotMap2 ",
250
+ "lcInstruction": "- topic/section learningBase/lcInstruction ",
251
+ "lcInstructornote": "+ topic/note learningInteractionBase-d/note learning-d/lcInstructornote ",
252
+ "lcInstructornote2": "+ topic/note learningInteractionBase2-d/note learning2-d/lcInstructornote2 ",
253
+ "lcInteraction": "- topic/section learningBase/lcInteraction ",
254
+ "lcInteractionBase": "+ topic/fig learningInteractionBase-d/lcInteractionBase ",
255
+ "lcInteractionBase2": "+ topic/div learningInteractionBase2-d/lcInteractionBase2 ",
256
+ "lcInteractionLabel2": "+ topic/p learningInteractionBase2-d/lcInteractionLabel2 ",
257
+ "lcIntervention": "- topic/section learningBase/section learningPlan/lcIntervention ",
258
+ "lcInterventionItem": "- topic/fig learningBase/fig learningPlan/lcInterventionItem ",
259
+ "lcIntro": "- topic/section learningBase/lcIntro ",
260
+ "lcItem": "+ topic/stentry learningInteractionBase-d/stentry learning-d/lcItem ",
261
+ "lcItem2": "+ topic/stentry learningInteractionBase2-d/stentry learning2-d/lcItem2 ",
262
+ "lcJtaItem": "- topic/p learningBase/p learningPlan/lcJtaItem ",
263
+ "lcKnowledge": "- topic/p learningBase/p learningPlan/lcKnowledge ",
264
+ "lcLMS": "- topic/fig learningBase/fig learningPlan/lcLMS ",
265
+ "lcLearnStrat": "- topic/p learningBase/p learningPlan/lcLearnStrat ",
266
+ "lcLom": "+ topic/metadata learningmeta-d/lcLom ",
267
+ "lcMatchTable": "+ topic/simpletable learningInteractionBase-d/simpletable learning-d/lcMatchTable ",
268
+ "lcMatchTable2": "+ topic/simpletable learningInteractionBase2-d/simpletable learning2-d/lcMatchTable2 ",
269
+ "lcMatching": "+ topic/fig learningInteractionBase-d/lcInteractionBase learning-d/lcMatching ",
270
+ "lcMatching2": "+ topic/div learningInteractionBase2-d/lcInteractionBase2 learning2-d/lcMatching2 ",
271
+ "lcMatchingHeader": "+ topic/sthead learningInteractionBase-d/sthead learning-d/lcMatchingHeader ",
272
+ "lcMatchingHeader2": "+ topic/sthead learningInteractionBase2-d/sthead learning2-d/lcMatchingHeader2 ",
273
+ "lcMatchingItem": "+ topic/stentry learningInteractionBase-d/stentry learning-d/lcMatchingItem ",
274
+ "lcMatchingItem2": "+ topic/stentry learningInteractionBase2-d/stentry learning2-d/lcMatchingItem2 ",
275
+ "lcMatchingItemFeedback": "+ topic/stentry learningInteractionBase-d/stentry learning-d/lcMatchingItemFeedback ",
276
+ "lcMatchingItemFeedback2": "+ topic/stentry learningInteractionBase2-d/stentry learning2-d/lcMatchingItemFeedback2 ",
277
+ "lcMatchingPair": "+ topic/strow learningInteractionBase-d/strow learning-d/lcMatchingPair ",
278
+ "lcMatchingPair2": "+ topic/strow learningInteractionBase2-d/strow learning2-d/lcMatchingPair2 ",
279
+ "lcModDate": "- topic/fig learningBase/fig learningPlan/lcModDate ",
280
+ "lcMotivation": "- topic/p learningBase/p learningPlan/lcMotivation ",
281
+ "lcMultipleSelect": "+ topic/fig learningInteractionBase-d/lcInteractionBase learning-d/lcMultipleSelect ",
282
+ "lcMultipleSelect2": "+ topic/div learningInteractionBase2-d/lcInteractionBase2 learning2-d/lcMultipleSelect2 ",
283
+ "lcNeeds": "- topic/p learningBase/p learningPlan/lcNeeds ",
284
+ "lcNeedsAnalysis": "- topic/section learningBase/section learningPlan/lcNeedsAnalysis ",
285
+ "lcNextSteps": "- topic/section learningBase/lcNextSteps ",
286
+ "lcNoLMS": "- topic/fig learningBase/fig learningPlan/lcNoLMS ",
287
+ "lcOJT": "- topic/fig learningBase/fig learningPlan/lcOJT ",
288
+ "lcObjective": "- topic/li learningBase/lcObjective ",
289
+ "lcObjectives": "- topic/section learningBase/lcObjectives ",
290
+ "lcObjectivesGroup": "- topic/ul learningBase/lcObjectivesGroup ",
291
+ "lcObjectivesStem": "- topic/ph learningBase/lcObjectivesStem ",
292
+ "lcOpenAnswer": "+ topic/p learningInteractionBase-d/p learning-d/lcOpenAnswer ",
293
+ "lcOpenAnswer2": "+ topic/div learningInteractionBase2-d/div learning2-d/lcOpenAnswer2 ",
294
+ "lcOpenQuestion": "+ topic/fig learningInteractionBase-d/lcInteractionBase learning-d/lcOpenQuestion ",
295
+ "lcOpenQuestion2": "+ topic/div learningInteractionBase2-d/lcInteractionBase2 learning2-d/lcOpenQuestion2 ",
296
+ "lcOrgConstraints": "- topic/p learningBase/p learningPlan/lcOrgConstraints ",
297
+ "lcOrganizational": "- topic/fig learningBase/fig learningPlan/lcOrganizational ",
298
+ "lcPlanAudience": "- topic/fig learningBase/fig learningPlan/lcPlanAudience ",
299
+ "lcPlanDescrip": "- topic/fig learningBase/fig learningPlan/lcPlanDescrip ",
300
+ "lcPlanObjective": "- topic/p learningBase/p learningPlan/lcPlanObjective ",
301
+ "lcPlanPrereqs": "- topic/fig learningBase/fig learningPlan/lcPlanPrereqs ",
302
+ "lcPlanResources": "- topic/p learningBase/p learningPlan/lcPlanResources ",
303
+ "lcPlanSubject": "- topic/fig learningBase/fig learningPlan/lcPlanSubject ",
304
+ "lcPlanTitle": "- topic/fig learningBase/fig learningPlan/lcPlanTitle ",
305
+ "lcPlayers": "- topic/fig learningBase/fig learningPlan/lcPlayers ",
306
+ "lcPrereqs": "- topic/section learningBase/lcPrereqs ",
307
+ "lcProcesses": "- topic/p learningBase/p learningPlan/lcProcesses ",
308
+ "lcProject": "- topic/section learningBase/section learningPlan/lcProject ",
309
+ "lcQuestion": "+ topic/p learningInteractionBase-d/lcQuestionBase learning-d/lcQuestion ",
310
+ "lcQuestion2": "+ topic/div learningInteractionBase2-d/lcQuestionBase2 learning2-d/lcQuestion2 ",
311
+ "lcQuestionBase": "+ topic/p learningInteractionBase-d/lcQuestionBase ",
312
+ "lcQuestionBase2": "+ topic/div learningInteractionBase2-d/lcQuestionBase2 ",
313
+ "lcResolution": "- topic/fig learningBase/fig learningPlan/lcResolution ",
314
+ "lcResources": "- topic/section learningBase/lcResources ",
315
+ "lcReview": "- topic/section learningBase/lcReview ",
316
+ "lcSecurity": "- topic/fig learningBase/fig learningPlan/lcSecurity ",
317
+ "lcSequence": "+ topic/data learningInteractionBase-d/data learning-d/lcSequence ",
318
+ "lcSequence2": "+ topic/data learningInteractionBase2-d/data learning2-d/lcSequence2 ",
319
+ "lcSequenceOption": "+ topic/li learningInteractionBase-d/li learning-d/lcSequenceOption ",
320
+ "lcSequenceOption2": "+ topic/li learningInteractionBase2-d/li learning2-d/lcSequenceOption2 ",
321
+ "lcSequenceOptionGroup": "+ topic/ol learningInteractionBase-d/ol learning-d/lcSequenceOptionGroup ",
322
+ "lcSequenceOptionGroup2": "+ topic/ol learningInteractionBase2-d/ol learning2-d/lcSequenceOptionGroup2 ",
323
+ "lcSequencing": "+ topic/fig learningInteractionBase-d/lcInteractionBase learning-d/lcSequencing ",
324
+ "lcSequencing2": "+ topic/div learningInteractionBase2-d/lcInteractionBase2 learning2-d/lcSequencing2 ",
325
+ "lcSingleSelect": "+ topic/fig learningInteractionBase-d/lcInteractionBase learning-d/lcSingleSelect ",
326
+ "lcSingleSelect2": "+ topic/div learningInteractionBase2-d/lcInteractionBase2 learning2-d/lcSingleSelect2 ",
327
+ "lcSkills": "- topic/p learningBase/p learningPlan/lcSkills ",
328
+ "lcSpecChars": "- topic/p learningBase/p learningPlan/lcSpecChars ",
329
+ "lcSummary": "- topic/section learningBase/lcSummary ",
330
+ "lcTask": "- topic/fig learningBase/fig learningPlan/lcTask ",
331
+ "lcTaskItem": "- topic/p learningBase/p learningPlan/lcTaskItem ",
332
+ "lcTechnical": "- topic/section learningBase/section learningPlan/lcTechnical ",
333
+ "lcTime": "- topic/data learningBase/lcTime ",
334
+ "lcTrueFalse": "+ topic/fig learningInteractionBase-d/lcInteractionBase learning-d/lcTrueFalse ",
335
+ "lcTrueFalse2": "+ topic/div learningInteractionBase2-d/lcInteractionBase2 learning2-d/lcTrueFalse2 ",
336
+ "lcValues": "- topic/p learningBase/p learningPlan/lcValues ",
337
+ "lcViewers": "- topic/fig learningBase/fig learningPlan/lcViewers ",
338
+ "lcW3C": "- topic/fig learningBase/fig learningPlan/lcW3C ",
339
+ "lcWorkEnv": "- topic/fig learningBase/fig learningPlan/lcWorkEnv ",
340
+ "lcWorkEnvDescription": "- topic/p learningBase/p learningPlan/lcWorkEnvDescription ",
341
+ "learningAssessment": "- topic/topic learningBase/learningBase learningAssessment/learningAssessment ",
342
+ "learningAssessmentbody": "- topic/body learningBase/learningBasebody learningAssessment/learningAssessmentbody ",
343
+ "learningBase": "- topic/topic learningBase/learningBase ",
344
+ "learningBasebody": "- topic/body learningBase/learningBasebody ",
345
+ "learningContent": "- topic/topic learningBase/learningBase learningContent/learningContent ",
346
+ "learningContentComponentRef": "+ map/topicref learningmap-d/learningContentComponentRef ",
347
+ "learningContentRef": "+ map/topicref learningmap-d/learningContentRef ",
348
+ "learningContentbody": "- topic/body learningBase/learningBasebody learningContent/learningContentbody ",
349
+ "learningGroup": "+ map/topicref learningmap-d/learningGroup ",
350
+ "learningGroupMap": "- map/map learningGroupMap/learningGroupMap ",
351
+ "learningGroupMapRef": "+ map/topicref learningmap-d/learningGroupMapRef ",
352
+ "learningObject": "+ map/topicref learningmap-d/learningObject ",
353
+ "learningObjectMap": "- map/map learningObjectMap/learningObjectMap ",
354
+ "learningObjectMapRef": "+ map/topicref learningmap-d/learningObjectMapRef ",
355
+ "learningOverview": "- topic/topic learningBase/learningBase learningOverview/learningOverview ",
356
+ "learningOverviewRef": "+ map/topicref learningmap-d/learningOverviewRef ",
357
+ "learningOverviewbody": "- topic/body learningBase/learningBasebody learningOverview/learningOverviewbody ",
358
+ "learningPlan": "- topic/topic learningBase/learningBase learningPlan/learningPlan ",
359
+ "learningPlanRef": "+ map/topicref learningmap-d/learningPlanRef ",
360
+ "learningPlanbody": "- topic/body learningBase/learningBasebody learningPlan/learningPlanbody ",
361
+ "learningPostAssessmentRef": "+ map/topicref learningmap-d/learningPostAssessmentRef ",
362
+ "learningPreAssessmentRef": "+ map/topicref learningmap-d/learningPreAssessmentRef ",
363
+ "learningSummary": "- topic/topic learningBase/learningBase learningSummary/learningSummary ",
364
+ "learningSummaryRef": "+ map/topicref learningmap-d/learningSummaryRef ",
365
+ "learningSummarybody": "- topic/body learningBase/learningBasebody learningSummary/learningSummarybody ",
366
+ "li": "- topic/li ",
367
+ "line-through": "+ topic/ph hi-d/line-through ",
368
+ "lines": "- topic/lines ",
369
+ "link": "- topic/link ",
370
+ "linkinfo": "- topic/linkinfo ",
371
+ "linklist": "- topic/linklist ",
372
+ "linkpool": "- topic/linkpool ",
373
+ "linktext": "- topic/linktext ",
374
+ "locality": "+ topic/ph xnal-d/locality ",
375
+ "localityname": "+ topic/ph xnal-d/localityname ",
376
+ "lomAggregationLevel": "+ topic/data learningmeta-d/lomAggregationLevel ",
377
+ "lomContext": "+ topic/data learningmeta-d/lomContext ",
378
+ "lomCoverage": "+ topic/data learningmeta-d/lomCoverage ",
379
+ "lomDifficulty": "+ topic/data learningmeta-d/lomDifficulty ",
380
+ "lomInstallationRemarks": "+ topic/data learningmeta-d/lomInstallationRemarks ",
381
+ "lomIntendedUserRole": "+ topic/data learningmeta-d/lomIntendedUserRole ",
382
+ "lomInteractivityLevel": "+ topic/data learningmeta-d/lomInteractivityLevel ",
383
+ "lomInteractivityType": "+ topic/data learningmeta-d/lomInteractivityType ",
384
+ "lomLearningResourceType": "+ topic/data learningmeta-d/lomLearningResourceType ",
385
+ "lomOtherPlatformRequirements": "+ topic/data learningmeta-d/lomOtherPlatformRequirements ",
386
+ "lomSemanticDensity": "+ topic/data learningmeta-d/lomSemanticDensity ",
387
+ "lomStructure": "+ topic/data learningmeta-d/lomStructure ",
388
+ "lomTechRequirement": "+ topic/data learningmeta-d/lomTechRequirement ",
389
+ "lomTypicalAgeRange": "+ topic/data learningmeta-d/lomTypicalAgeRange ",
390
+ "lomTypicalLearningTime": "+ topic/data learningmeta-d/lomTypicalLearningTime ",
391
+ "longdescref": "- topic/longdescref ",
392
+ "longquoteref": "- topic/longquoteref ",
393
+ "lq": "- topic/lq ",
394
+ "mainbooktitle": "- topic/ph bookmap/mainbooktitle ",
395
+ "maintainer": "- topic/data bookmap/maintainer ",
396
+ "map": "- map/map ",
397
+ "mapref": "+ map/topicref mapgroup-d/mapref ",
398
+ "markupname": "+ topic/keyword markup-d/markupname ",
399
+ "mathml": "+ topic/foreign mathml-d/mathml ",
400
+ "mathmlref": "+ topic/xref mathml-d/mathmlref ",
401
+ "menucascade": "+ topic/ph ui-d/menucascade ",
402
+ "messagepanel": "+ topic/ul hazard-d/messagepanel ",
403
+ "metadata": "- topic/metadata ",
404
+ "middlename": "+ topic/data xnal-d/middlename ",
405
+ "month": "- topic/ph bookmap/month ",
406
+ "msgblock": "+ topic/pre sw-d/msgblock ",
407
+ "msgnum": "+ topic/keyword sw-d/msgnum ",
408
+ "msgph": "+ topic/ph sw-d/msgph ",
409
+ "namedetails": "+ topic/data xnal-d/namedetails ",
410
+ "navref": "- map/navref ",
411
+ "navtitle": "- topic/navtitle ",
412
+ "no-topic-nesting": "- topic/no-topic-nesting ",
413
+ "noconds": "+ topic/li task/li taskreq-d/noconds ",
414
+ "nosafety": "+ topic/li task/li taskreq-d/nosafety ",
415
+ "nospares": "+ topic/data task/data taskreq-d/nospares ",
416
+ "nosupeq": "+ topic/data task/data taskreq-d/nosupeq ",
417
+ "nosupply": "+ topic/data task/data taskreq-d/nosupply ",
418
+ "note": "- topic/note ",
419
+ "notices": "- map/topicref bookmap/notices ",
420
+ "numcharref": "+ topic/keyword markup-d/markupname xml-d/numcharref ",
421
+ "object": "- topic/object ",
422
+ "ol": "- topic/ol ",
423
+ "oper": "+ topic/ph pr-d/oper ",
424
+ "option": "+ topic/keyword pr-d/option ",
425
+ "organization": "- topic/data bookmap/organization ",
426
+ "organizationinfo": "+ topic/data xnal-d/organizationinfo ",
427
+ "organizationname": "+ topic/ph xnal-d/organizationname ",
428
+ "organizationnamedetails": "+ topic/ph xnal-d/organizationnamedetails ",
429
+ "otherinfo": "+ topic/data xnal-d/otherinfo ",
430
+ "othermeta": "- topic/othermeta ",
431
+ "overline": "+ topic/ph hi-d/overline ",
432
+ "p": "- topic/p ",
433
+ "param": "- topic/param ",
434
+ "parameterentity": "+ topic/keyword markup-d/markupname xml-d/parameterentity ",
435
+ "parml": "+ topic/dl pr-d/parml ",
436
+ "parmname": "+ topic/keyword pr-d/parmname ",
437
+ "part": "- map/topicref bookmap/part ",
438
+ "pd": "+ topic/dd pr-d/pd ",
439
+ "permissions": "- topic/permissions ",
440
+ "perscat": "+ topic/li task/li taskreq-d/perscat ",
441
+ "perskill": "+ topic/li task/li taskreq-d/perskill ",
442
+ "person": "- topic/data bookmap/person ",
443
+ "personinfo": "+ topic/data xnal-d/personinfo ",
444
+ "personname": "+ topic/data xnal-d/personname ",
445
+ "personnel": "+ topic/li task/li taskreq-d/personnel ",
446
+ "ph": "- topic/ph ",
447
+ "platform": "- topic/platform ",
448
+ "plentry": "+ topic/dlentry pr-d/plentry ",
449
+ "postalcode": "+ topic/ph xnal-d/postalcode ",
450
+ "postreq": "- topic/section task/postreq ",
451
+ "pre": "- topic/pre ",
452
+ "preface": "- map/topicref bookmap/preface ",
453
+ "prelreqs": "+ topic/section task/prereq taskreq-d/prelreqs ",
454
+ "prereq": "- topic/section task/prereq ",
455
+ "printlocation": "- topic/data bookmap/printlocation ",
456
+ "prodinfo": "- topic/prodinfo ",
457
+ "prodname": "- topic/prodname ",
458
+ "prognum": "- topic/prognum ",
459
+ "prolog": "- topic/prolog ",
460
+ "propdesc": "- topic/stentry reference/propdesc ",
461
+ "propdeschd": "- topic/stentry reference/propdeschd ",
462
+ "properties": "- topic/simpletable reference/properties ",
463
+ "property": "- topic/strow reference/property ",
464
+ "prophead": "- topic/sthead reference/prophead ",
465
+ "proptype": "- topic/stentry reference/proptype ",
466
+ "proptypehd": "- topic/stentry reference/proptypehd ",
467
+ "propvalue": "- topic/stentry reference/propvalue ",
468
+ "propvaluehd": "- topic/stentry reference/propvaluehd ",
469
+ "pt": "+ topic/dt pr-d/pt ",
470
+ "published": "- topic/data bookmap/published ",
471
+ "publisher": "- topic/publisher ",
472
+ "publisherinformation": "- topic/publisher bookmap/publisherinformation ",
473
+ "publishtype": "- topic/data bookmap/publishtype ",
474
+ "q": "- topic/q ",
475
+ "refbody": "- topic/body reference/refbody ",
476
+ "refbodydiv": "- topic/bodydiv reference/refbodydiv ",
477
+ "reference": "- topic/topic reference/reference ",
478
+ "refsyn": "- topic/section reference/refsyn ",
479
+ "related-links": "- topic/related-links ",
480
+ "relatedSubjects": "- map/topicref subjectScheme/relatedSubjects ",
481
+ "relcell": "- map/relcell ",
482
+ "relcolspec": "- map/relcolspec ",
483
+ "relheader": "- map/relheader ",
484
+ "relrow": "- map/relrow ",
485
+ "reltable": "- map/reltable ",
486
+ "remedy": "- topic/section troubleshooting/remedy ",
487
+ "repsep": "+ topic/ph pr-d/repsep ",
488
+ "reqcond": "+ topic/li task/li taskreq-d/reqcond ",
489
+ "reqconds": "+ topic/ul task/ul taskreq-d/reqconds ",
490
+ "reqcontp": "+ topic/li task/li taskreq-d/reqcontp ",
491
+ "reqpers": "+ topic/ul task/ul taskreq-d/reqpers ",
492
+ "required-cleanup": "- topic/required-cleanup ",
493
+ "resourceid": "- topic/resourceid ",
494
+ "responsibleParty": "- topic/p troubleshooting/responsibleParty ",
495
+ "result": "- topic/section task/result ",
496
+ "reviewed": "- topic/data bookmap/reviewed ",
497
+ "revised": "- topic/revised ",
498
+ "revisionid": "- topic/ph bookmap/revisionid ",
499
+ "row": "- topic/row ",
500
+ "safecond": "+ topic/li task/li taskreq-d/safecond ",
501
+ "safety": "+ topic/ol task/ol taskreq-d/safety ",
502
+ "schemeref": "- map/topicref subjectScheme/schemeref ",
503
+ "screen": "+ topic/pre ui-d/screen ",
504
+ "searchtitle": "- topic/searchtitle ",
505
+ "section": "- topic/section ",
506
+ "sectiondiv": "- topic/sectiondiv ",
507
+ "sep": "+ topic/ph pr-d/sep ",
508
+ "series": "- topic/series ",
509
+ "shape": "+ topic/keyword ut-d/shape ",
510
+ "shortcut": "+ topic/keyword ui-d/shortcut ",
511
+ "shortdesc": "- topic/shortdesc ",
512
+ "simpletable": "- topic/simpletable ",
513
+ "sl": "- topic/sl ",
514
+ "sli": "- topic/sli ",
515
+ "sort-as": "+ topic/data ut-d/sort-as ",
516
+ "source": "- topic/source ",
517
+ "spare": "+ topic/li task/li taskreq-d/spare ",
518
+ "spares": "+ topic/p task/p taskreq-d/spares ",
519
+ "sparesli": "+ topic/ul task/ul taskreq-d/sparesli ",
520
+ "started": "- topic/ph bookmap/started ",
521
+ "state": "- topic/state ",
522
+ "stentry": "- topic/stentry ",
523
+ "step": "- topic/li task/step ",
524
+ "stepresult": "- topic/itemgroup task/stepresult ",
525
+ "steps": "- topic/ol task/steps ",
526
+ "steps-informal": "- topic/section task/steps-informal ",
527
+ "steps-unordered": "- topic/ul task/steps-unordered ",
528
+ "stepsection": "- topic/li task/stepsection ",
529
+ "steptroubleshooting": "- topic/itemgroup task/steptroubleshooting ",
530
+ "stepxmp": "- topic/itemgroup task/stepxmp ",
531
+ "sthead": "- topic/sthead ",
532
+ "strow": "- topic/strow ",
533
+ "sub": "+ topic/ph hi-d/sub ",
534
+ "subjectCell": "+ map/relcell classify-d/subjectCell ",
535
+ "subjectHead": "- map/topicref subjectScheme/subjectHead ",
536
+ "subjectHeadMeta": "- map/topicmeta subjectScheme/subjectHeadMeta ",
537
+ "subjectRel": "- map/relrow subjectScheme/subjectRel ",
538
+ "subjectRelHeader": "- map/relrow subjectScheme/subjectRelHeader ",
539
+ "subjectRelTable": "- map/reltable subjectScheme/subjectRelTable ",
540
+ "subjectRole": "- map/relcell subjectScheme/subjectRole ",
541
+ "subjectScheme": "- map/map subjectScheme/subjectScheme ",
542
+ "subjectdef": "- map/topicref subjectScheme/subjectdef ",
543
+ "subjectref": "+ map/topicref classify-d/subjectref ",
544
+ "substep": "- topic/li task/substep ",
545
+ "substeps": "- topic/ol task/substeps ",
546
+ "summary": "- topic/ph bookmap/summary ",
547
+ "sup": "+ topic/ph hi-d/sup ",
548
+ "supeqli": "+ topic/ul task/ul taskreq-d/supeqli ",
549
+ "supequi": "+ topic/li task/li taskreq-d/supequi ",
550
+ "supequip": "+ topic/p task/p taskreq-d/supequip ",
551
+ "supplies": "+ topic/p task/p taskreq-d/supplies ",
552
+ "supply": "+ topic/li task/li taskreq-d/supply ",
553
+ "supplyli": "+ topic/ul task/ul taskreq-d/supplyli ",
554
+ "svg-container": "+ topic/foreign svg-d/svg-container ",
555
+ "svgref": "+ topic/xref svg-d/svgref ",
556
+ "synblk": "+ topic/figgroup pr-d/synblk ",
557
+ "synnote": "+ topic/fn pr-d/synnote ",
558
+ "synnoteref": "+ topic/xref pr-d/synnoteref ",
559
+ "synph": "+ topic/ph pr-d/synph ",
560
+ "syntaxdiagram": "+ topic/fig pr-d/syntaxdiagram ",
561
+ "systemoutput": "+ topic/ph sw-d/systemoutput ",
562
+ "table": "- topic/table ",
563
+ "tablelist": "- map/topicref bookmap/tablelist ",
564
+ "task": "- topic/topic task/task ",
565
+ "taskbody": "- topic/body task/taskbody ",
566
+ "tasktroubleshooting": "- topic/section task/tasktroubleshooting ",
567
+ "tbody": "- topic/tbody ",
568
+ "term": "- topic/term ",
569
+ "tested": "- topic/data bookmap/tested ",
570
+ "text": "- topic/text ",
571
+ "textentity": "+ topic/keyword markup-d/markupname xml-d/textentity ",
572
+ "tgroup": "- topic/tgroup ",
573
+ "thead": "- topic/thead ",
574
+ "thoroughfare": "+ topic/ph xnal-d/thoroughfare ",
575
+ "title": "- topic/title ",
576
+ "titlealts": "- topic/titlealts ",
577
+ "tm": "- topic/tm ",
578
+ "toc": "- map/topicref bookmap/toc ",
579
+ "topic": "- topic/topic ",
580
+ "topicCell": "+ map/relcell classify-d/topicCell ",
581
+ "topicSubjectHeader": "+ map/relrow classify-d/topicSubjectHeader ",
582
+ "topicSubjectRow": "+ map/relrow classify-d/topicSubjectRow ",
583
+ "topicSubjectTable": "+ map/reltable classify-d/topicSubjectTable ",
584
+ "topicapply": "+ map/topicref classify-d/topicapply ",
585
+ "topicgroup": "+ map/topicref mapgroup-d/topicgroup ",
586
+ "topichead": "+ map/topicref mapgroup-d/topichead ",
587
+ "topicmeta": "- map/topicmeta ",
588
+ "topicref": "- map/topicref ",
589
+ "topicset": "+ map/topicref mapgroup-d/topicset ",
590
+ "topicsetref": "+ map/topicref mapgroup-d/topicsetref ",
591
+ "topicsubject": "+ map/topicref classify-d/topicsubject ",
592
+ "trademarklist": "- map/topicref bookmap/trademarklist ",
593
+ "troubleSolution": "- topic/bodydiv troubleshooting/troubleSolution ",
594
+ "troublebody": "- topic/body troubleshooting/troublebody ",
595
+ "troubleshooting": "- topic/topic troubleshooting/troubleshooting ",
596
+ "tt": "+ topic/ph hi-d/tt ",
597
+ "tutorialinfo": "- topic/itemgroup task/tutorialinfo ",
598
+ "typeofhazard": "+ topic/li hazard-d/typeofhazard ",
599
+ "u": "+ topic/ph hi-d/u ",
600
+ "uicontrol": "+ topic/ph ui-d/uicontrol ",
601
+ "ul": "- topic/ul ",
602
+ "unknown": "- topic/unknown ",
603
+ "url": "+ topic/data xnal-d/url ",
604
+ "urls": "+ topic/data xnal-d/urls ",
605
+ "userinput": "+ topic/ph sw-d/userinput ",
606
+ "ux-window": "- map/ux-window ",
607
+ "var": "+ topic/ph pr-d/var ",
608
+ "varname": "+ topic/keyword sw-d/varname ",
609
+ "volume": "- topic/data bookmap/volume ",
610
+ "vrm": "- topic/vrm ",
611
+ "vrmlist": "- topic/vrmlist ",
612
+ "wintitle": "+ topic/keyword ui-d/wintitle ",
613
+ "xmlatt": "+ topic/keyword markup-d/markupname xml-d/xmlatt ",
614
+ "xmlelement": "+ topic/keyword markup-d/markupname xml-d/xmlelement ",
615
+ "xmlnsname": "+ topic/keyword markup-d/markupname xml-d/xmlnsname ",
616
+ "xmlpi": "+ topic/keyword markup-d/markupname xml-d/xmlpi ",
617
+ "xref": "- topic/xref ",
618
+ "year": "- topic/ph bookmap/year ",
619
+ });
620
+ /** Elements whose class differs inside a map (map.mod declares them too). */
621
+ export const DITA_MAP_CLASS_DEFAULTS = Object.freeze({
622
+ "linktext": "- map/linktext ",
623
+ "searchtitle": "- map/searchtitle ",
624
+ "shortdesc": "- map/shortdesc ",
625
+ });
package/dist/index.d.ts CHANGED
@@ -18,3 +18,5 @@ export { ditaTopicToDogsbayMd, type DitaMarkdownResult } from "./markdown.js";
18
18
  export { planConrefs, type ConrefCorpusFile, type ConrefPlan, type ConrefSnippet, } from "./conref.js";
19
19
  export { DB_QUALIFIERS } from "./blocks.js";
20
20
  export { checkWellFormed, type WellFormedProblem } from "./well-formed.js";
21
+ export { DITA_CLASS_DEFAULTS, DITA_MAP_CLASS_DEFAULTS } from "./class-defaults.js";
22
+ export { applyClassDefaults, classDefault } from "./class-defaults-apply.js";
package/dist/index.js CHANGED
@@ -19,3 +19,5 @@ export { planConrefs, } from "./conref.js";
19
19
  // The closed db- qualifier vocabulary (tones, tab variants, scoped themes)
20
20
  export { DB_QUALIFIERS } from "./blocks.js";
21
21
  export { checkWellFormed } from "./well-formed.js";
22
+ export { DITA_CLASS_DEFAULTS, DITA_MAP_CLASS_DEFAULTS } from "./class-defaults.js";
23
+ export { applyClassDefaults, classDefault } from "./class-defaults-apply.js";
package/dist/inline.d.ts CHANGED
@@ -9,6 +9,8 @@ export interface InlineContext {
9
9
  conref?: ConrefSiteContext;
10
10
  /** Publishing mode: DITA-OT preprocessed input (absent for migration). */
11
11
  publish?: PublishContext;
12
+ /** Every element carries @class (DTD defaults filled in): resolve unknown names by it, as publishing does. */
13
+ classes?: boolean;
12
14
  /** Publishing: trademarks already marked in this topic (DITA-OT marks only the first). */
13
15
  trademarks?: Set<string>;
14
16
  /** Publishing: the number label of each titled table and figure ("Table 1. "). */
package/dist/inline.js CHANGED
@@ -83,7 +83,7 @@ const BOLD_LIKE = new Set(["b", "strong", "uicontrol", "wintitle", "menucascade"
83
83
  */
84
84
  export const elementName = (el, ctx, known) => {
85
85
  const raw = el.name.toLowerCase();
86
- if (!ctx.publish || known(raw))
86
+ if (!(ctx.publish || ctx.classes) || known(raw))
87
87
  return raw;
88
88
  const tokens = (el.attribs?.class ?? "").trim().split(/\s+/).slice(1).reverse();
89
89
  for (const token of tokens) {
package/dist/parse.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { checkWellFormed } from "./well-formed.js";
2
+ import { applyClassDefaults } from "./class-defaults-apply.js";
2
3
  import { parseDocument } from "htmlparser2";
3
4
  import { convertChildren, convertItemContent } from "./blocks.js";
4
5
  import { textOf, convertInline, trimInline, collapseWhitespace } from "./inline.js";
@@ -104,7 +105,7 @@ const convertSecondaryTopic = (el, ctx, level, bindConrefSite) => {
104
105
  }
105
106
  if (name === "titlealts")
106
107
  continue;
107
- if (isTopicElement(child, !!ctx.publish)) {
108
+ if (isTopicElement(child, !!ctx.publish || !!ctx.classes)) {
108
109
  out.push(...convertSecondaryTopic(child, ctx, bodyLevel, bindConrefSite));
109
110
  continue;
110
111
  }
@@ -225,7 +226,15 @@ export function ditaTopicToTree(xml, options = {}) {
225
226
  if (malformed)
226
227
  note("<xml>", `not well-formed XML, line ${malformed.line}: ${malformed.message} — the converted content may be incomplete`);
227
228
  const doc = parseDocument(xml, { xmlMode: true });
228
- const roots = findTopicRoots(doc.children, !!options.publish);
229
+ // Raw source: fill in the @class the DTDs default, so specializations convert as their base
230
+ if (options.classDefaults) {
231
+ const undeclared = applyClassDefaults(doc.children);
232
+ if (undeclared.length) {
233
+ note("@class", `no DITA 1.3 class default for ${undeclared.map((n) => `<${n}>`).join(", ")} — converted by name only`);
234
+ }
235
+ }
236
+ const byClass = !!options.publish || !!options.classDefaults;
237
+ const roots = findTopicRoots(doc.children, byClass);
229
238
  const root = roots[0] ?? null;
230
239
  if (!root) {
231
240
  note("<topic>", "no DITA topic root element found (concept/task/reference/topic/glossentry)");
@@ -274,6 +283,7 @@ export function ditaTopicToTree(xml, options = {}) {
274
283
  note,
275
284
  seenConstructs: new Set(),
276
285
  headingLevel: 2,
286
+ ...(options.classDefaults ? { classes: true } : {}),
277
287
  ...(bindConrefSite ? { conref: bindConrefSite(root.attribs?.id) } : {}),
278
288
  ...(options.publish
279
289
  ? { publish: options.publish, trademarks: new Set(), footnotes: [], topicId: root.attribs?.id, anchorIds: renamedElementIds(doc.children) }
@@ -332,7 +342,7 @@ export function ditaTopicToTree(xml, options = {}) {
332
342
  extractProlog(child, meta, ctx);
333
343
  continue;
334
344
  }
335
- if (isTopicElement(child, !!options.publish)) {
345
+ if (isTopicElement(child, byClass)) {
336
346
  // Nested topic: convert inline as a section (chunked authoring)
337
347
  tree.push(...convertSecondaryTopic(child, ctx, 2, bindConrefSite));
338
348
  continue;
package/dist/types.d.ts CHANGED
@@ -152,6 +152,16 @@ export interface DitaParseOptions {
152
152
  * its behavior unchanged.
153
153
  */
154
154
  publish?: PublishContext;
155
+ /**
156
+ * Fill in each missing @class from the DITA 1.3 DTD defaults (612 elements,
157
+ * see class-defaults.ts) before converting, as parsing against the DTDs
158
+ * would. Raw source has no @class, so without it an element is known only by
159
+ * its name, and a specialization the converter does not know by name loses
160
+ * its markup; with it, it converts as what it specializes. An existing
161
+ * @class is kept; a name the DTDs do not declare stays unclassed and is
162
+ * noted once. Off by default (it changes the output for such elements).
163
+ */
164
+ classDefaults?: boolean;
155
165
  }
156
166
  /** DITA topic root elements this importer understands. */
157
167
  export declare const DITA_TOPIC_TYPES: readonly ["concept", "task", "reference", "topic", "glossentry"];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dogsbay/format-dita",
3
- "version": "0.2.0-beta.123",
3
+ "version": "0.2.0-beta.124",
4
4
  "description": "DITA topic XML → TreeNode importer with conversion-note ledger; composes with format-dogsbay-md for .dita → .md migration. Browser-safe: no Node built-ins",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -28,8 +28,8 @@
28
28
  "dependencies": {
29
29
  "domhandler": "^5.0.3",
30
30
  "htmlparser2": "^10.1.0",
31
- "@dogsbay/format-dogsbay-md": "0.2.0-beta.123",
32
- "@dogsbay/types": "0.2.0-beta.123"
31
+ "@dogsbay/format-dogsbay-md": "0.2.0-beta.124",
32
+ "@dogsbay/types": "0.2.0-beta.124"
33
33
  },
34
34
  "license": "MIT",
35
35
  "repository": {