pro-editor-schema 0.1.193 → 0.1.195
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/dist/index.d.mts +6 -6
- package/dist/index.d.ts +6 -6
- package/dist/index.js +114 -32
- package/dist/index.mjs +114 -31
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -26,7 +26,7 @@ type Schema<TRequiredAttributes = readonly AttributeDefinition[], TOptionalAttri
|
|
|
26
26
|
forbiddenElements?: ReadonlySet<ForbiddenElement>;
|
|
27
27
|
};
|
|
28
28
|
type SchemaCode = ElementSchemaCode | InlineSchemaCode | AtomSchemaCode;
|
|
29
|
-
type ElementSchemaCode = "degrees" | "email" | "equation" | "fignote" | "figsource" | "firstname" | "footnote" | "footnoteno" | "honorific" | "img" | "informalfigure" | "keyword" | "label1" | "li" | "line" | "lrh" | "math" | "mathphrase" | "merror" | "mfrac" | "mi" | "mmultiscripts" | "mn" | "mo" | "mover" | "mpadded" | "mphantom" | "mprescripts" | "mroot" | "mrow" | "ms" | "mspace" | "msqrt" | "mstyle" | "msub" | "msubsup" | "msup" | "mtable" | "mtd" | "mtext" | "mtr" | "munder" | "munderover" | "olink" | "org" | "orgname" | "para" | "punc" | "rrh" | "source1" | "speaker" | "subtitle1" | "surname" | "tag" | "tblfn" | "tblsource" | "thead" | "title1" | "token" | "tp" | "abstract1" | "affiliation" | "alttext" | "appendix" | "author" | "authorgroup" | "blockquote" | "caption1" | "chapter" | "dialogue" | "epigraph" | "figure1" | "footnoteSection" | "heading" | "imageobject" | "info1" | "keywordset" | "mediaobject" | "ol" | "personname" | "poem" | "sidebar" | "table" | "table1" | "tbody" | "td" | "tgroup" | "tr" | "ul";
|
|
29
|
+
type ElementSchemaCode = "referenceBibliomixed" | "referenceBibliography" | "bibliodiv" | "degrees" | "email" | "equation" | "fignote" | "figsource" | "firstname" | "footnote" | "footnoteno" | "honorific" | "img" | "informalfigure" | "keyword" | "label1" | "li" | "line" | "lrh" | "math" | "mathphrase" | "merror" | "mfrac" | "mi" | "mmultiscripts" | "mn" | "mo" | "mover" | "mpadded" | "mphantom" | "mprescripts" | "mroot" | "mrow" | "ms" | "mspace" | "msqrt" | "mstyle" | "msub" | "msubsup" | "msup" | "mtable" | "mtd" | "mtext" | "mtr" | "munder" | "munderover" | "olink" | "org" | "orgname" | "para" | "punc" | "rrh" | "source1" | "speaker" | "subtitle1" | "surname" | "tag" | "tblfn" | "tblsource" | "thead" | "title1" | "token" | "tp" | "abstract1" | "affiliation" | "alttext" | "appendix" | "author" | "authorgroup" | "blockquote" | "caption1" | "chapter" | "dialogue" | "epigraph" | "figure1" | "footnoteSection" | "heading" | "imageobject" | "info1" | "keywordset" | "mediaobject" | "ol" | "personname" | "poem" | "sidebar" | "table" | "table1" | "tbody" | "td" | "tgroup" | "tr" | "ul";
|
|
30
30
|
type AtomSchemaCode = "indexterm" | "primary" | "secondary" | "tertiary" | "quaternary" | "bookmark" | "see" | "commentQuerySection" | "comment" | "content" | "query" | "reply" | "deletion" | "emphasis" | "highlightmark" | "i" | "insertion" | "sc" | "strike" | "sub" | "sup" | "u" | "b" | "referenceMark";
|
|
31
31
|
type InlineSchemaCode = "footnote1" | "inlineequation" | "link" | "uri";
|
|
32
32
|
declare const ElementLabel: Record<SchemaCode, string>;
|
|
@@ -74,11 +74,10 @@ declare const LAYOUT_TABLE_ORIENTATION_ATTRIBUTE = "data-table-orientation";
|
|
|
74
74
|
declare const LAYOUT_TABLE_PLACEMENT_ATTRIBUTE = "data-table-placement";
|
|
75
75
|
declare const LAYOUT_ATTRIBUTES: readonly ["data-alignment", "data-left-indent", "data-right-indent", "data-special-indent", "data-space-above", "data-space-below", "data-indent-type", "data-layout-user", "data-paragraph-style"];
|
|
76
76
|
declare const TRACK_CHANGES_ATTR_DATA_USERNAME = "data-username";
|
|
77
|
-
declare const TRACK_CHANGES_ATTR_DATA_USER = "data-user";
|
|
78
77
|
declare const TRACK_CHANGES_ATTR_DATA_USERID = "data-userid";
|
|
79
78
|
declare const TRACK_CHANGES_ATTR_DATA_TIME = "data-time";
|
|
80
79
|
declare const TRACK_CHANGES_ATTR_DATA_DATE = "data-date";
|
|
81
|
-
declare const TRACK_CHANGES_ATTRS: readonly ["data-username", "data-
|
|
80
|
+
declare const TRACK_CHANGES_ATTRS: readonly ["data-username", "data-userid", "data-time", "data-date"];
|
|
82
81
|
declare const ELE_ID_ATTRIBUTE = "ele-id";
|
|
83
82
|
declare const STORE_ATTRIBUTE = "store";
|
|
84
83
|
declare const ID_ATTRS: readonly ["store", "ele-id"];
|
|
@@ -104,11 +103,12 @@ type ValidationError = {
|
|
|
104
103
|
* Validates the XML document against the schema.
|
|
105
104
|
|
|
106
105
|
* @param xml - The XML document to validate.
|
|
107
|
-
* @param
|
|
106
|
+
* @param elementsToLink - The elements IDs that are linked to.
|
|
107
|
+
* @param linkElements - The elements IDs that are linked to.
|
|
108
108
|
* @param schemasToValidateAgainst - The schemas to validate against.
|
|
109
109
|
* * ValidateConsecutiveFootnotes and ValidateConsecutiveFootnoteCues are default validations.
|
|
110
110
|
* @returns The validation errors.
|
|
111
111
|
*/
|
|
112
|
-
declare const validateXml: (xml: Element,
|
|
112
|
+
declare const validateXml: (xml: Element, elementsToLink: readonly string[], linkElements: readonly string[], schemasToValidateAgainst: SchemaCode[]) => ValidationError[];
|
|
113
113
|
|
|
114
|
-
export { ALIGNMENT_ATTRIBUTE, ATOM_SCHEMAS, type AllowedChildren, type AtomSchemaCode, type AttributeDefinition, ELEMENT_SCHEMAS, ELE_ID_ATTRIBUTE, ElementLabel, type ElementSchemaCode, FIGURE_PLACEMENT_ATTRIBUTE, type ForbiddenElement, type FreeAttribute, ID_ATTRS, IGNORED_ATTRIBUTES, IGNORED_ATTRIBUTES_STARTS_WITH, IGNORED_ELEMENT_SELECTORS, INDENT_TYPE_ATTRIBUTE, INLINE_ELEMENT_SCHEMAS, type InlineSchemaCode, LAYOUT_ATTRIBUTES, LAYOUT_CELL_WIDTH_ATTRIBUTE, LAYOUT_TABLE_ORIENTATION_ATTRIBUTE, LAYOUT_TABLE_PLACEMENT_ATTRIBUTE, LAYOUT_USER_ATTRIBUTE, LEFT_INDENT_ATTRIBUTE, RIGHT_INDENT_ATTRIBUTE, type ResolveTo, type RestrictedAttribute, SCHEMAS, SPACE_ABOVE_ATTRIBUTE, SPACE_BELOW_ATTRIBUTE, SPECIAL_INDENT_ATTRIBUTE, STORE_ATTRIBUTE, STYLE_NAME_ATTRIBUTE, type Schema, type SchemaCode, type SchemaKind, TRACK_CHANGES_ATTRS, TRACK_CHANGES_ATTR_DATA_DATE, TRACK_CHANGES_ATTR_DATA_TIME,
|
|
114
|
+
export { ALIGNMENT_ATTRIBUTE, ATOM_SCHEMAS, type AllowedChildren, type AtomSchemaCode, type AttributeDefinition, ELEMENT_SCHEMAS, ELE_ID_ATTRIBUTE, ElementLabel, type ElementSchemaCode, FIGURE_PLACEMENT_ATTRIBUTE, type ForbiddenElement, type FreeAttribute, ID_ATTRS, IGNORED_ATTRIBUTES, IGNORED_ATTRIBUTES_STARTS_WITH, IGNORED_ELEMENT_SELECTORS, INDENT_TYPE_ATTRIBUTE, INLINE_ELEMENT_SCHEMAS, type InlineSchemaCode, LAYOUT_ATTRIBUTES, LAYOUT_CELL_WIDTH_ATTRIBUTE, LAYOUT_TABLE_ORIENTATION_ATTRIBUTE, LAYOUT_TABLE_PLACEMENT_ATTRIBUTE, LAYOUT_USER_ATTRIBUTE, LEFT_INDENT_ATTRIBUTE, RIGHT_INDENT_ATTRIBUTE, type ResolveTo, type RestrictedAttribute, SCHEMAS, SPACE_ABOVE_ATTRIBUTE, SPACE_BELOW_ATTRIBUTE, SPECIAL_INDENT_ATTRIBUTE, STORE_ATTRIBUTE, STYLE_NAME_ATTRIBUTE, type Schema, type SchemaCode, type SchemaKind, TRACK_CHANGES_ATTRS, TRACK_CHANGES_ATTR_DATA_DATE, TRACK_CHANGES_ATTR_DATA_TIME, TRACK_CHANGES_ATTR_DATA_USERID, TRACK_CHANGES_ATTR_DATA_USERNAME, type ValidationError, type ValidationErrorKind, type ValidationErrorLevel, createElement, findAttributeDefinitionByName, findSchemaByCode, findSchemaByElement, findSchemaByTagName, getAttributeName, isAttributeRestricted, isIgnoredAttribute, isIgnoredElement, validateXml };
|
package/dist/index.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ type Schema<TRequiredAttributes = readonly AttributeDefinition[], TOptionalAttri
|
|
|
26
26
|
forbiddenElements?: ReadonlySet<ForbiddenElement>;
|
|
27
27
|
};
|
|
28
28
|
type SchemaCode = ElementSchemaCode | InlineSchemaCode | AtomSchemaCode;
|
|
29
|
-
type ElementSchemaCode = "degrees" | "email" | "equation" | "fignote" | "figsource" | "firstname" | "footnote" | "footnoteno" | "honorific" | "img" | "informalfigure" | "keyword" | "label1" | "li" | "line" | "lrh" | "math" | "mathphrase" | "merror" | "mfrac" | "mi" | "mmultiscripts" | "mn" | "mo" | "mover" | "mpadded" | "mphantom" | "mprescripts" | "mroot" | "mrow" | "ms" | "mspace" | "msqrt" | "mstyle" | "msub" | "msubsup" | "msup" | "mtable" | "mtd" | "mtext" | "mtr" | "munder" | "munderover" | "olink" | "org" | "orgname" | "para" | "punc" | "rrh" | "source1" | "speaker" | "subtitle1" | "surname" | "tag" | "tblfn" | "tblsource" | "thead" | "title1" | "token" | "tp" | "abstract1" | "affiliation" | "alttext" | "appendix" | "author" | "authorgroup" | "blockquote" | "caption1" | "chapter" | "dialogue" | "epigraph" | "figure1" | "footnoteSection" | "heading" | "imageobject" | "info1" | "keywordset" | "mediaobject" | "ol" | "personname" | "poem" | "sidebar" | "table" | "table1" | "tbody" | "td" | "tgroup" | "tr" | "ul";
|
|
29
|
+
type ElementSchemaCode = "referenceBibliomixed" | "referenceBibliography" | "bibliodiv" | "degrees" | "email" | "equation" | "fignote" | "figsource" | "firstname" | "footnote" | "footnoteno" | "honorific" | "img" | "informalfigure" | "keyword" | "label1" | "li" | "line" | "lrh" | "math" | "mathphrase" | "merror" | "mfrac" | "mi" | "mmultiscripts" | "mn" | "mo" | "mover" | "mpadded" | "mphantom" | "mprescripts" | "mroot" | "mrow" | "ms" | "mspace" | "msqrt" | "mstyle" | "msub" | "msubsup" | "msup" | "mtable" | "mtd" | "mtext" | "mtr" | "munder" | "munderover" | "olink" | "org" | "orgname" | "para" | "punc" | "rrh" | "source1" | "speaker" | "subtitle1" | "surname" | "tag" | "tblfn" | "tblsource" | "thead" | "title1" | "token" | "tp" | "abstract1" | "affiliation" | "alttext" | "appendix" | "author" | "authorgroup" | "blockquote" | "caption1" | "chapter" | "dialogue" | "epigraph" | "figure1" | "footnoteSection" | "heading" | "imageobject" | "info1" | "keywordset" | "mediaobject" | "ol" | "personname" | "poem" | "sidebar" | "table" | "table1" | "tbody" | "td" | "tgroup" | "tr" | "ul";
|
|
30
30
|
type AtomSchemaCode = "indexterm" | "primary" | "secondary" | "tertiary" | "quaternary" | "bookmark" | "see" | "commentQuerySection" | "comment" | "content" | "query" | "reply" | "deletion" | "emphasis" | "highlightmark" | "i" | "insertion" | "sc" | "strike" | "sub" | "sup" | "u" | "b" | "referenceMark";
|
|
31
31
|
type InlineSchemaCode = "footnote1" | "inlineequation" | "link" | "uri";
|
|
32
32
|
declare const ElementLabel: Record<SchemaCode, string>;
|
|
@@ -74,11 +74,10 @@ declare const LAYOUT_TABLE_ORIENTATION_ATTRIBUTE = "data-table-orientation";
|
|
|
74
74
|
declare const LAYOUT_TABLE_PLACEMENT_ATTRIBUTE = "data-table-placement";
|
|
75
75
|
declare const LAYOUT_ATTRIBUTES: readonly ["data-alignment", "data-left-indent", "data-right-indent", "data-special-indent", "data-space-above", "data-space-below", "data-indent-type", "data-layout-user", "data-paragraph-style"];
|
|
76
76
|
declare const TRACK_CHANGES_ATTR_DATA_USERNAME = "data-username";
|
|
77
|
-
declare const TRACK_CHANGES_ATTR_DATA_USER = "data-user";
|
|
78
77
|
declare const TRACK_CHANGES_ATTR_DATA_USERID = "data-userid";
|
|
79
78
|
declare const TRACK_CHANGES_ATTR_DATA_TIME = "data-time";
|
|
80
79
|
declare const TRACK_CHANGES_ATTR_DATA_DATE = "data-date";
|
|
81
|
-
declare const TRACK_CHANGES_ATTRS: readonly ["data-username", "data-
|
|
80
|
+
declare const TRACK_CHANGES_ATTRS: readonly ["data-username", "data-userid", "data-time", "data-date"];
|
|
82
81
|
declare const ELE_ID_ATTRIBUTE = "ele-id";
|
|
83
82
|
declare const STORE_ATTRIBUTE = "store";
|
|
84
83
|
declare const ID_ATTRS: readonly ["store", "ele-id"];
|
|
@@ -104,11 +103,12 @@ type ValidationError = {
|
|
|
104
103
|
* Validates the XML document against the schema.
|
|
105
104
|
|
|
106
105
|
* @param xml - The XML document to validate.
|
|
107
|
-
* @param
|
|
106
|
+
* @param elementsToLink - The elements IDs that are linked to.
|
|
107
|
+
* @param linkElements - The elements IDs that are linked to.
|
|
108
108
|
* @param schemasToValidateAgainst - The schemas to validate against.
|
|
109
109
|
* * ValidateConsecutiveFootnotes and ValidateConsecutiveFootnoteCues are default validations.
|
|
110
110
|
* @returns The validation errors.
|
|
111
111
|
*/
|
|
112
|
-
declare const validateXml: (xml: Element,
|
|
112
|
+
declare const validateXml: (xml: Element, elementsToLink: readonly string[], linkElements: readonly string[], schemasToValidateAgainst: SchemaCode[]) => ValidationError[];
|
|
113
113
|
|
|
114
|
-
export { ALIGNMENT_ATTRIBUTE, ATOM_SCHEMAS, type AllowedChildren, type AtomSchemaCode, type AttributeDefinition, ELEMENT_SCHEMAS, ELE_ID_ATTRIBUTE, ElementLabel, type ElementSchemaCode, FIGURE_PLACEMENT_ATTRIBUTE, type ForbiddenElement, type FreeAttribute, ID_ATTRS, IGNORED_ATTRIBUTES, IGNORED_ATTRIBUTES_STARTS_WITH, IGNORED_ELEMENT_SELECTORS, INDENT_TYPE_ATTRIBUTE, INLINE_ELEMENT_SCHEMAS, type InlineSchemaCode, LAYOUT_ATTRIBUTES, LAYOUT_CELL_WIDTH_ATTRIBUTE, LAYOUT_TABLE_ORIENTATION_ATTRIBUTE, LAYOUT_TABLE_PLACEMENT_ATTRIBUTE, LAYOUT_USER_ATTRIBUTE, LEFT_INDENT_ATTRIBUTE, RIGHT_INDENT_ATTRIBUTE, type ResolveTo, type RestrictedAttribute, SCHEMAS, SPACE_ABOVE_ATTRIBUTE, SPACE_BELOW_ATTRIBUTE, SPECIAL_INDENT_ATTRIBUTE, STORE_ATTRIBUTE, STYLE_NAME_ATTRIBUTE, type Schema, type SchemaCode, type SchemaKind, TRACK_CHANGES_ATTRS, TRACK_CHANGES_ATTR_DATA_DATE, TRACK_CHANGES_ATTR_DATA_TIME,
|
|
114
|
+
export { ALIGNMENT_ATTRIBUTE, ATOM_SCHEMAS, type AllowedChildren, type AtomSchemaCode, type AttributeDefinition, ELEMENT_SCHEMAS, ELE_ID_ATTRIBUTE, ElementLabel, type ElementSchemaCode, FIGURE_PLACEMENT_ATTRIBUTE, type ForbiddenElement, type FreeAttribute, ID_ATTRS, IGNORED_ATTRIBUTES, IGNORED_ATTRIBUTES_STARTS_WITH, IGNORED_ELEMENT_SELECTORS, INDENT_TYPE_ATTRIBUTE, INLINE_ELEMENT_SCHEMAS, type InlineSchemaCode, LAYOUT_ATTRIBUTES, LAYOUT_CELL_WIDTH_ATTRIBUTE, LAYOUT_TABLE_ORIENTATION_ATTRIBUTE, LAYOUT_TABLE_PLACEMENT_ATTRIBUTE, LAYOUT_USER_ATTRIBUTE, LEFT_INDENT_ATTRIBUTE, RIGHT_INDENT_ATTRIBUTE, type ResolveTo, type RestrictedAttribute, SCHEMAS, SPACE_ABOVE_ATTRIBUTE, SPACE_BELOW_ATTRIBUTE, SPECIAL_INDENT_ATTRIBUTE, STORE_ATTRIBUTE, STYLE_NAME_ATTRIBUTE, type Schema, type SchemaCode, type SchemaKind, TRACK_CHANGES_ATTRS, TRACK_CHANGES_ATTR_DATA_DATE, TRACK_CHANGES_ATTR_DATA_TIME, TRACK_CHANGES_ATTR_DATA_USERID, TRACK_CHANGES_ATTR_DATA_USERNAME, type ValidationError, type ValidationErrorKind, type ValidationErrorLevel, createElement, findAttributeDefinitionByName, findSchemaByCode, findSchemaByElement, findSchemaByTagName, getAttributeName, isAttributeRestricted, isIgnoredAttribute, isIgnoredElement, validateXml };
|
package/dist/index.js
CHANGED
|
@@ -48,7 +48,6 @@ __export(index_exports, {
|
|
|
48
48
|
TRACK_CHANGES_ATTRS: () => TRACK_CHANGES_ATTRS,
|
|
49
49
|
TRACK_CHANGES_ATTR_DATA_DATE: () => TRACK_CHANGES_ATTR_DATA_DATE,
|
|
50
50
|
TRACK_CHANGES_ATTR_DATA_TIME: () => TRACK_CHANGES_ATTR_DATA_TIME,
|
|
51
|
-
TRACK_CHANGES_ATTR_DATA_USER: () => TRACK_CHANGES_ATTR_DATA_USER,
|
|
52
51
|
TRACK_CHANGES_ATTR_DATA_USERID: () => TRACK_CHANGES_ATTR_DATA_USERID,
|
|
53
52
|
TRACK_CHANGES_ATTR_DATA_USERNAME: () => TRACK_CHANGES_ATTR_DATA_USERNAME,
|
|
54
53
|
createElement: () => createElement,
|
|
@@ -113,13 +112,11 @@ var LAYOUT_ATTRIBUTES = [
|
|
|
113
112
|
STYLE_NAME_ATTRIBUTE
|
|
114
113
|
];
|
|
115
114
|
var TRACK_CHANGES_ATTR_DATA_USERNAME = "data-username";
|
|
116
|
-
var TRACK_CHANGES_ATTR_DATA_USER = "data-user";
|
|
117
115
|
var TRACK_CHANGES_ATTR_DATA_USERID = "data-userid";
|
|
118
116
|
var TRACK_CHANGES_ATTR_DATA_TIME = "data-time";
|
|
119
117
|
var TRACK_CHANGES_ATTR_DATA_DATE = "data-date";
|
|
120
118
|
var TRACK_CHANGES_ATTRS = [
|
|
121
119
|
TRACK_CHANGES_ATTR_DATA_USERNAME,
|
|
122
|
-
TRACK_CHANGES_ATTR_DATA_USER,
|
|
123
120
|
TRACK_CHANGES_ATTR_DATA_USERID,
|
|
124
121
|
TRACK_CHANGES_ATTR_DATA_TIME,
|
|
125
122
|
TRACK_CHANGES_ATTR_DATA_DATE
|
|
@@ -650,6 +647,8 @@ var EPIGRAPH_TAG = "EPIGRAPH";
|
|
|
650
647
|
var INFO_TAG = "INFO1";
|
|
651
648
|
var POEM_TAG = "POEM";
|
|
652
649
|
var BIBLIOMIXED_TAG = "BIBLIOMIXED";
|
|
650
|
+
var REFERENCE_BIBLIOGRAPHY_TAG = "REFERENCE_BIBLIOGRAPHY";
|
|
651
|
+
var BIBLIODIV_TAG = "BIBLIODIV";
|
|
653
652
|
var MATHPHRASE_TAG = "MATHPHRASE";
|
|
654
653
|
var MATH_TAG = "MATH";
|
|
655
654
|
var MERROR_TAG = "MERROR";
|
|
@@ -1956,7 +1955,8 @@ var CHAPTER_SCHEMA = createSchema({
|
|
|
1956
1955
|
{ tagName: DIALOGUE_TAG, required: false },
|
|
1957
1956
|
{ tagName: APPENDIX_TAG, required: false },
|
|
1958
1957
|
{ tagName: TABLE_TAG, required: false },
|
|
1959
|
-
{ tagName: FIGURE_TAG, required: false }
|
|
1958
|
+
{ tagName: FIGURE_TAG, required: false },
|
|
1959
|
+
{ tagName: REFERENCE_BIBLIOGRAPHY_TAG, required: false }
|
|
1960
1960
|
]
|
|
1961
1961
|
});
|
|
1962
1962
|
|
|
@@ -2085,8 +2085,75 @@ var MATHPHRASE_SCHEMA = createSchema({
|
|
|
2085
2085
|
]
|
|
2086
2086
|
});
|
|
2087
2087
|
|
|
2088
|
+
// src/schema/elementSchemas/elements/reference/bibliodiv.ts
|
|
2089
|
+
var BIBLIODIV_SCHEMA = createSchema({
|
|
2090
|
+
code: "bibliodiv",
|
|
2091
|
+
kind: "element",
|
|
2092
|
+
tag: BIBLIODIV_TAG,
|
|
2093
|
+
requiredAttributes: [
|
|
2094
|
+
...ID_ATTRS,
|
|
2095
|
+
{
|
|
2096
|
+
name: "role",
|
|
2097
|
+
values: ["H1", "H2", "H3", "H4", "H5", "H6"],
|
|
2098
|
+
defaultValue: "H1"
|
|
2099
|
+
}
|
|
2100
|
+
],
|
|
2101
|
+
optionalAttributes: [],
|
|
2102
|
+
allowedChildTagNames: [
|
|
2103
|
+
{ tagName: BIBLIODIV_TAG, required: false },
|
|
2104
|
+
{ tagName: BIBLIOMIXED_TAG, required: false },
|
|
2105
|
+
{ tagName: PARA_TAG, required: false },
|
|
2106
|
+
{ tagName: TITLE_TAG, required: false }
|
|
2107
|
+
]
|
|
2108
|
+
});
|
|
2109
|
+
|
|
2110
|
+
// src/schema/elementSchemas/elements/reference/bibliography.ts
|
|
2111
|
+
var REFERENCE_BIBLIOGRAPHY_SCHEMA = createSchema({
|
|
2112
|
+
code: "referenceBibliography",
|
|
2113
|
+
kind: "element",
|
|
2114
|
+
tag: REFERENCE_BIBLIOGRAPHY_TAG,
|
|
2115
|
+
requiredAttributes: [
|
|
2116
|
+
...ID_ATTRS,
|
|
2117
|
+
"xmlid",
|
|
2118
|
+
{
|
|
2119
|
+
name: "role",
|
|
2120
|
+
values: ["chapterend"],
|
|
2121
|
+
defaultValue: "chapterend"
|
|
2122
|
+
},
|
|
2123
|
+
{
|
|
2124
|
+
name: "doc-type",
|
|
2125
|
+
values: ["doc-bibliography"],
|
|
2126
|
+
defaultValue: "doc-bibliography"
|
|
2127
|
+
}
|
|
2128
|
+
],
|
|
2129
|
+
optionalAttributes: [],
|
|
2130
|
+
allowedChildTagNames: [
|
|
2131
|
+
{ tagName: BIBLIODIV_TAG, required: false },
|
|
2132
|
+
{ tagName: BIBLIOMIXED_TAG, required: false },
|
|
2133
|
+
{ tagName: PARA_TAG, required: false },
|
|
2134
|
+
{ tagName: TITLE_TAG, required: false }
|
|
2135
|
+
]
|
|
2136
|
+
});
|
|
2137
|
+
|
|
2138
|
+
// src/schema/elementSchemas/elements/reference/bibliomixed.ts
|
|
2139
|
+
var BIBLIOMIXED_SCHEMA = createSchema({
|
|
2140
|
+
code: "referenceBibliomixed",
|
|
2141
|
+
kind: "element",
|
|
2142
|
+
tag: BIBLIOMIXED_TAG,
|
|
2143
|
+
requiredAttributes: [...ID_ATTRS, "xmlid", "role"],
|
|
2144
|
+
optionalAttributes: [
|
|
2145
|
+
"track-role",
|
|
2146
|
+
TRACK_CHANGES_ATTR_DATA_USERID,
|
|
2147
|
+
TRACK_CHANGES_ATTR_DATA_DATE
|
|
2148
|
+
],
|
|
2149
|
+
allowedChildTagNames: []
|
|
2150
|
+
});
|
|
2151
|
+
|
|
2088
2152
|
// src/schema/elementSchemas/elements/index.ts
|
|
2089
2153
|
var ELEMENT_SCHEMAS = {
|
|
2154
|
+
bibliodiv: BIBLIODIV_SCHEMA,
|
|
2155
|
+
referenceBibliography: REFERENCE_BIBLIOGRAPHY_SCHEMA,
|
|
2156
|
+
referenceBibliomixed: BIBLIOMIXED_SCHEMA,
|
|
2090
2157
|
para: PARA_SCHEMA,
|
|
2091
2158
|
title1: TITLE_SCHEMA,
|
|
2092
2159
|
footnote: FOOTNOTE_SCHEMA,
|
|
@@ -2262,6 +2329,9 @@ var SCHEMAS = {
|
|
|
2262
2329
|
|
|
2263
2330
|
// src/schema/schema.types.ts
|
|
2264
2331
|
var ElementLabel = {
|
|
2332
|
+
referenceBibliomixed: "Reference Bibliomixed",
|
|
2333
|
+
referenceBibliography: "Reference Bibliography",
|
|
2334
|
+
bibliodiv: "Bibliodiv",
|
|
2265
2335
|
indexterm: "Indexterm",
|
|
2266
2336
|
primary: "Primary",
|
|
2267
2337
|
secondary: "Secondary",
|
|
@@ -2387,9 +2457,7 @@ var IGNORED_ELEMENT_SELECTORS = [
|
|
|
2387
2457
|
"span.printlabel",
|
|
2388
2458
|
"span.refIcon",
|
|
2389
2459
|
"span.missLink",
|
|
2390
|
-
"span.ref-drag"
|
|
2391
|
-
"bibliomixed"
|
|
2392
|
-
// TODO: Remove this once we have a proper schema for bibliomixed
|
|
2460
|
+
"span.ref-drag"
|
|
2393
2461
|
];
|
|
2394
2462
|
|
|
2395
2463
|
// src/schema/shared/ignoredAttributes.ts
|
|
@@ -2615,17 +2683,17 @@ var validateConsecutiveFootnoteCues = (root) => {
|
|
|
2615
2683
|
};
|
|
2616
2684
|
|
|
2617
2685
|
// src/validation/validateLinkend.ts
|
|
2618
|
-
var findElementLinkedTo = (linkend,
|
|
2619
|
-
return
|
|
2686
|
+
var findElementLinkedTo = (linkend, elementsToLink) => {
|
|
2687
|
+
return elementsToLink.includes(linkend);
|
|
2620
2688
|
};
|
|
2621
|
-
var validateLinkend = (linkElement,
|
|
2689
|
+
var validateLinkend = (linkElement, elementsToLink) => {
|
|
2622
2690
|
const linkend = linkElement.getAttribute("linkend");
|
|
2623
2691
|
if (!linkend) {
|
|
2624
2692
|
return [];
|
|
2625
2693
|
}
|
|
2626
2694
|
const isLinkFootnoteCue = linkElement.tagName.toUpperCase() === FOOTNOTE_LINK_SCHEMA.tag;
|
|
2627
2695
|
if (isLinkFootnoteCue) {
|
|
2628
|
-
if (findElementLinkedTo(linkend,
|
|
2696
|
+
if (findElementLinkedTo(linkend, elementsToLink)) {
|
|
2629
2697
|
return [];
|
|
2630
2698
|
}
|
|
2631
2699
|
return [
|
|
@@ -2638,7 +2706,7 @@ var validateLinkend = (linkElement, elementsLinkedTo) => {
|
|
|
2638
2706
|
})
|
|
2639
2707
|
];
|
|
2640
2708
|
}
|
|
2641
|
-
if (findElementLinkedTo(linkend,
|
|
2709
|
+
if (findElementLinkedTo(linkend, elementsToLink)) {
|
|
2642
2710
|
return [];
|
|
2643
2711
|
}
|
|
2644
2712
|
return [
|
|
@@ -2662,13 +2730,6 @@ var validateAttributes = (element, schema) => {
|
|
|
2662
2730
|
for (const attribute of schema.requiredAttributes) {
|
|
2663
2731
|
const name = getAttributeName(attribute);
|
|
2664
2732
|
if (!element.hasAttribute(name)) {
|
|
2665
|
-
addValidationIssue(errors, {
|
|
2666
|
-
store: getStore(element),
|
|
2667
|
-
title: `Missing required attribute "${name}"`,
|
|
2668
|
-
level: "warning",
|
|
2669
|
-
kind: "missing",
|
|
2670
|
-
description: `The attribute "${name}" is required but not present in the element.`
|
|
2671
|
-
});
|
|
2672
2733
|
}
|
|
2673
2734
|
}
|
|
2674
2735
|
for (const name of element.getAttributeNames()) {
|
|
@@ -2677,13 +2738,6 @@ var validateAttributes = (element, schema) => {
|
|
|
2677
2738
|
}
|
|
2678
2739
|
const definition = findAttributeDefinitionByName(definitions, name);
|
|
2679
2740
|
if (!definition) {
|
|
2680
|
-
addValidationIssue(errors, {
|
|
2681
|
-
store: element.id,
|
|
2682
|
-
title: `Unexpected attribute "${name}"`,
|
|
2683
|
-
level: "warning",
|
|
2684
|
-
kind: "forbidden",
|
|
2685
|
-
description: `The attribute "${name}" is not allowed in this element.`
|
|
2686
|
-
});
|
|
2687
2741
|
continue;
|
|
2688
2742
|
}
|
|
2689
2743
|
if (!isAttributeRestricted(definition)) {
|
|
@@ -2853,8 +2907,31 @@ var getLinkableRoles = () => {
|
|
|
2853
2907
|
return [];
|
|
2854
2908
|
};
|
|
2855
2909
|
|
|
2910
|
+
// src/validation/validateReferences.ts
|
|
2911
|
+
var findElementLinkedTo2 = (xmlid, linkElements) => {
|
|
2912
|
+
return linkElements.includes(xmlid);
|
|
2913
|
+
};
|
|
2914
|
+
var validateReferenceCited = (referenceElement, linkElements) => {
|
|
2915
|
+
const xmlid = referenceElement.getAttribute("xmlid");
|
|
2916
|
+
if (!xmlid) {
|
|
2917
|
+
return [];
|
|
2918
|
+
}
|
|
2919
|
+
if (findElementLinkedTo2(xmlid, linkElements)) {
|
|
2920
|
+
return [];
|
|
2921
|
+
}
|
|
2922
|
+
return [
|
|
2923
|
+
createValidationIssue({
|
|
2924
|
+
store: getStore(referenceElement),
|
|
2925
|
+
title: "Unlinked element",
|
|
2926
|
+
kind: "unlinked",
|
|
2927
|
+
description: "This reference is not cited in this chapter or any other chapter. Please add a link to this reference or delete the reference.",
|
|
2928
|
+
level: "blocker"
|
|
2929
|
+
})
|
|
2930
|
+
];
|
|
2931
|
+
};
|
|
2932
|
+
|
|
2856
2933
|
// src/validation/validateXml.ts
|
|
2857
|
-
var validateElement = (element, root,
|
|
2934
|
+
var validateElement = (element, root, elementsToLink, linkElements, schemasToValidateAgainst) => {
|
|
2858
2935
|
if (isIgnoredElement(element)) {
|
|
2859
2936
|
return [];
|
|
2860
2937
|
}
|
|
@@ -2873,7 +2950,11 @@ var validateElement = (element, root, elementsLinkedTo, schemasToValidateAgainst
|
|
|
2873
2950
|
const role = element.getAttribute("role") || "";
|
|
2874
2951
|
const linkableRoles = getLinkableRoles();
|
|
2875
2952
|
if (schema.tag === LINK_SCHEMA.tag && linkableRoles.includes(role) || schema.tag === FOOTNOTE_LINK_SCHEMA.tag) {
|
|
2876
|
-
errors.push(...validateLinkend(element,
|
|
2953
|
+
errors.push(...validateLinkend(element, elementsToLink));
|
|
2954
|
+
}
|
|
2955
|
+
if (schema.tag === BIBLIOMIXED_SCHEMA.tag) {
|
|
2956
|
+
errors.push(...validateReferenceCited(element, linkElements));
|
|
2957
|
+
return errors;
|
|
2877
2958
|
}
|
|
2878
2959
|
if (schema.tag === FOOTNOTE_SCHEMA.tag) {
|
|
2879
2960
|
errors.push(...validateFootnoteCue(element, root));
|
|
@@ -2884,14 +2965,15 @@ var validateElement = (element, root, elementsLinkedTo, schemasToValidateAgainst
|
|
|
2884
2965
|
...validateElement(
|
|
2885
2966
|
child,
|
|
2886
2967
|
root,
|
|
2887
|
-
|
|
2968
|
+
elementsToLink,
|
|
2969
|
+
linkElements,
|
|
2888
2970
|
schemasToValidateAgainst
|
|
2889
2971
|
)
|
|
2890
2972
|
);
|
|
2891
2973
|
}
|
|
2892
2974
|
return errors;
|
|
2893
2975
|
};
|
|
2894
|
-
var validateXml = (xml,
|
|
2976
|
+
var validateXml = (xml, elementsToLink, linkElements, schemasToValidateAgainst) => {
|
|
2895
2977
|
const errors = [];
|
|
2896
2978
|
errors.push(...validateConsecutiveFootnotes(xml));
|
|
2897
2979
|
errors.push(...validateConsecutiveFootnoteCues(xml));
|
|
@@ -2900,7 +2982,8 @@ var validateXml = (xml, elementsLinkedTo, schemasToValidateAgainst) => {
|
|
|
2900
2982
|
...validateElement(
|
|
2901
2983
|
child,
|
|
2902
2984
|
xml,
|
|
2903
|
-
|
|
2985
|
+
elementsToLink,
|
|
2986
|
+
linkElements,
|
|
2904
2987
|
schemasToValidateAgainst
|
|
2905
2988
|
)
|
|
2906
2989
|
);
|
|
@@ -2937,7 +3020,6 @@ var validateXml = (xml, elementsLinkedTo, schemasToValidateAgainst) => {
|
|
|
2937
3020
|
TRACK_CHANGES_ATTRS,
|
|
2938
3021
|
TRACK_CHANGES_ATTR_DATA_DATE,
|
|
2939
3022
|
TRACK_CHANGES_ATTR_DATA_TIME,
|
|
2940
|
-
TRACK_CHANGES_ATTR_DATA_USER,
|
|
2941
3023
|
TRACK_CHANGES_ATTR_DATA_USERID,
|
|
2942
3024
|
TRACK_CHANGES_ATTR_DATA_USERNAME,
|
|
2943
3025
|
createElement,
|
package/dist/index.mjs
CHANGED
|
@@ -47,13 +47,11 @@ var LAYOUT_ATTRIBUTES = [
|
|
|
47
47
|
STYLE_NAME_ATTRIBUTE
|
|
48
48
|
];
|
|
49
49
|
var TRACK_CHANGES_ATTR_DATA_USERNAME = "data-username";
|
|
50
|
-
var TRACK_CHANGES_ATTR_DATA_USER = "data-user";
|
|
51
50
|
var TRACK_CHANGES_ATTR_DATA_USERID = "data-userid";
|
|
52
51
|
var TRACK_CHANGES_ATTR_DATA_TIME = "data-time";
|
|
53
52
|
var TRACK_CHANGES_ATTR_DATA_DATE = "data-date";
|
|
54
53
|
var TRACK_CHANGES_ATTRS = [
|
|
55
54
|
TRACK_CHANGES_ATTR_DATA_USERNAME,
|
|
56
|
-
TRACK_CHANGES_ATTR_DATA_USER,
|
|
57
55
|
TRACK_CHANGES_ATTR_DATA_USERID,
|
|
58
56
|
TRACK_CHANGES_ATTR_DATA_TIME,
|
|
59
57
|
TRACK_CHANGES_ATTR_DATA_DATE
|
|
@@ -584,6 +582,8 @@ var EPIGRAPH_TAG = "EPIGRAPH";
|
|
|
584
582
|
var INFO_TAG = "INFO1";
|
|
585
583
|
var POEM_TAG = "POEM";
|
|
586
584
|
var BIBLIOMIXED_TAG = "BIBLIOMIXED";
|
|
585
|
+
var REFERENCE_BIBLIOGRAPHY_TAG = "REFERENCE_BIBLIOGRAPHY";
|
|
586
|
+
var BIBLIODIV_TAG = "BIBLIODIV";
|
|
587
587
|
var MATHPHRASE_TAG = "MATHPHRASE";
|
|
588
588
|
var MATH_TAG = "MATH";
|
|
589
589
|
var MERROR_TAG = "MERROR";
|
|
@@ -1890,7 +1890,8 @@ var CHAPTER_SCHEMA = createSchema({
|
|
|
1890
1890
|
{ tagName: DIALOGUE_TAG, required: false },
|
|
1891
1891
|
{ tagName: APPENDIX_TAG, required: false },
|
|
1892
1892
|
{ tagName: TABLE_TAG, required: false },
|
|
1893
|
-
{ tagName: FIGURE_TAG, required: false }
|
|
1893
|
+
{ tagName: FIGURE_TAG, required: false },
|
|
1894
|
+
{ tagName: REFERENCE_BIBLIOGRAPHY_TAG, required: false }
|
|
1894
1895
|
]
|
|
1895
1896
|
});
|
|
1896
1897
|
|
|
@@ -2019,8 +2020,75 @@ var MATHPHRASE_SCHEMA = createSchema({
|
|
|
2019
2020
|
]
|
|
2020
2021
|
});
|
|
2021
2022
|
|
|
2023
|
+
// src/schema/elementSchemas/elements/reference/bibliodiv.ts
|
|
2024
|
+
var BIBLIODIV_SCHEMA = createSchema({
|
|
2025
|
+
code: "bibliodiv",
|
|
2026
|
+
kind: "element",
|
|
2027
|
+
tag: BIBLIODIV_TAG,
|
|
2028
|
+
requiredAttributes: [
|
|
2029
|
+
...ID_ATTRS,
|
|
2030
|
+
{
|
|
2031
|
+
name: "role",
|
|
2032
|
+
values: ["H1", "H2", "H3", "H4", "H5", "H6"],
|
|
2033
|
+
defaultValue: "H1"
|
|
2034
|
+
}
|
|
2035
|
+
],
|
|
2036
|
+
optionalAttributes: [],
|
|
2037
|
+
allowedChildTagNames: [
|
|
2038
|
+
{ tagName: BIBLIODIV_TAG, required: false },
|
|
2039
|
+
{ tagName: BIBLIOMIXED_TAG, required: false },
|
|
2040
|
+
{ tagName: PARA_TAG, required: false },
|
|
2041
|
+
{ tagName: TITLE_TAG, required: false }
|
|
2042
|
+
]
|
|
2043
|
+
});
|
|
2044
|
+
|
|
2045
|
+
// src/schema/elementSchemas/elements/reference/bibliography.ts
|
|
2046
|
+
var REFERENCE_BIBLIOGRAPHY_SCHEMA = createSchema({
|
|
2047
|
+
code: "referenceBibliography",
|
|
2048
|
+
kind: "element",
|
|
2049
|
+
tag: REFERENCE_BIBLIOGRAPHY_TAG,
|
|
2050
|
+
requiredAttributes: [
|
|
2051
|
+
...ID_ATTRS,
|
|
2052
|
+
"xmlid",
|
|
2053
|
+
{
|
|
2054
|
+
name: "role",
|
|
2055
|
+
values: ["chapterend"],
|
|
2056
|
+
defaultValue: "chapterend"
|
|
2057
|
+
},
|
|
2058
|
+
{
|
|
2059
|
+
name: "doc-type",
|
|
2060
|
+
values: ["doc-bibliography"],
|
|
2061
|
+
defaultValue: "doc-bibliography"
|
|
2062
|
+
}
|
|
2063
|
+
],
|
|
2064
|
+
optionalAttributes: [],
|
|
2065
|
+
allowedChildTagNames: [
|
|
2066
|
+
{ tagName: BIBLIODIV_TAG, required: false },
|
|
2067
|
+
{ tagName: BIBLIOMIXED_TAG, required: false },
|
|
2068
|
+
{ tagName: PARA_TAG, required: false },
|
|
2069
|
+
{ tagName: TITLE_TAG, required: false }
|
|
2070
|
+
]
|
|
2071
|
+
});
|
|
2072
|
+
|
|
2073
|
+
// src/schema/elementSchemas/elements/reference/bibliomixed.ts
|
|
2074
|
+
var BIBLIOMIXED_SCHEMA = createSchema({
|
|
2075
|
+
code: "referenceBibliomixed",
|
|
2076
|
+
kind: "element",
|
|
2077
|
+
tag: BIBLIOMIXED_TAG,
|
|
2078
|
+
requiredAttributes: [...ID_ATTRS, "xmlid", "role"],
|
|
2079
|
+
optionalAttributes: [
|
|
2080
|
+
"track-role",
|
|
2081
|
+
TRACK_CHANGES_ATTR_DATA_USERID,
|
|
2082
|
+
TRACK_CHANGES_ATTR_DATA_DATE
|
|
2083
|
+
],
|
|
2084
|
+
allowedChildTagNames: []
|
|
2085
|
+
});
|
|
2086
|
+
|
|
2022
2087
|
// src/schema/elementSchemas/elements/index.ts
|
|
2023
2088
|
var ELEMENT_SCHEMAS = {
|
|
2089
|
+
bibliodiv: BIBLIODIV_SCHEMA,
|
|
2090
|
+
referenceBibliography: REFERENCE_BIBLIOGRAPHY_SCHEMA,
|
|
2091
|
+
referenceBibliomixed: BIBLIOMIXED_SCHEMA,
|
|
2024
2092
|
para: PARA_SCHEMA,
|
|
2025
2093
|
title1: TITLE_SCHEMA,
|
|
2026
2094
|
footnote: FOOTNOTE_SCHEMA,
|
|
@@ -2196,6 +2264,9 @@ var SCHEMAS = {
|
|
|
2196
2264
|
|
|
2197
2265
|
// src/schema/schema.types.ts
|
|
2198
2266
|
var ElementLabel = {
|
|
2267
|
+
referenceBibliomixed: "Reference Bibliomixed",
|
|
2268
|
+
referenceBibliography: "Reference Bibliography",
|
|
2269
|
+
bibliodiv: "Bibliodiv",
|
|
2199
2270
|
indexterm: "Indexterm",
|
|
2200
2271
|
primary: "Primary",
|
|
2201
2272
|
secondary: "Secondary",
|
|
@@ -2321,9 +2392,7 @@ var IGNORED_ELEMENT_SELECTORS = [
|
|
|
2321
2392
|
"span.printlabel",
|
|
2322
2393
|
"span.refIcon",
|
|
2323
2394
|
"span.missLink",
|
|
2324
|
-
"span.ref-drag"
|
|
2325
|
-
"bibliomixed"
|
|
2326
|
-
// TODO: Remove this once we have a proper schema for bibliomixed
|
|
2395
|
+
"span.ref-drag"
|
|
2327
2396
|
];
|
|
2328
2397
|
|
|
2329
2398
|
// src/schema/shared/ignoredAttributes.ts
|
|
@@ -2549,17 +2618,17 @@ var validateConsecutiveFootnoteCues = (root) => {
|
|
|
2549
2618
|
};
|
|
2550
2619
|
|
|
2551
2620
|
// src/validation/validateLinkend.ts
|
|
2552
|
-
var findElementLinkedTo = (linkend,
|
|
2553
|
-
return
|
|
2621
|
+
var findElementLinkedTo = (linkend, elementsToLink) => {
|
|
2622
|
+
return elementsToLink.includes(linkend);
|
|
2554
2623
|
};
|
|
2555
|
-
var validateLinkend = (linkElement,
|
|
2624
|
+
var validateLinkend = (linkElement, elementsToLink) => {
|
|
2556
2625
|
const linkend = linkElement.getAttribute("linkend");
|
|
2557
2626
|
if (!linkend) {
|
|
2558
2627
|
return [];
|
|
2559
2628
|
}
|
|
2560
2629
|
const isLinkFootnoteCue = linkElement.tagName.toUpperCase() === FOOTNOTE_LINK_SCHEMA.tag;
|
|
2561
2630
|
if (isLinkFootnoteCue) {
|
|
2562
|
-
if (findElementLinkedTo(linkend,
|
|
2631
|
+
if (findElementLinkedTo(linkend, elementsToLink)) {
|
|
2563
2632
|
return [];
|
|
2564
2633
|
}
|
|
2565
2634
|
return [
|
|
@@ -2572,7 +2641,7 @@ var validateLinkend = (linkElement, elementsLinkedTo) => {
|
|
|
2572
2641
|
})
|
|
2573
2642
|
];
|
|
2574
2643
|
}
|
|
2575
|
-
if (findElementLinkedTo(linkend,
|
|
2644
|
+
if (findElementLinkedTo(linkend, elementsToLink)) {
|
|
2576
2645
|
return [];
|
|
2577
2646
|
}
|
|
2578
2647
|
return [
|
|
@@ -2596,13 +2665,6 @@ var validateAttributes = (element, schema) => {
|
|
|
2596
2665
|
for (const attribute of schema.requiredAttributes) {
|
|
2597
2666
|
const name = getAttributeName(attribute);
|
|
2598
2667
|
if (!element.hasAttribute(name)) {
|
|
2599
|
-
addValidationIssue(errors, {
|
|
2600
|
-
store: getStore(element),
|
|
2601
|
-
title: `Missing required attribute "${name}"`,
|
|
2602
|
-
level: "warning",
|
|
2603
|
-
kind: "missing",
|
|
2604
|
-
description: `The attribute "${name}" is required but not present in the element.`
|
|
2605
|
-
});
|
|
2606
2668
|
}
|
|
2607
2669
|
}
|
|
2608
2670
|
for (const name of element.getAttributeNames()) {
|
|
@@ -2611,13 +2673,6 @@ var validateAttributes = (element, schema) => {
|
|
|
2611
2673
|
}
|
|
2612
2674
|
const definition = findAttributeDefinitionByName(definitions, name);
|
|
2613
2675
|
if (!definition) {
|
|
2614
|
-
addValidationIssue(errors, {
|
|
2615
|
-
store: element.id,
|
|
2616
|
-
title: `Unexpected attribute "${name}"`,
|
|
2617
|
-
level: "warning",
|
|
2618
|
-
kind: "forbidden",
|
|
2619
|
-
description: `The attribute "${name}" is not allowed in this element.`
|
|
2620
|
-
});
|
|
2621
2676
|
continue;
|
|
2622
2677
|
}
|
|
2623
2678
|
if (!isAttributeRestricted(definition)) {
|
|
@@ -2787,8 +2842,31 @@ var getLinkableRoles = () => {
|
|
|
2787
2842
|
return [];
|
|
2788
2843
|
};
|
|
2789
2844
|
|
|
2845
|
+
// src/validation/validateReferences.ts
|
|
2846
|
+
var findElementLinkedTo2 = (xmlid, linkElements) => {
|
|
2847
|
+
return linkElements.includes(xmlid);
|
|
2848
|
+
};
|
|
2849
|
+
var validateReferenceCited = (referenceElement, linkElements) => {
|
|
2850
|
+
const xmlid = referenceElement.getAttribute("xmlid");
|
|
2851
|
+
if (!xmlid) {
|
|
2852
|
+
return [];
|
|
2853
|
+
}
|
|
2854
|
+
if (findElementLinkedTo2(xmlid, linkElements)) {
|
|
2855
|
+
return [];
|
|
2856
|
+
}
|
|
2857
|
+
return [
|
|
2858
|
+
createValidationIssue({
|
|
2859
|
+
store: getStore(referenceElement),
|
|
2860
|
+
title: "Unlinked element",
|
|
2861
|
+
kind: "unlinked",
|
|
2862
|
+
description: "This reference is not cited in this chapter or any other chapter. Please add a link to this reference or delete the reference.",
|
|
2863
|
+
level: "blocker"
|
|
2864
|
+
})
|
|
2865
|
+
];
|
|
2866
|
+
};
|
|
2867
|
+
|
|
2790
2868
|
// src/validation/validateXml.ts
|
|
2791
|
-
var validateElement = (element, root,
|
|
2869
|
+
var validateElement = (element, root, elementsToLink, linkElements, schemasToValidateAgainst) => {
|
|
2792
2870
|
if (isIgnoredElement(element)) {
|
|
2793
2871
|
return [];
|
|
2794
2872
|
}
|
|
@@ -2807,7 +2885,11 @@ var validateElement = (element, root, elementsLinkedTo, schemasToValidateAgainst
|
|
|
2807
2885
|
const role = element.getAttribute("role") || "";
|
|
2808
2886
|
const linkableRoles = getLinkableRoles();
|
|
2809
2887
|
if (schema.tag === LINK_SCHEMA.tag && linkableRoles.includes(role) || schema.tag === FOOTNOTE_LINK_SCHEMA.tag) {
|
|
2810
|
-
errors.push(...validateLinkend(element,
|
|
2888
|
+
errors.push(...validateLinkend(element, elementsToLink));
|
|
2889
|
+
}
|
|
2890
|
+
if (schema.tag === BIBLIOMIXED_SCHEMA.tag) {
|
|
2891
|
+
errors.push(...validateReferenceCited(element, linkElements));
|
|
2892
|
+
return errors;
|
|
2811
2893
|
}
|
|
2812
2894
|
if (schema.tag === FOOTNOTE_SCHEMA.tag) {
|
|
2813
2895
|
errors.push(...validateFootnoteCue(element, root));
|
|
@@ -2818,14 +2900,15 @@ var validateElement = (element, root, elementsLinkedTo, schemasToValidateAgainst
|
|
|
2818
2900
|
...validateElement(
|
|
2819
2901
|
child,
|
|
2820
2902
|
root,
|
|
2821
|
-
|
|
2903
|
+
elementsToLink,
|
|
2904
|
+
linkElements,
|
|
2822
2905
|
schemasToValidateAgainst
|
|
2823
2906
|
)
|
|
2824
2907
|
);
|
|
2825
2908
|
}
|
|
2826
2909
|
return errors;
|
|
2827
2910
|
};
|
|
2828
|
-
var validateXml = (xml,
|
|
2911
|
+
var validateXml = (xml, elementsToLink, linkElements, schemasToValidateAgainst) => {
|
|
2829
2912
|
const errors = [];
|
|
2830
2913
|
errors.push(...validateConsecutiveFootnotes(xml));
|
|
2831
2914
|
errors.push(...validateConsecutiveFootnoteCues(xml));
|
|
@@ -2834,7 +2917,8 @@ var validateXml = (xml, elementsLinkedTo, schemasToValidateAgainst) => {
|
|
|
2834
2917
|
...validateElement(
|
|
2835
2918
|
child,
|
|
2836
2919
|
xml,
|
|
2837
|
-
|
|
2920
|
+
elementsToLink,
|
|
2921
|
+
linkElements,
|
|
2838
2922
|
schemasToValidateAgainst
|
|
2839
2923
|
)
|
|
2840
2924
|
);
|
|
@@ -2870,7 +2954,6 @@ export {
|
|
|
2870
2954
|
TRACK_CHANGES_ATTRS,
|
|
2871
2955
|
TRACK_CHANGES_ATTR_DATA_DATE,
|
|
2872
2956
|
TRACK_CHANGES_ATTR_DATA_TIME,
|
|
2873
|
-
TRACK_CHANGES_ATTR_DATA_USER,
|
|
2874
2957
|
TRACK_CHANGES_ATTR_DATA_USERID,
|
|
2875
2958
|
TRACK_CHANGES_ATTR_DATA_USERNAME,
|
|
2876
2959
|
createElement,
|