pro-editor-schema 0.2.22 → 0.2.25
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.js +78 -77
- package/dist/index.mjs +78 -77
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2336,12 +2336,13 @@ var LINK_SCHEMA = createSchema({
|
|
|
2336
2336
|
});
|
|
2337
2337
|
|
|
2338
2338
|
// src/schema/elementSchemas/inlineElements/uri.ts
|
|
2339
|
+
var LINK_ATTRIBUTE = "xlinkhref";
|
|
2339
2340
|
var URI_SCHEMA = createSchema({
|
|
2340
2341
|
code: "uri",
|
|
2341
2342
|
kind: "inline",
|
|
2342
2343
|
tag: URI_TAG,
|
|
2343
|
-
requiredAttributes: [],
|
|
2344
|
-
optionalAttributes: [
|
|
2344
|
+
requiredAttributes: [LINK_ATTRIBUTE],
|
|
2345
|
+
optionalAttributes: [],
|
|
2345
2346
|
allowedChildrenCodes: [...ATOM_CODES_ALLOWED_CHILDREN]
|
|
2346
2347
|
});
|
|
2347
2348
|
|
|
@@ -2626,6 +2627,65 @@ var getElementsSelector = ({
|
|
|
2626
2627
|
return Array.from(elements);
|
|
2627
2628
|
};
|
|
2628
2629
|
|
|
2630
|
+
// src/validation/validateLinkend.ts
|
|
2631
|
+
var findElementLinkedTo = (linkend, elementsToLink) => {
|
|
2632
|
+
return elementsToLink.includes(linkend);
|
|
2633
|
+
};
|
|
2634
|
+
var LINK_TO_CROSS_CHECK = [
|
|
2635
|
+
TABLE_LINK_ROLE,
|
|
2636
|
+
FIGURE_LINK_ROLE,
|
|
2637
|
+
EQUATION_LINK_ROLE,
|
|
2638
|
+
FOOTNOTE_LINK_ROLE,
|
|
2639
|
+
REFERENCE_LINK_ROLE
|
|
2640
|
+
];
|
|
2641
|
+
var LINK_BLOCKER_ROLES = [
|
|
2642
|
+
TABLE_LINK_ROLE,
|
|
2643
|
+
FIGURE_LINK_ROLE,
|
|
2644
|
+
EQUATION_LINK_ROLE,
|
|
2645
|
+
FOOTNOTE_LINK_ROLE
|
|
2646
|
+
];
|
|
2647
|
+
var validateLinkend = (linkElement, elementsToLink) => {
|
|
2648
|
+
const linkend = linkElement.getAttribute("linkend");
|
|
2649
|
+
if (!linkend) {
|
|
2650
|
+
return [];
|
|
2651
|
+
}
|
|
2652
|
+
const isLinkFootnoteCue = linkElement.tagName.toUpperCase() === FOOTNOTE_LINK_SCHEMA.tag;
|
|
2653
|
+
if (isLinkFootnoteCue) {
|
|
2654
|
+
if (findElementLinkedTo(linkend, elementsToLink)) {
|
|
2655
|
+
return [];
|
|
2656
|
+
}
|
|
2657
|
+
return [
|
|
2658
|
+
createValidationIssue({
|
|
2659
|
+
store: getStore(linkElement),
|
|
2660
|
+
title: "Unlinked footnote cue",
|
|
2661
|
+
kind: "unlinked",
|
|
2662
|
+
description: "This footnote cue is not referenced to any footnote in this chapter. Please link it again manually.",
|
|
2663
|
+
level: "blocker"
|
|
2664
|
+
})
|
|
2665
|
+
];
|
|
2666
|
+
}
|
|
2667
|
+
const role = linkElement.getAttribute("role");
|
|
2668
|
+
if (!role) {
|
|
2669
|
+
return [];
|
|
2670
|
+
}
|
|
2671
|
+
if (!LINK_TO_CROSS_CHECK.includes(role)) {
|
|
2672
|
+
return [];
|
|
2673
|
+
}
|
|
2674
|
+
if (findElementLinkedTo(linkend, elementsToLink)) {
|
|
2675
|
+
return [];
|
|
2676
|
+
}
|
|
2677
|
+
const isBlocker = LINK_BLOCKER_ROLES.includes(role.toLowerCase());
|
|
2678
|
+
return [
|
|
2679
|
+
createValidationIssue({
|
|
2680
|
+
store: getStore(linkElement),
|
|
2681
|
+
title: "Unlinked element",
|
|
2682
|
+
kind: "unlinked",
|
|
2683
|
+
description: "This link is not referenced to any element in the current chapter or any other chapter. Please link it again manually.",
|
|
2684
|
+
level: isBlocker ? "blocker" : "warning"
|
|
2685
|
+
})
|
|
2686
|
+
];
|
|
2687
|
+
};
|
|
2688
|
+
|
|
2629
2689
|
// src/validation/validateFootnotes.ts
|
|
2630
2690
|
var extractFootnoteNumber = (footnote) => {
|
|
2631
2691
|
if (!footnote) return "no label";
|
|
@@ -2636,16 +2696,13 @@ var extractFootnoteNumber = (footnote) => {
|
|
|
2636
2696
|
}
|
|
2637
2697
|
return footnoteNumber;
|
|
2638
2698
|
};
|
|
2639
|
-
var validateFootnoteCue = (footnoteElement,
|
|
2699
|
+
var validateFootnoteCue = (footnoteElement, linkElements) => {
|
|
2640
2700
|
const errors = [];
|
|
2641
2701
|
const linkend = footnoteElement.getAttribute("xmlid") || "";
|
|
2642
2702
|
const footnoteNumber = footnoteElement.querySelector(
|
|
2643
2703
|
FOOTNOTE_NUMBER_SCHEMA.tag
|
|
2644
2704
|
);
|
|
2645
|
-
|
|
2646
|
-
`${FOOTNOTE_LINK_SCHEMA.tag}[linkend='${CSS.escape(linkend)}']`
|
|
2647
|
-
);
|
|
2648
|
-
if (footnoteLink) {
|
|
2705
|
+
if (findElementLinkedTo(linkend, linkElements)) {
|
|
2649
2706
|
return errors;
|
|
2650
2707
|
}
|
|
2651
2708
|
if (!footnoteNumber) {
|
|
@@ -2728,56 +2785,6 @@ var validateConsecutiveFootnoteCues = (root) => {
|
|
|
2728
2785
|
return [];
|
|
2729
2786
|
};
|
|
2730
2787
|
|
|
2731
|
-
// src/validation/validateLinkend.ts
|
|
2732
|
-
var findElementLinkedTo = (linkend, elementsToLink) => {
|
|
2733
|
-
return elementsToLink.includes(linkend);
|
|
2734
|
-
};
|
|
2735
|
-
var LINK_BLOCKER_ROLES = [
|
|
2736
|
-
TABLE_LINK_ROLE,
|
|
2737
|
-
FIGURE_LINK_ROLE,
|
|
2738
|
-
EQUATION_LINK_ROLE,
|
|
2739
|
-
FOOTNOTE_LINK_ROLE,
|
|
2740
|
-
CHAPTER_LINK_ROLE
|
|
2741
|
-
];
|
|
2742
|
-
var validateLinkend = (linkElement, elementsToLink) => {
|
|
2743
|
-
const linkend = linkElement.getAttribute("linkend");
|
|
2744
|
-
if (!linkend) {
|
|
2745
|
-
return [];
|
|
2746
|
-
}
|
|
2747
|
-
const isLinkFootnoteCue = linkElement.tagName.toUpperCase() === FOOTNOTE_LINK_SCHEMA.tag;
|
|
2748
|
-
if (isLinkFootnoteCue) {
|
|
2749
|
-
if (findElementLinkedTo(linkend, elementsToLink)) {
|
|
2750
|
-
return [];
|
|
2751
|
-
}
|
|
2752
|
-
return [
|
|
2753
|
-
createValidationIssue({
|
|
2754
|
-
store: getStore(linkElement),
|
|
2755
|
-
title: "Unlinked footnote cue",
|
|
2756
|
-
kind: "unlinked",
|
|
2757
|
-
description: "This footnote cue is not referenced to any footnote in this chapter. Please link it again manually.",
|
|
2758
|
-
level: "blocker"
|
|
2759
|
-
})
|
|
2760
|
-
];
|
|
2761
|
-
}
|
|
2762
|
-
const role = linkElement.getAttribute("role");
|
|
2763
|
-
if (!role) {
|
|
2764
|
-
return [];
|
|
2765
|
-
}
|
|
2766
|
-
if (findElementLinkedTo(linkend, elementsToLink)) {
|
|
2767
|
-
return [];
|
|
2768
|
-
}
|
|
2769
|
-
const isBlocker = LINK_BLOCKER_ROLES.includes(role.toLowerCase());
|
|
2770
|
-
return [
|
|
2771
|
-
createValidationIssue({
|
|
2772
|
-
store: getStore(linkElement),
|
|
2773
|
-
title: "Unlinked element",
|
|
2774
|
-
kind: "unlinked",
|
|
2775
|
-
description: "This link is not referenced to any element in the current chapter or any other chapter. Please link it again manually.",
|
|
2776
|
-
level: isBlocker ? "blocker" : "warning"
|
|
2777
|
-
})
|
|
2778
|
-
];
|
|
2779
|
-
};
|
|
2780
|
-
|
|
2781
2788
|
// src/validation/validateAttributes.ts
|
|
2782
2789
|
var validateAttributes = (element, schema) => {
|
|
2783
2790
|
const errors = [];
|
|
@@ -2909,21 +2916,6 @@ var validateChildren = (element, schema) => {
|
|
|
2909
2916
|
return errors;
|
|
2910
2917
|
};
|
|
2911
2918
|
|
|
2912
|
-
// src/validation/utils/getLinkableRoles.ts
|
|
2913
|
-
var getLinkableRoles = () => {
|
|
2914
|
-
const linkRoleDefinition = findAttributeDefinitionByName(
|
|
2915
|
-
LINK_SCHEMA.requiredAttributes,
|
|
2916
|
-
"role"
|
|
2917
|
-
);
|
|
2918
|
-
if (!linkRoleDefinition) {
|
|
2919
|
-
return [];
|
|
2920
|
-
}
|
|
2921
|
-
if (isAttributeRestricted(linkRoleDefinition)) {
|
|
2922
|
-
return linkRoleDefinition.values;
|
|
2923
|
-
}
|
|
2924
|
-
return [];
|
|
2925
|
-
};
|
|
2926
|
-
|
|
2927
2919
|
// src/validation/validateReferences.ts
|
|
2928
2920
|
var findElementLinkedTo2 = (xmlid, linkElements) => {
|
|
2929
2921
|
return linkElements.includes(xmlid);
|
|
@@ -2959,7 +2951,18 @@ var isValidUri = (uri) => {
|
|
|
2959
2951
|
return WEB_URI_REGEX.test(uri);
|
|
2960
2952
|
};
|
|
2961
2953
|
var validateUri = (uriElement) => {
|
|
2962
|
-
const url = uriElement.
|
|
2954
|
+
const url = uriElement.getAttribute(LINK_ATTRIBUTE);
|
|
2955
|
+
if (!url) {
|
|
2956
|
+
return [
|
|
2957
|
+
createValidationIssue({
|
|
2958
|
+
store: getStore(uriElement),
|
|
2959
|
+
title: "URL is required",
|
|
2960
|
+
kind: "missing",
|
|
2961
|
+
description: "URL is required. Please check and adjust.",
|
|
2962
|
+
level: "warning"
|
|
2963
|
+
})
|
|
2964
|
+
];
|
|
2965
|
+
}
|
|
2963
2966
|
if (isValidUri(url)) {
|
|
2964
2967
|
return [];
|
|
2965
2968
|
}
|
|
@@ -2985,16 +2988,14 @@ var validateElement = (element, root, elementsToLink, linkElements, schemasToVal
|
|
|
2985
2988
|
if (schemasToValidateAgainst.includes(schema.code)) {
|
|
2986
2989
|
errors.push(...validateElementAgainstSchema(element, schema));
|
|
2987
2990
|
}
|
|
2988
|
-
|
|
2989
|
-
const linkableRoles = getLinkableRoles();
|
|
2990
|
-
if (schema.tag === LINK_SCHEMA.tag && role && linkableRoles.includes(role) || schema.tag === FOOTNOTE_LINK_SCHEMA.tag) {
|
|
2991
|
+
if (schema.tag === LINK_SCHEMA.tag || schema.tag === FOOTNOTE_LINK_SCHEMA.tag) {
|
|
2991
2992
|
errors.push(...validateLinkend(element, elementsToLink));
|
|
2992
2993
|
}
|
|
2993
2994
|
if (schema.tag === BIBLIOMIXED_SCHEMA.tag) {
|
|
2994
2995
|
errors.push(...validateReferenceCited(element, linkElements));
|
|
2995
2996
|
}
|
|
2996
2997
|
if (schema.tag === FOOTNOTE_SCHEMA.tag) {
|
|
2997
|
-
errors.push(...validateFootnoteCue(element,
|
|
2998
|
+
errors.push(...validateFootnoteCue(element, linkElements));
|
|
2998
2999
|
}
|
|
2999
3000
|
if (schema.tag === URI_SCHEMA.tag) {
|
|
3000
3001
|
errors.push(...validateUri(element));
|
package/dist/index.mjs
CHANGED
|
@@ -2268,12 +2268,13 @@ var LINK_SCHEMA = createSchema({
|
|
|
2268
2268
|
});
|
|
2269
2269
|
|
|
2270
2270
|
// src/schema/elementSchemas/inlineElements/uri.ts
|
|
2271
|
+
var LINK_ATTRIBUTE = "xlinkhref";
|
|
2271
2272
|
var URI_SCHEMA = createSchema({
|
|
2272
2273
|
code: "uri",
|
|
2273
2274
|
kind: "inline",
|
|
2274
2275
|
tag: URI_TAG,
|
|
2275
|
-
requiredAttributes: [],
|
|
2276
|
-
optionalAttributes: [
|
|
2276
|
+
requiredAttributes: [LINK_ATTRIBUTE],
|
|
2277
|
+
optionalAttributes: [],
|
|
2277
2278
|
allowedChildrenCodes: [...ATOM_CODES_ALLOWED_CHILDREN]
|
|
2278
2279
|
});
|
|
2279
2280
|
|
|
@@ -2558,6 +2559,65 @@ var getElementsSelector = ({
|
|
|
2558
2559
|
return Array.from(elements);
|
|
2559
2560
|
};
|
|
2560
2561
|
|
|
2562
|
+
// src/validation/validateLinkend.ts
|
|
2563
|
+
var findElementLinkedTo = (linkend, elementsToLink) => {
|
|
2564
|
+
return elementsToLink.includes(linkend);
|
|
2565
|
+
};
|
|
2566
|
+
var LINK_TO_CROSS_CHECK = [
|
|
2567
|
+
TABLE_LINK_ROLE,
|
|
2568
|
+
FIGURE_LINK_ROLE,
|
|
2569
|
+
EQUATION_LINK_ROLE,
|
|
2570
|
+
FOOTNOTE_LINK_ROLE,
|
|
2571
|
+
REFERENCE_LINK_ROLE
|
|
2572
|
+
];
|
|
2573
|
+
var LINK_BLOCKER_ROLES = [
|
|
2574
|
+
TABLE_LINK_ROLE,
|
|
2575
|
+
FIGURE_LINK_ROLE,
|
|
2576
|
+
EQUATION_LINK_ROLE,
|
|
2577
|
+
FOOTNOTE_LINK_ROLE
|
|
2578
|
+
];
|
|
2579
|
+
var validateLinkend = (linkElement, elementsToLink) => {
|
|
2580
|
+
const linkend = linkElement.getAttribute("linkend");
|
|
2581
|
+
if (!linkend) {
|
|
2582
|
+
return [];
|
|
2583
|
+
}
|
|
2584
|
+
const isLinkFootnoteCue = linkElement.tagName.toUpperCase() === FOOTNOTE_LINK_SCHEMA.tag;
|
|
2585
|
+
if (isLinkFootnoteCue) {
|
|
2586
|
+
if (findElementLinkedTo(linkend, elementsToLink)) {
|
|
2587
|
+
return [];
|
|
2588
|
+
}
|
|
2589
|
+
return [
|
|
2590
|
+
createValidationIssue({
|
|
2591
|
+
store: getStore(linkElement),
|
|
2592
|
+
title: "Unlinked footnote cue",
|
|
2593
|
+
kind: "unlinked",
|
|
2594
|
+
description: "This footnote cue is not referenced to any footnote in this chapter. Please link it again manually.",
|
|
2595
|
+
level: "blocker"
|
|
2596
|
+
})
|
|
2597
|
+
];
|
|
2598
|
+
}
|
|
2599
|
+
const role = linkElement.getAttribute("role");
|
|
2600
|
+
if (!role) {
|
|
2601
|
+
return [];
|
|
2602
|
+
}
|
|
2603
|
+
if (!LINK_TO_CROSS_CHECK.includes(role)) {
|
|
2604
|
+
return [];
|
|
2605
|
+
}
|
|
2606
|
+
if (findElementLinkedTo(linkend, elementsToLink)) {
|
|
2607
|
+
return [];
|
|
2608
|
+
}
|
|
2609
|
+
const isBlocker = LINK_BLOCKER_ROLES.includes(role.toLowerCase());
|
|
2610
|
+
return [
|
|
2611
|
+
createValidationIssue({
|
|
2612
|
+
store: getStore(linkElement),
|
|
2613
|
+
title: "Unlinked element",
|
|
2614
|
+
kind: "unlinked",
|
|
2615
|
+
description: "This link is not referenced to any element in the current chapter or any other chapter. Please link it again manually.",
|
|
2616
|
+
level: isBlocker ? "blocker" : "warning"
|
|
2617
|
+
})
|
|
2618
|
+
];
|
|
2619
|
+
};
|
|
2620
|
+
|
|
2561
2621
|
// src/validation/validateFootnotes.ts
|
|
2562
2622
|
var extractFootnoteNumber = (footnote) => {
|
|
2563
2623
|
if (!footnote) return "no label";
|
|
@@ -2568,16 +2628,13 @@ var extractFootnoteNumber = (footnote) => {
|
|
|
2568
2628
|
}
|
|
2569
2629
|
return footnoteNumber;
|
|
2570
2630
|
};
|
|
2571
|
-
var validateFootnoteCue = (footnoteElement,
|
|
2631
|
+
var validateFootnoteCue = (footnoteElement, linkElements) => {
|
|
2572
2632
|
const errors = [];
|
|
2573
2633
|
const linkend = footnoteElement.getAttribute("xmlid") || "";
|
|
2574
2634
|
const footnoteNumber = footnoteElement.querySelector(
|
|
2575
2635
|
FOOTNOTE_NUMBER_SCHEMA.tag
|
|
2576
2636
|
);
|
|
2577
|
-
|
|
2578
|
-
`${FOOTNOTE_LINK_SCHEMA.tag}[linkend='${CSS.escape(linkend)}']`
|
|
2579
|
-
);
|
|
2580
|
-
if (footnoteLink) {
|
|
2637
|
+
if (findElementLinkedTo(linkend, linkElements)) {
|
|
2581
2638
|
return errors;
|
|
2582
2639
|
}
|
|
2583
2640
|
if (!footnoteNumber) {
|
|
@@ -2660,56 +2717,6 @@ var validateConsecutiveFootnoteCues = (root) => {
|
|
|
2660
2717
|
return [];
|
|
2661
2718
|
};
|
|
2662
2719
|
|
|
2663
|
-
// src/validation/validateLinkend.ts
|
|
2664
|
-
var findElementLinkedTo = (linkend, elementsToLink) => {
|
|
2665
|
-
return elementsToLink.includes(linkend);
|
|
2666
|
-
};
|
|
2667
|
-
var LINK_BLOCKER_ROLES = [
|
|
2668
|
-
TABLE_LINK_ROLE,
|
|
2669
|
-
FIGURE_LINK_ROLE,
|
|
2670
|
-
EQUATION_LINK_ROLE,
|
|
2671
|
-
FOOTNOTE_LINK_ROLE,
|
|
2672
|
-
CHAPTER_LINK_ROLE
|
|
2673
|
-
];
|
|
2674
|
-
var validateLinkend = (linkElement, elementsToLink) => {
|
|
2675
|
-
const linkend = linkElement.getAttribute("linkend");
|
|
2676
|
-
if (!linkend) {
|
|
2677
|
-
return [];
|
|
2678
|
-
}
|
|
2679
|
-
const isLinkFootnoteCue = linkElement.tagName.toUpperCase() === FOOTNOTE_LINK_SCHEMA.tag;
|
|
2680
|
-
if (isLinkFootnoteCue) {
|
|
2681
|
-
if (findElementLinkedTo(linkend, elementsToLink)) {
|
|
2682
|
-
return [];
|
|
2683
|
-
}
|
|
2684
|
-
return [
|
|
2685
|
-
createValidationIssue({
|
|
2686
|
-
store: getStore(linkElement),
|
|
2687
|
-
title: "Unlinked footnote cue",
|
|
2688
|
-
kind: "unlinked",
|
|
2689
|
-
description: "This footnote cue is not referenced to any footnote in this chapter. Please link it again manually.",
|
|
2690
|
-
level: "blocker"
|
|
2691
|
-
})
|
|
2692
|
-
];
|
|
2693
|
-
}
|
|
2694
|
-
const role = linkElement.getAttribute("role");
|
|
2695
|
-
if (!role) {
|
|
2696
|
-
return [];
|
|
2697
|
-
}
|
|
2698
|
-
if (findElementLinkedTo(linkend, elementsToLink)) {
|
|
2699
|
-
return [];
|
|
2700
|
-
}
|
|
2701
|
-
const isBlocker = LINK_BLOCKER_ROLES.includes(role.toLowerCase());
|
|
2702
|
-
return [
|
|
2703
|
-
createValidationIssue({
|
|
2704
|
-
store: getStore(linkElement),
|
|
2705
|
-
title: "Unlinked element",
|
|
2706
|
-
kind: "unlinked",
|
|
2707
|
-
description: "This link is not referenced to any element in the current chapter or any other chapter. Please link it again manually.",
|
|
2708
|
-
level: isBlocker ? "blocker" : "warning"
|
|
2709
|
-
})
|
|
2710
|
-
];
|
|
2711
|
-
};
|
|
2712
|
-
|
|
2713
2720
|
// src/validation/validateAttributes.ts
|
|
2714
2721
|
var validateAttributes = (element, schema) => {
|
|
2715
2722
|
const errors = [];
|
|
@@ -2841,21 +2848,6 @@ var validateChildren = (element, schema) => {
|
|
|
2841
2848
|
return errors;
|
|
2842
2849
|
};
|
|
2843
2850
|
|
|
2844
|
-
// src/validation/utils/getLinkableRoles.ts
|
|
2845
|
-
var getLinkableRoles = () => {
|
|
2846
|
-
const linkRoleDefinition = findAttributeDefinitionByName(
|
|
2847
|
-
LINK_SCHEMA.requiredAttributes,
|
|
2848
|
-
"role"
|
|
2849
|
-
);
|
|
2850
|
-
if (!linkRoleDefinition) {
|
|
2851
|
-
return [];
|
|
2852
|
-
}
|
|
2853
|
-
if (isAttributeRestricted(linkRoleDefinition)) {
|
|
2854
|
-
return linkRoleDefinition.values;
|
|
2855
|
-
}
|
|
2856
|
-
return [];
|
|
2857
|
-
};
|
|
2858
|
-
|
|
2859
2851
|
// src/validation/validateReferences.ts
|
|
2860
2852
|
var findElementLinkedTo2 = (xmlid, linkElements) => {
|
|
2861
2853
|
return linkElements.includes(xmlid);
|
|
@@ -2891,7 +2883,18 @@ var isValidUri = (uri) => {
|
|
|
2891
2883
|
return WEB_URI_REGEX.test(uri);
|
|
2892
2884
|
};
|
|
2893
2885
|
var validateUri = (uriElement) => {
|
|
2894
|
-
const url = uriElement.
|
|
2886
|
+
const url = uriElement.getAttribute(LINK_ATTRIBUTE);
|
|
2887
|
+
if (!url) {
|
|
2888
|
+
return [
|
|
2889
|
+
createValidationIssue({
|
|
2890
|
+
store: getStore(uriElement),
|
|
2891
|
+
title: "URL is required",
|
|
2892
|
+
kind: "missing",
|
|
2893
|
+
description: "URL is required. Please check and adjust.",
|
|
2894
|
+
level: "warning"
|
|
2895
|
+
})
|
|
2896
|
+
];
|
|
2897
|
+
}
|
|
2895
2898
|
if (isValidUri(url)) {
|
|
2896
2899
|
return [];
|
|
2897
2900
|
}
|
|
@@ -2917,16 +2920,14 @@ var validateElement = (element, root, elementsToLink, linkElements, schemasToVal
|
|
|
2917
2920
|
if (schemasToValidateAgainst.includes(schema.code)) {
|
|
2918
2921
|
errors.push(...validateElementAgainstSchema(element, schema));
|
|
2919
2922
|
}
|
|
2920
|
-
|
|
2921
|
-
const linkableRoles = getLinkableRoles();
|
|
2922
|
-
if (schema.tag === LINK_SCHEMA.tag && role && linkableRoles.includes(role) || schema.tag === FOOTNOTE_LINK_SCHEMA.tag) {
|
|
2923
|
+
if (schema.tag === LINK_SCHEMA.tag || schema.tag === FOOTNOTE_LINK_SCHEMA.tag) {
|
|
2923
2924
|
errors.push(...validateLinkend(element, elementsToLink));
|
|
2924
2925
|
}
|
|
2925
2926
|
if (schema.tag === BIBLIOMIXED_SCHEMA.tag) {
|
|
2926
2927
|
errors.push(...validateReferenceCited(element, linkElements));
|
|
2927
2928
|
}
|
|
2928
2929
|
if (schema.tag === FOOTNOTE_SCHEMA.tag) {
|
|
2929
|
-
errors.push(...validateFootnoteCue(element,
|
|
2930
|
+
errors.push(...validateFootnoteCue(element, linkElements));
|
|
2930
2931
|
}
|
|
2931
2932
|
if (schema.tag === URI_SCHEMA.tag) {
|
|
2932
2933
|
errors.push(...validateUri(element));
|