xslt-processor 1.0.0 → 1.1.0
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/LICENSE +165 -0
- package/README.md +29 -2
- package/constants.js.map +1 -0
- package/dom/functions.d.ts +15 -0
- package/{src/dom → dom}/functions.js +88 -43
- package/dom/functions.js.map +1 -0
- package/{src/dom → dom}/index.d.ts +1 -0
- package/{src/dom → dom}/index.js +1 -0
- package/dom/index.js.map +1 -0
- package/{src/dom → dom}/util.d.ts +0 -21
- package/dom/util.js +175 -0
- package/dom/util.js.map +1 -0
- package/{src/dom → dom}/xdocument.d.ts +3 -2
- package/dom/xdocument.js +71 -0
- package/dom/xdocument.js.map +1 -0
- package/dom/xml-functions.d.ts +46 -0
- package/dom/xml-functions.js +317 -0
- package/dom/xml-functions.js.map +1 -0
- package/{src/dom → dom}/xmltoken.js +25 -25
- package/dom/xmltoken.js.map +1 -0
- package/dom/xnode.d.ts +62 -0
- package/{src/dom → dom}/xnode.js +144 -91
- package/dom/xnode.js.map +1 -0
- package/index.d.ts +4 -4
- package/index.js +6 -5
- package/index.js.map +1 -1
- package/package.json +31 -10
- package/umd/constants.d.ts +8 -0
- package/umd/dom/functions.d.ts +15 -0
- package/umd/dom/index.d.ts +4 -0
- package/umd/dom/util.d.ts +26 -0
- package/umd/dom/xdocument.d.ts +16 -0
- package/umd/dom/xml-functions.d.ts +46 -0
- package/umd/dom/xmltoken.d.ts +12 -0
- package/umd/dom/xnode.d.ts +62 -0
- package/umd/index.d.ts +4 -0
- package/{src → umd}/xpath/expr-context.d.ts +6 -7
- package/umd/xpath/expressions/function-call-expr.d.ts +49 -0
- package/{src → umd}/xpath/expressions/location-expr.d.ts +1 -1
- package/{src → umd}/xpath/expressions/step-expr.d.ts +1 -1
- package/umd/xpath/node-test-element-or-attribute.d.ts +5 -0
- package/{src → umd}/xpath/node-test-name.d.ts +1 -1
- package/{src → umd}/xpath/xpath.d.ts +12 -5
- package/umd/xslt-processor.js +16 -0
- package/umd/xslt-processor.js.map +1 -0
- package/umd/xslt.d.ts +133 -0
- package/xpath/expr-context.d.ts +26 -0
- package/{src/xpath → xpath}/expr-context.js +41 -42
- package/xpath/expr-context.js.map +1 -0
- package/xpath/expressions/binary-expr.d.ts +10 -0
- package/{src/xpath → xpath}/expressions/binary-expr.js +65 -47
- package/xpath/expressions/binary-expr.js.map +1 -0
- package/xpath/expressions/expression.d.ts +4 -0
- package/xpath/expressions/expression.js +10 -0
- package/xpath/expressions/expression.js.map +1 -0
- package/xpath/expressions/filter-expr.d.ts +9 -0
- package/xpath/expressions/filter-expr.js +53 -0
- package/xpath/expressions/filter-expr.js.map +1 -0
- package/xpath/expressions/function-call-expr.d.ts +49 -0
- package/{src/xpath → xpath}/expressions/function-call-expr.js +160 -155
- package/xpath/expressions/function-call-expr.js.map +1 -0
- package/xpath/expressions/index.d.ts +13 -0
- package/xpath/expressions/index.js.map +1 -0
- package/xpath/expressions/literal-expr.d.ts +7 -0
- package/xpath/expressions/literal-expr.js +34 -0
- package/xpath/expressions/literal-expr.js.map +1 -0
- package/xpath/expressions/location-expr.d.ts +14 -0
- package/xpath/expressions/location-expr.js +94 -0
- package/xpath/expressions/location-expr.js.map +1 -0
- package/xpath/expressions/number-expr.d.ts +7 -0
- package/xpath/expressions/number-expr.js +34 -0
- package/xpath/expressions/number-expr.js.map +1 -0
- package/xpath/expressions/path-expr.d.ts +9 -0
- package/xpath/expressions/path-expr.js +52 -0
- package/xpath/expressions/path-expr.js.map +1 -0
- package/xpath/expressions/predicate-expr.d.ts +8 -0
- package/xpath/expressions/predicate-expr.js +43 -0
- package/xpath/expressions/predicate-expr.js.map +1 -0
- package/xpath/expressions/step-expr.d.ts +14 -0
- package/{src/xpath → xpath}/expressions/step-expr.js +68 -51
- package/xpath/expressions/step-expr.js.map +1 -0
- package/xpath/expressions/token-expr.d.ts +7 -0
- package/xpath/expressions/token-expr.js +34 -0
- package/xpath/expressions/token-expr.js.map +1 -0
- package/xpath/expressions/unary-minus-expr.d.ts +8 -0
- package/xpath/expressions/unary-minus-expr.js +34 -0
- package/xpath/expressions/unary-minus-expr.js.map +1 -0
- package/xpath/expressions/union-expr.d.ts +9 -0
- package/xpath/expressions/union-expr.js +51 -0
- package/xpath/expressions/union-expr.js.map +1 -0
- package/xpath/expressions/variable-expr.d.ts +7 -0
- package/xpath/expressions/variable-expr.js +33 -0
- package/xpath/expressions/variable-expr.js.map +1 -0
- package/xpath/index.d.ts +9 -0
- package/xpath/index.js.map +1 -0
- package/xpath/node-test-any.d.ts +5 -0
- package/xpath/node-test-any.js +15 -0
- package/xpath/node-test-any.js.map +1 -0
- package/{src/xpath/node-test-element-or-attribute.d.ts → xpath/node-test-comment.d.ts} +1 -1
- package/xpath/node-test-comment.js +15 -0
- package/xpath/node-test-comment.js.map +1 -0
- package/xpath/node-test-element-or-attribute.d.ts +5 -0
- package/xpath/node-test-element-or-attribute.js +16 -0
- package/xpath/node-test-element-or-attribute.js.map +1 -0
- package/xpath/node-test-name.d.ts +8 -0
- package/xpath/node-test-name.js +22 -0
- package/xpath/node-test-name.js.map +1 -0
- package/xpath/node-test-nc.d.ts +7 -0
- package/xpath/node-test-nc.js +17 -0
- package/xpath/node-test-nc.js.map +1 -0
- package/xpath/node-test-pi.d.ts +6 -0
- package/{src/xpath → xpath}/node-test-pi.js +8 -7
- package/xpath/node-test-pi.js.map +1 -0
- package/xpath/node-test-text.d.ts +4 -0
- package/xpath/node-test-text.js +15 -0
- package/xpath/node-test-text.js.map +1 -0
- package/xpath/tokens.d.ts +231 -0
- package/{src/xpath → xpath}/tokens.js +5 -5
- package/xpath/tokens.js.map +1 -0
- package/xpath/values/boolean-value.d.ts +9 -0
- package/xpath/values/boolean-value.js +24 -0
- package/xpath/values/boolean-value.js.map +1 -0
- package/xpath/values/index.d.ts +4 -0
- package/xpath/values/index.js.map +1 -0
- package/xpath/values/node-set-value.d.ts +9 -0
- package/xpath/values/node-set-value.js +28 -0
- package/xpath/values/node-set-value.js.map +1 -0
- package/xpath/values/number-value.d.ts +9 -0
- package/xpath/values/number-value.js +24 -0
- package/xpath/values/number-value.js.map +1 -0
- package/xpath/values/string-value.d.ts +9 -0
- package/{src/xpath → xpath}/values/string-value.js +12 -11
- package/xpath/values/string-value.js.map +1 -0
- package/xpath/xpath-grammar-rules.d.ts +68 -0
- package/xpath/xpath-grammar-rules.js.map +1 -0
- package/xpath/xpath.d.ts +105 -0
- package/{src/xpath → xpath}/xpath.js +267 -266
- package/xpath/xpath.js.map +1 -0
- package/xpathdebug.d.ts +2 -0
- package/{src/xpathdebug.js → xpathdebug.js} +48 -48
- package/xpathdebug.js.map +1 -0
- package/xslt.d.ts +133 -0
- package/xslt.js +643 -0
- package/xslt.js.map +1 -0
- package/src/constants.js.map +0 -1
- package/src/dom/functions.d.ts +0 -3
- package/src/dom/functions.js.map +0 -1
- package/src/dom/index.js.map +0 -1
- package/src/dom/util.js +0 -338
- package/src/dom/util.js.map +0 -1
- package/src/dom/xdocument.js +0 -47
- package/src/dom/xdocument.js.map +0 -1
- package/src/dom/xmltoken.js.map +0 -1
- package/src/dom/xnode.d.ts +0 -38
- package/src/dom/xnode.js.map +0 -1
- package/src/xpath/expr-context.js.map +0 -1
- package/src/xpath/expressions/binary-expr.js.map +0 -1
- package/src/xpath/expressions/expression.js +0 -7
- package/src/xpath/expressions/expression.js.map +0 -1
- package/src/xpath/expressions/filter-expr.js +0 -35
- package/src/xpath/expressions/filter-expr.js.map +0 -1
- package/src/xpath/expressions/function-call-expr.d.ts +0 -49
- package/src/xpath/expressions/function-call-expr.js.map +0 -1
- package/src/xpath/expressions/index.js.map +0 -1
- package/src/xpath/expressions/literal-expr.js +0 -16
- package/src/xpath/expressions/literal-expr.js.map +0 -1
- package/src/xpath/expressions/location-expr.js +0 -76
- package/src/xpath/expressions/location-expr.js.map +0 -1
- package/src/xpath/expressions/number-expr.js +0 -16
- package/src/xpath/expressions/number-expr.js.map +0 -1
- package/src/xpath/expressions/path-expr.js +0 -36
- package/src/xpath/expressions/path-expr.js.map +0 -1
- package/src/xpath/expressions/predicate-expr.js +0 -25
- package/src/xpath/expressions/predicate-expr.js.map +0 -1
- package/src/xpath/expressions/step-expr.js.map +0 -1
- package/src/xpath/expressions/token-expr.js +0 -16
- package/src/xpath/expressions/token-expr.js.map +0 -1
- package/src/xpath/expressions/unary-minus-expr.js +0 -16
- package/src/xpath/expressions/unary-minus-expr.js.map +0 -1
- package/src/xpath/expressions/union-expr.js +0 -32
- package/src/xpath/expressions/union-expr.js.map +0 -1
- package/src/xpath/expressions/variable-expr.js +0 -15
- package/src/xpath/expressions/variable-expr.js.map +0 -1
- package/src/xpath/index.js.map +0 -1
- package/src/xpath/node-test-any.js +0 -14
- package/src/xpath/node-test-any.js.map +0 -1
- package/src/xpath/node-test-comment.js +0 -12
- package/src/xpath/node-test-comment.js.map +0 -1
- package/src/xpath/node-test-element-or-attribute.js +0 -12
- package/src/xpath/node-test-element-or-attribute.js.map +0 -1
- package/src/xpath/node-test-name.js +0 -23
- package/src/xpath/node-test-name.js.map +0 -1
- package/src/xpath/node-test-nc.js +0 -16
- package/src/xpath/node-test-nc.js.map +0 -1
- package/src/xpath/node-test-pi.js.map +0 -1
- package/src/xpath/node-test-text.js +0 -12
- package/src/xpath/node-test-text.js.map +0 -1
- package/src/xpath/tokens.js.map +0 -1
- package/src/xpath/values/boolean-value.js +0 -23
- package/src/xpath/values/boolean-value.js.map +0 -1
- package/src/xpath/values/index.js.map +0 -1
- package/src/xpath/values/node-set-value.js +0 -27
- package/src/xpath/values/node-set-value.js.map +0 -1
- package/src/xpath/values/number-value.js +0 -23
- package/src/xpath/values/number-value.js.map +0 -1
- package/src/xpath/values/string-value.js.map +0 -1
- package/src/xpath/xpath-grammar-rules.js.map +0 -1
- package/src/xpath/xpath.js.map +0 -1
- package/src/xpathdebug.js.map +0 -1
- package/src/xslt.d.ts +0 -68
- package/src/xslt.js +0 -619
- package/src/xslt.js.map +0 -1
- package/xslt-processor.js +0 -2
- package/xslt-processor.js.map +0 -1
- /package/{src/constants.d.ts → constants.d.ts} +0 -0
- /package/{src/constants.js → constants.js} +0 -0
- /package/{src/dom → dom}/xmltoken.d.ts +0 -0
- /package/{src → umd}/xpath/expressions/binary-expr.d.ts +0 -0
- /package/{src → umd}/xpath/expressions/expression.d.ts +0 -0
- /package/{src → umd}/xpath/expressions/filter-expr.d.ts +0 -0
- /package/{src → umd}/xpath/expressions/index.d.ts +0 -0
- /package/{src → umd}/xpath/expressions/literal-expr.d.ts +0 -0
- /package/{src → umd}/xpath/expressions/number-expr.d.ts +0 -0
- /package/{src → umd}/xpath/expressions/path-expr.d.ts +0 -0
- /package/{src → umd}/xpath/expressions/predicate-expr.d.ts +0 -0
- /package/{src → umd}/xpath/expressions/token-expr.d.ts +0 -0
- /package/{src → umd}/xpath/expressions/unary-minus-expr.d.ts +0 -0
- /package/{src → umd}/xpath/expressions/union-expr.d.ts +0 -0
- /package/{src → umd}/xpath/expressions/variable-expr.d.ts +0 -0
- /package/{src → umd}/xpath/index.d.ts +0 -0
- /package/{src → umd}/xpath/node-test-any.d.ts +0 -0
- /package/{src → umd}/xpath/node-test-comment.d.ts +0 -0
- /package/{src → umd}/xpath/node-test-nc.d.ts +0 -0
- /package/{src → umd}/xpath/node-test-pi.d.ts +0 -0
- /package/{src → umd}/xpath/node-test-text.d.ts +0 -0
- /package/{src → umd}/xpath/tokens.d.ts +0 -0
- /package/{src → umd}/xpath/values/boolean-value.d.ts +0 -0
- /package/{src → umd}/xpath/values/index.d.ts +0 -0
- /package/{src → umd}/xpath/values/node-set-value.d.ts +0 -0
- /package/{src → umd}/xpath/values/number-value.d.ts +0 -0
- /package/{src → umd}/xpath/values/string-value.d.ts +0 -0
- /package/{src → umd}/xpath/xpath-grammar-rules.d.ts +0 -0
- /package/{src → umd}/xpathdebug.d.ts +0 -0
- /package/{src/xpath → xpath}/expressions/index.js +0 -0
- /package/{src/xpath → xpath}/index.js +0 -0
- /package/{src/xpath → xpath}/values/index.js +0 -0
- /package/{src/xpath → xpath}/xpath-grammar-rules.js +0 -0
package/src/xslt.js
DELETED
|
@@ -1,619 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.Xslt = void 0;
|
|
7
|
-
// Copyright 2023 Design Liquido
|
|
8
|
-
// Copyright 2018 Johannes Wilm
|
|
9
|
-
// Copyright 2005 Google Inc.
|
|
10
|
-
// All Rights Reserved
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
// An XSL-T processor written in JavaScript. The implementation is NOT
|
|
14
|
-
// complete; some xsl element are left out.
|
|
15
|
-
//
|
|
16
|
-
// References:
|
|
17
|
-
//
|
|
18
|
-
// [XSLT] XSL-T Specification
|
|
19
|
-
// <http://www.w3.org/TR/1999/REC-xslt-19991116>.
|
|
20
|
-
//
|
|
21
|
-
// [ECMA] ECMAScript Language Specification
|
|
22
|
-
// <http://www.ecma-international.org/publications/standards/Ecma-262.htm>.
|
|
23
|
-
//
|
|
24
|
-
// The XSL processor API has one entry point, the function
|
|
25
|
-
// xsltProcessContext(). It receives as arguments the starting point in the
|
|
26
|
-
// input document as an XPath expression context, the DOM root node of
|
|
27
|
-
// the XSL-T stylesheet, and a DOM node that receives the output.
|
|
28
|
-
//
|
|
29
|
-
// NOTE: Actually, XSL-T processing according to the specification is
|
|
30
|
-
// defined as operation on text documents, not as operation on DOM
|
|
31
|
-
// trees. So, strictly speaking, this implementation is not an XSL-T
|
|
32
|
-
// processor, but the processing engine that needs to be complemented
|
|
33
|
-
// by an XML parser and serializer in order to be complete. Those two
|
|
34
|
-
// are found in the file xml.js.
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
// TODO(mesch): add jsdoc comments. Use more coherent naming. Finish
|
|
38
|
-
// remaining XSLT features.
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
// Original author: Steffen Meschkat <mesch@google.com>
|
|
42
|
-
const he_1 = __importDefault(require("he"));
|
|
43
|
-
const util_1 = require("./dom/util");
|
|
44
|
-
const dom_1 = require("./dom");
|
|
45
|
-
const xpath_1 = require("./xpath");
|
|
46
|
-
const constants_1 = require("./constants");
|
|
47
|
-
const values_1 = require("./xpath/values");
|
|
48
|
-
class Xslt {
|
|
49
|
-
constructor() {
|
|
50
|
-
this.xPath = new xpath_1.XPath();
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* The exported entry point of the XSL-T processor.
|
|
54
|
-
* @param xmlDoc The input document root, as DOM node.
|
|
55
|
-
* @param stylesheet The stylesheet document root, as DOM node.
|
|
56
|
-
* @param parameters Additional parameters to be set as variables.
|
|
57
|
-
* @returns the processed document, as XML text in a string.
|
|
58
|
-
*/
|
|
59
|
-
xsltProcess(xmlDoc, stylesheet, parameters) {
|
|
60
|
-
const output = (0, util_1.domCreateDocumentFragment)(new dom_1.XDocument());
|
|
61
|
-
const expressionContext = new xpath_1.ExprContext(xmlDoc);
|
|
62
|
-
if (parameters && typeof parameters === 'object') {
|
|
63
|
-
for (const [key, value] of Object.entries(parameters)) {
|
|
64
|
-
expressionContext.setVariable(key, new values_1.StringValue(value));
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
// expressionContext.setVariable();
|
|
68
|
-
this.xsltProcessContext(expressionContext, stylesheet, output, parameters);
|
|
69
|
-
const ret = (0, util_1.xmlText)(output);
|
|
70
|
-
return ret;
|
|
71
|
-
}
|
|
72
|
-
// The main entry point of the XSL-T processor, as explained above.
|
|
73
|
-
//
|
|
74
|
-
// @param input The input document root, as XPath ExprContext.
|
|
75
|
-
// @param template The stylesheet document root, as DOM node.
|
|
76
|
-
// @param the root of the generated output, as DOM node.
|
|
77
|
-
xsltProcessContext(input, template, output, _parameters) {
|
|
78
|
-
const outputDocument = (0, util_1.xmlOwnerDocument)(output);
|
|
79
|
-
if (!this.isXsltElement(template)) {
|
|
80
|
-
this.xsltPassThrough(input, template, output, outputDocument);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
let name, top, nameexpr, node, select, value, nodes, sortContext, mode, templates, paramContext, commentData, commentNode, test, match, text;
|
|
84
|
-
switch (template.localName) {
|
|
85
|
-
case 'apply-imports':
|
|
86
|
-
throw `not implemented: ${template.localName}`;
|
|
87
|
-
case 'apply-templates':
|
|
88
|
-
select = this.xmlGetAttribute(template, 'select');
|
|
89
|
-
if (select) {
|
|
90
|
-
nodes = this.xPath.xPathEval(select, input).nodeSetValue();
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
nodes = input.node.childNodes;
|
|
94
|
-
}
|
|
95
|
-
sortContext = input.clone(nodes[0], 0, nodes);
|
|
96
|
-
this.xsltWithParam(sortContext, template);
|
|
97
|
-
this.xsltSort(sortContext, template);
|
|
98
|
-
mode = this.xmlGetAttribute(template, 'mode');
|
|
99
|
-
top = template.ownerDocument.documentElement;
|
|
100
|
-
templates = [];
|
|
101
|
-
for (let i = 0; i < top.childNodes.length; ++i) {
|
|
102
|
-
let c = top.childNodes[i];
|
|
103
|
-
let matchAttribute = c.getAttribute('match');
|
|
104
|
-
// Avoiding infinite loops.
|
|
105
|
-
if (matchAttribute && matchAttribute.startsWith('/')) {
|
|
106
|
-
continue;
|
|
107
|
-
}
|
|
108
|
-
if (c.nodeType == constants_1.DOM_ELEMENT_NODE &&
|
|
109
|
-
this.isXsltElement(c, 'template') &&
|
|
110
|
-
(!mode || c.getAttribute('mode') == mode)) {
|
|
111
|
-
templates.push(c);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
for (let j = 0; j < sortContext.contextSize(); ++j) {
|
|
115
|
-
const nj = sortContext.nodelist[j];
|
|
116
|
-
for (let i = 0; i < templates.length; ++i) {
|
|
117
|
-
this.xsltProcessContext(sortContext.clone(nj, j), templates[i], output);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
break;
|
|
121
|
-
case 'attribute':
|
|
122
|
-
nameexpr = this.xmlGetAttribute(template, 'name');
|
|
123
|
-
name = this.xsltAttributeValue(nameexpr, input);
|
|
124
|
-
node = (0, util_1.domCreateDocumentFragment)(outputDocument);
|
|
125
|
-
this.xsltChildNodes(input, template, node);
|
|
126
|
-
value = (0, util_1.xmlValue)(node);
|
|
127
|
-
(0, util_1.domSetAttribute)(output, name, value);
|
|
128
|
-
break;
|
|
129
|
-
case 'attribute-set':
|
|
130
|
-
throw `not implemented: ${template.localName}`;
|
|
131
|
-
case 'call-template':
|
|
132
|
-
name = this.xmlGetAttribute(template, 'name');
|
|
133
|
-
top = template.ownerDocument.documentElement;
|
|
134
|
-
paramContext = input.clone();
|
|
135
|
-
this.xsltWithParam(paramContext, template);
|
|
136
|
-
for (let i = 0; i < top.childNodes.length; ++i) {
|
|
137
|
-
let c = top.childNodes[i];
|
|
138
|
-
if (c.nodeType == constants_1.DOM_ELEMENT_NODE &&
|
|
139
|
-
this.isXsltElement(c, 'template') &&
|
|
140
|
-
(0, util_1.domGetAttribute)(c, 'name') == name) {
|
|
141
|
-
this.xsltChildNodes(paramContext, c, output);
|
|
142
|
-
break;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
break;
|
|
146
|
-
case 'choose':
|
|
147
|
-
this.xsltChoose(input, template, output);
|
|
148
|
-
break;
|
|
149
|
-
case 'comment':
|
|
150
|
-
node = (0, util_1.domCreateDocumentFragment)(outputDocument);
|
|
151
|
-
this.xsltChildNodes(input, template, node);
|
|
152
|
-
commentData = (0, util_1.xmlValue)(node);
|
|
153
|
-
commentNode = (0, util_1.domCreateComment)(outputDocument, commentData);
|
|
154
|
-
output.appendChild(commentNode);
|
|
155
|
-
break;
|
|
156
|
-
case 'copy':
|
|
157
|
-
node = this.xsltCopy(output, input.node, outputDocument);
|
|
158
|
-
if (node) {
|
|
159
|
-
this.xsltChildNodes(input, template, node);
|
|
160
|
-
}
|
|
161
|
-
break;
|
|
162
|
-
case 'copy-of':
|
|
163
|
-
select = this.xmlGetAttribute(template, 'select');
|
|
164
|
-
value = this.xPath.xPathEval(select, input);
|
|
165
|
-
if (value.type == 'node-set') {
|
|
166
|
-
nodes = value.nodeSetValue();
|
|
167
|
-
for (let i = 0; i < nodes.length; ++i) {
|
|
168
|
-
this.xsltCopyOf(output, nodes[i], outputDocument);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
let node = (0, util_1.domCreateTextNode)(outputDocument, value.stringValue());
|
|
173
|
-
(0, util_1.domAppendChild)(output, node);
|
|
174
|
-
}
|
|
175
|
-
break;
|
|
176
|
-
case 'decimal-format':
|
|
177
|
-
throw `not implemented: ${template.localName}`;
|
|
178
|
-
case 'element':
|
|
179
|
-
nameexpr = this.xmlGetAttribute(template, 'name');
|
|
180
|
-
name = this.xsltAttributeValue(nameexpr, input);
|
|
181
|
-
node = (0, util_1.domCreateElement)(outputDocument, name);
|
|
182
|
-
(0, util_1.domAppendChild)(output, node);
|
|
183
|
-
this.xsltChildNodes(input, template, node);
|
|
184
|
-
break;
|
|
185
|
-
case 'fallback':
|
|
186
|
-
throw `not implemented: ${template.localName}`;
|
|
187
|
-
case 'for-each':
|
|
188
|
-
this.xsltForEach(input, template, output);
|
|
189
|
-
break;
|
|
190
|
-
case 'if':
|
|
191
|
-
test = this.xmlGetAttribute(template, 'test');
|
|
192
|
-
if (this.xPath.xPathEval(test, input).booleanValue()) {
|
|
193
|
-
this.xsltChildNodes(input, template, output);
|
|
194
|
-
}
|
|
195
|
-
break;
|
|
196
|
-
case 'import':
|
|
197
|
-
throw `not implemented: ${template.localName}`;
|
|
198
|
-
case 'include':
|
|
199
|
-
throw `not implemented: ${template.localName}`;
|
|
200
|
-
case 'key':
|
|
201
|
-
throw `not implemented: ${template.localName}`;
|
|
202
|
-
case 'message':
|
|
203
|
-
throw `not implemented: ${template.localName}`;
|
|
204
|
-
case 'namespace-alias':
|
|
205
|
-
throw `not implemented: ${template.localName}`;
|
|
206
|
-
case 'number':
|
|
207
|
-
throw `not implemented: ${template.localName}`;
|
|
208
|
-
case 'otherwise':
|
|
209
|
-
throw `error if here: ${template.localName}`;
|
|
210
|
-
case 'output':
|
|
211
|
-
// Ignored. -- Since we operate on the DOM, and all further use
|
|
212
|
-
// of the output of the XSL transformation is determined by the
|
|
213
|
-
// browser that we run in, this parameter is not applicable to
|
|
214
|
-
// this implementation.
|
|
215
|
-
break;
|
|
216
|
-
case 'preserve-space':
|
|
217
|
-
throw `not implemented: ${template.localName}`;
|
|
218
|
-
case 'processing-instruction':
|
|
219
|
-
throw `not implemented: ${template.localName}`;
|
|
220
|
-
case 'sort':
|
|
221
|
-
// just ignore -- was handled by xsltSort()
|
|
222
|
-
break;
|
|
223
|
-
case 'strip-space':
|
|
224
|
-
throw `not implemented: ${template.localName}`;
|
|
225
|
-
case 'stylesheet':
|
|
226
|
-
case 'transform':
|
|
227
|
-
this.xsltChildNodes(input, template, output);
|
|
228
|
-
break;
|
|
229
|
-
case 'template':
|
|
230
|
-
match = this.xmlGetAttribute(template, 'match');
|
|
231
|
-
if (match && this.xsltMatch(match, input)) {
|
|
232
|
-
this.xsltChildNodes(input, template, output);
|
|
233
|
-
}
|
|
234
|
-
break;
|
|
235
|
-
case 'text':
|
|
236
|
-
text = (0, util_1.xmlValue)(template);
|
|
237
|
-
node = (0, util_1.domCreateTextNode)(outputDocument, text);
|
|
238
|
-
output.appendChild(node);
|
|
239
|
-
break;
|
|
240
|
-
case 'value-of':
|
|
241
|
-
select = this.xmlGetAttribute(template, 'select');
|
|
242
|
-
value = this.xPath.xPathEval(select, input).stringValue();
|
|
243
|
-
node = (0, util_1.domCreateTextNode)(outputDocument, value);
|
|
244
|
-
output.appendChild(node);
|
|
245
|
-
break;
|
|
246
|
-
case 'param':
|
|
247
|
-
this.xsltVariable(input, template, false);
|
|
248
|
-
break;
|
|
249
|
-
case 'variable':
|
|
250
|
-
this.xsltVariable(input, template, true);
|
|
251
|
-
break;
|
|
252
|
-
case 'when':
|
|
253
|
-
throw `error if here: ${template.localName}`;
|
|
254
|
-
case 'with-param':
|
|
255
|
-
throw `error if here: ${template.localName}`;
|
|
256
|
-
default:
|
|
257
|
-
throw `error if here: ${template.localName}`;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Sets parameters defined by xsl:with-param child nodes of the
|
|
263
|
-
* current template node, in the current input context. This happens
|
|
264
|
-
* before the operation specified by the current template node is
|
|
265
|
-
* executed.
|
|
266
|
-
* @param input TODO
|
|
267
|
-
* @param template TODO
|
|
268
|
-
*/
|
|
269
|
-
xsltWithParam(input, template) {
|
|
270
|
-
for (const c of template.childNodes) {
|
|
271
|
-
if (c.nodeType == constants_1.DOM_ELEMENT_NODE && this.isXsltElement(c, 'with-param')) {
|
|
272
|
-
this.xsltVariable(input, c, true);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Orders the current node list in the input context according to the
|
|
278
|
-
* sort order specified by xsl:sort child nodes of the current
|
|
279
|
-
* template node. This happens before the operation specified by the
|
|
280
|
-
* current template node is executed.
|
|
281
|
-
* @param input TODO
|
|
282
|
-
* @param template TODO
|
|
283
|
-
* @todo case-order is not implemented.
|
|
284
|
-
*/
|
|
285
|
-
xsltSort(input, template) {
|
|
286
|
-
const sort = [];
|
|
287
|
-
for (const c of template.childNodes) {
|
|
288
|
-
if (c.nodeType == constants_1.DOM_ELEMENT_NODE && this.isXsltElement(c, 'sort')) {
|
|
289
|
-
const select = this.xmlGetAttribute(c, 'select');
|
|
290
|
-
const expr = this.xPath.xPathParse(select);
|
|
291
|
-
const type = this.xmlGetAttribute(c, 'data-type') || 'text';
|
|
292
|
-
const order = this.xmlGetAttribute(c, 'order') || 'ascending';
|
|
293
|
-
sort.push({
|
|
294
|
-
expr,
|
|
295
|
-
type,
|
|
296
|
-
order
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
this.xPath.xPathSort(input, sort);
|
|
301
|
-
}
|
|
302
|
-
// Evaluates a variable or parameter and set it in the current input
|
|
303
|
-
// context. Implements xsl:variable, xsl:param, and xsl:with-param.
|
|
304
|
-
//
|
|
305
|
-
// @param override flag that defines if the value computed here
|
|
306
|
-
// overrides the one already in the input context if that is the
|
|
307
|
-
// case. I.e. decides if this is a default value or a local
|
|
308
|
-
// value. xsl:variable and xsl:with-param override; xsl:param doesn't.
|
|
309
|
-
xsltVariable(input, template, override) {
|
|
310
|
-
const name = this.xmlGetAttribute(template, 'name');
|
|
311
|
-
const select = this.xmlGetAttribute(template, 'select');
|
|
312
|
-
let value;
|
|
313
|
-
if (template.childNodes.length > 0) {
|
|
314
|
-
const root = (0, util_1.domCreateDocumentFragment)(template.ownerDocument);
|
|
315
|
-
this.xsltChildNodes(input, template, root);
|
|
316
|
-
value = new values_1.NodeSetValue([root]);
|
|
317
|
-
}
|
|
318
|
-
else if (select) {
|
|
319
|
-
value = this.xPath.xPathEval(select, input);
|
|
320
|
-
}
|
|
321
|
-
else {
|
|
322
|
-
value = new values_1.StringValue('');
|
|
323
|
-
}
|
|
324
|
-
if (override || !input.getVariable(name)) {
|
|
325
|
-
input.setVariable(name, value);
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
// Implements xsl:chose and its child nodes xsl:when and
|
|
329
|
-
// xsl:otherwise.
|
|
330
|
-
xsltChoose(input, template, output) {
|
|
331
|
-
for (const childNode of template.childNodes) {
|
|
332
|
-
if (childNode.nodeType != constants_1.DOM_ELEMENT_NODE) {
|
|
333
|
-
continue;
|
|
334
|
-
}
|
|
335
|
-
else if (this.isXsltElement(childNode, 'when')) {
|
|
336
|
-
const test = this.xmlGetAttribute(childNode, 'test');
|
|
337
|
-
if (this.xPath.xPathEval(test, input).booleanValue()) {
|
|
338
|
-
this.xsltChildNodes(input, childNode, output);
|
|
339
|
-
break;
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
else if (this.isXsltElement(childNode, 'otherwise')) {
|
|
343
|
-
this.xsltChildNodes(input, childNode, output);
|
|
344
|
-
break;
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
// Implements xsl:for-each.
|
|
349
|
-
xsltForEach(input, template, output) {
|
|
350
|
-
const select = this.xmlGetAttribute(template, 'select');
|
|
351
|
-
const nodes = this.xPath.xPathEval(select, input).nodeSetValue();
|
|
352
|
-
const sortContext = input.clone(nodes[0], 0, nodes);
|
|
353
|
-
this.xsltSort(sortContext, template);
|
|
354
|
-
for (let i = 0; i < sortContext.contextSize(); ++i) {
|
|
355
|
-
const ni = sortContext.nodelist[i];
|
|
356
|
-
this.xsltChildNodes(sortContext.clone(ni, i), template, output);
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
/**
|
|
360
|
-
* Traverses the template node tree. Calls the main processing
|
|
361
|
-
* function with the current input context for every child node of the
|
|
362
|
-
* current template node.
|
|
363
|
-
* @param input Normally the Expression Context.
|
|
364
|
-
* @param template The XSL-T definition.
|
|
365
|
-
* @param output The XML output.
|
|
366
|
-
*/
|
|
367
|
-
xsltChildNodes(input, template, output) {
|
|
368
|
-
// Clone input context to keep variables declared here local to the
|
|
369
|
-
// siblings of the children.
|
|
370
|
-
const context = input.clone();
|
|
371
|
-
for (let i = 0; i < template.childNodes.length; ++i) {
|
|
372
|
-
this.xsltProcessContext(context, template.childNodes[i], output);
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
/**
|
|
376
|
-
* Passes template text to the output. The current template node does
|
|
377
|
-
* not specify an XSL-T operation and therefore is appended to the
|
|
378
|
-
* output with all its attributes. Then continues traversing the
|
|
379
|
-
* template node tree.
|
|
380
|
-
* @param input In general the Expression Context.
|
|
381
|
-
* @param template The XSLT stylesheet or transformation.
|
|
382
|
-
* @param output The output.
|
|
383
|
-
* @param outputDocument The output document, if the case.
|
|
384
|
-
*/
|
|
385
|
-
xsltPassThrough(input, template, output, outputDocument) {
|
|
386
|
-
if (template.nodeType == constants_1.DOM_TEXT_NODE) {
|
|
387
|
-
if (this.xsltPassText(template)) {
|
|
388
|
-
let node = (0, util_1.domCreateTextNode)(outputDocument, template.nodeValue);
|
|
389
|
-
(0, util_1.domAppendChild)(output, node);
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
else if (template.nodeType == constants_1.DOM_ELEMENT_NODE) {
|
|
393
|
-
let node = (0, util_1.domCreateElement)(outputDocument, template.nodeName);
|
|
394
|
-
for (const a of template.attributes) {
|
|
395
|
-
if (a) {
|
|
396
|
-
const name = a.nodeName;
|
|
397
|
-
const value = this.xsltAttributeValue(a.nodeValue, input);
|
|
398
|
-
(0, util_1.domSetAttribute)(node, name, value);
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
(0, util_1.domAppendChild)(output, node);
|
|
402
|
-
this.xsltChildNodes(input, template, node);
|
|
403
|
-
}
|
|
404
|
-
else {
|
|
405
|
-
// This applies also to the DOCUMENT_NODE of the XSL stylesheet,
|
|
406
|
-
// so we don't have to treat it specially.
|
|
407
|
-
this.xsltChildNodes(input, template, output);
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
// Determines if a text node in the XSLT template document is to be
|
|
411
|
-
// stripped according to XSLT whitespace stipping rules.
|
|
412
|
-
//
|
|
413
|
-
// See [XSLT], section 3.4.
|
|
414
|
-
//
|
|
415
|
-
// TODO(mesch): Whitespace stripping on the input document is
|
|
416
|
-
// currently not implemented.
|
|
417
|
-
xsltPassText(template) {
|
|
418
|
-
if (!template.nodeValue.match(/^\s*$/)) {
|
|
419
|
-
return true;
|
|
420
|
-
}
|
|
421
|
-
let element = template.parentNode;
|
|
422
|
-
if (this.isXsltElement(element, 'text')) {
|
|
423
|
-
return true;
|
|
424
|
-
}
|
|
425
|
-
while (element && element.nodeType == constants_1.DOM_ELEMENT_NODE) {
|
|
426
|
-
const xmlspace = (0, util_1.domGetAttribute)(element, 'xml:space');
|
|
427
|
-
if (xmlspace) {
|
|
428
|
-
if (xmlspace == 'default') {
|
|
429
|
-
return false;
|
|
430
|
-
}
|
|
431
|
-
else if (xmlspace == 'preserve') {
|
|
432
|
-
return true;
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
element = element.parentNode;
|
|
436
|
-
}
|
|
437
|
-
return false;
|
|
438
|
-
}
|
|
439
|
-
// Evaluates an XSL-T attribute value template. Attribute value
|
|
440
|
-
// templates are attributes on XSL-T elements that contain XPath
|
|
441
|
-
// expressions in braces {}. The XSL-T expressions are evaluated in
|
|
442
|
-
// the current input context.
|
|
443
|
-
xsltAttributeValue(value, context) {
|
|
444
|
-
const parts = value.split('{');
|
|
445
|
-
if (parts.length == 1) {
|
|
446
|
-
return value;
|
|
447
|
-
}
|
|
448
|
-
let ret = '';
|
|
449
|
-
for (let i = 0; i < parts.length; ++i) {
|
|
450
|
-
const rp = parts[i].split('}');
|
|
451
|
-
if (rp.length != 2) {
|
|
452
|
-
// first literal part of the value
|
|
453
|
-
ret += parts[i];
|
|
454
|
-
continue;
|
|
455
|
-
}
|
|
456
|
-
const val = this.xPath.xPathEval(rp[0], context).stringValue();
|
|
457
|
-
ret += val + rp[1];
|
|
458
|
-
}
|
|
459
|
-
return ret;
|
|
460
|
-
}
|
|
461
|
-
// Wrapper function to access attribute values of template element
|
|
462
|
-
// nodes. Currently this calls he.decode because in some DOM
|
|
463
|
-
// implementations the return value of node.getAttributeValue()
|
|
464
|
-
// contains unresolved XML entities, although the DOM spec requires
|
|
465
|
-
// that entity references are resolved by te DOM.
|
|
466
|
-
xmlGetAttribute(node, name) {
|
|
467
|
-
// TODO(mesch): This should not be necessary if the DOM is working
|
|
468
|
-
// correctly. The DOM is responsible for resolving entities, not the
|
|
469
|
-
// application.
|
|
470
|
-
const value = (0, util_1.domGetAttribute)(node, name);
|
|
471
|
-
if (value) {
|
|
472
|
-
return he_1.default.decode(value);
|
|
473
|
-
}
|
|
474
|
-
return value;
|
|
475
|
-
}
|
|
476
|
-
// Implements xsl:copy-of for node-set values of the select
|
|
477
|
-
// expression. Recurses down the source node tree, which is part of
|
|
478
|
-
// the input document.
|
|
479
|
-
//
|
|
480
|
-
// @param {Node} dst the node being copied to, part of output document,
|
|
481
|
-
// @param {Node} src the node being copied, part in input document,
|
|
482
|
-
// @param {Document} dstDocument
|
|
483
|
-
xsltCopyOf(dst, src, dstDocument) {
|
|
484
|
-
if (src.nodeType == constants_1.DOM_DOCUMENT_FRAGMENT_NODE || src.nodeType == constants_1.DOM_DOCUMENT_NODE) {
|
|
485
|
-
for (let i = 0; i < src.childNodes.length; ++i) {
|
|
486
|
-
this.xsltCopyOf(dst, src.childNodes[i], dstDocument);
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
else {
|
|
490
|
-
const node = this.xsltCopy(dst, src, dstDocument);
|
|
491
|
-
if (node) {
|
|
492
|
-
// This was an element node -- recurse to attributes and
|
|
493
|
-
// children.
|
|
494
|
-
for (let i = 0; i < src.attributes.length; ++i) {
|
|
495
|
-
this.xsltCopyOf(node, src.attributes[i], dstDocument);
|
|
496
|
-
}
|
|
497
|
-
for (let i = 0; i < src.childNodes.length; ++i) {
|
|
498
|
-
this.xsltCopyOf(node, src.childNodes[i], dstDocument);
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
// Implements xsl:copy for all node types.
|
|
504
|
-
//
|
|
505
|
-
// @param {Node} dst the node being copied to, part of output document,
|
|
506
|
-
// @param {Node} src the node being copied, part in input document,
|
|
507
|
-
// @param {Document} dstDocument
|
|
508
|
-
// @return {Node|Null} If an element node was created, the element
|
|
509
|
-
// node. Otherwise null.
|
|
510
|
-
xsltCopy(dst, src, dstDocument) {
|
|
511
|
-
if (src.nodeType == constants_1.DOM_ELEMENT_NODE) {
|
|
512
|
-
let node = (0, util_1.domCreateElement)(dstDocument, src.nodeName);
|
|
513
|
-
(0, util_1.domAppendChild)(dst, node);
|
|
514
|
-
return node;
|
|
515
|
-
}
|
|
516
|
-
if (src.nodeType == constants_1.DOM_TEXT_NODE) {
|
|
517
|
-
let node = (0, util_1.domCreateTextNode)(dstDocument, src.nodeValue);
|
|
518
|
-
(0, util_1.domAppendChild)(dst, node);
|
|
519
|
-
}
|
|
520
|
-
else if (src.nodeType == constants_1.DOM_CDATA_SECTION_NODE) {
|
|
521
|
-
let node = (0, util_1.domCreateCDATASection)(dstDocument, src.nodeValue);
|
|
522
|
-
(0, util_1.domAppendChild)(dst, node);
|
|
523
|
-
}
|
|
524
|
-
else if (src.nodeType == constants_1.DOM_COMMENT_NODE) {
|
|
525
|
-
let node = (0, util_1.domCreateComment)(dstDocument, src.nodeValue);
|
|
526
|
-
(0, util_1.domAppendChild)(dst, node);
|
|
527
|
-
}
|
|
528
|
-
else if (src.nodeType == constants_1.DOM_ATTRIBUTE_NODE) {
|
|
529
|
-
(0, util_1.domSetAttribute)(dst, src.nodeName, src.nodeValue);
|
|
530
|
-
}
|
|
531
|
-
return null;
|
|
532
|
-
}
|
|
533
|
-
// Evaluates an XPath expression in the current input context as a
|
|
534
|
-
// match (see [XSLT] section 5.2, paragraph 1).
|
|
535
|
-
xsltMatch(match, context) {
|
|
536
|
-
const expr = this.xPath.xPathParse(match);
|
|
537
|
-
if (expr.steps.length <= 0) {
|
|
538
|
-
throw new Error("Error resolving XSLT match: Location Expression should have steps.");
|
|
539
|
-
}
|
|
540
|
-
const firstStep = expr.steps[0];
|
|
541
|
-
// Shortcut for the most common case.
|
|
542
|
-
if (expr.steps &&
|
|
543
|
-
!expr.absolute &&
|
|
544
|
-
expr.steps.length == 1 &&
|
|
545
|
-
firstStep.axis == 'child' &&
|
|
546
|
-
firstStep.predicate.length === 0) {
|
|
547
|
-
return firstStep.nodetest.evaluate(context).booleanValue();
|
|
548
|
-
}
|
|
549
|
-
if (expr.absolute && firstStep.axis !== 'self') {
|
|
550
|
-
// TODO: `xPathCollectDescendants()`?
|
|
551
|
-
const levels = match.split('/');
|
|
552
|
-
if (levels.length > 1) {
|
|
553
|
-
return this.absoluteXsltMatch(levels, expr, context);
|
|
554
|
-
}
|
|
555
|
-
}
|
|
556
|
-
return this.relativeXsltMatch(expr, context);
|
|
557
|
-
}
|
|
558
|
-
absoluteXsltMatch(levels, expr, context) {
|
|
559
|
-
// TODO: Not sure if this logic will be needed.
|
|
560
|
-
/* levels.shift();
|
|
561
|
-
const filteredChildren = this.selectChildNodes(levels, [context.node]);
|
|
562
|
-
if (filteredChildren.length <= 0) {
|
|
563
|
-
return false;
|
|
564
|
-
} */
|
|
565
|
-
const result = expr.evaluate(context.clone(context.node, 0, [context.node])).nodeSetValue();
|
|
566
|
-
if (result.length > 0) {
|
|
567
|
-
if (result.length === 1) {
|
|
568
|
-
context.node = result[0];
|
|
569
|
-
}
|
|
570
|
-
context.nodelist = result;
|
|
571
|
-
return true;
|
|
572
|
-
}
|
|
573
|
-
// TODO: Not sure if this logic will be needed.
|
|
574
|
-
/* for (let i = 0; i < filteredChildren.length; ++i) {
|
|
575
|
-
for (let j = 0; j < result.length; ++j) {
|
|
576
|
-
if (filteredChildren[i] == result[j]) {
|
|
577
|
-
return true;
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
} */
|
|
581
|
-
return false;
|
|
582
|
-
}
|
|
583
|
-
// TODO: Not sure if this logic will be needed.
|
|
584
|
-
selectChildNodes(levels, nodes) {
|
|
585
|
-
const currentLevel = levels.shift();
|
|
586
|
-
let currentNodes = [];
|
|
587
|
-
for (let node of nodes) {
|
|
588
|
-
let filteredChildren = node.childNodes.filter((c) => c.nodeName === currentLevel);
|
|
589
|
-
currentNodes = currentNodes.concat(filteredChildren);
|
|
590
|
-
}
|
|
591
|
-
if (levels.length === 0) {
|
|
592
|
-
return currentNodes;
|
|
593
|
-
}
|
|
594
|
-
return this.selectChildNodes(levels, currentNodes);
|
|
595
|
-
}
|
|
596
|
-
relativeXsltMatch(expr, context) {
|
|
597
|
-
let node = context.node;
|
|
598
|
-
while (node) {
|
|
599
|
-
const result = expr.evaluate(context.clone(node, 0, [node])).nodeSetValue();
|
|
600
|
-
for (let i = 0; i < result.length; ++i) {
|
|
601
|
-
if (result[i] == context.node) {
|
|
602
|
-
return true;
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
node = node.parentNode;
|
|
606
|
-
}
|
|
607
|
-
return false;
|
|
608
|
-
}
|
|
609
|
-
// Test if the given element is an XSLT element, optionally the one with the given name
|
|
610
|
-
isXsltElement(element, opt_wantedName) {
|
|
611
|
-
if (opt_wantedName && element.localName != opt_wantedName)
|
|
612
|
-
return false;
|
|
613
|
-
if (element.namespaceURI)
|
|
614
|
-
return element.namespaceURI === 'http://www.w3.org/1999/XSL/Transform';
|
|
615
|
-
return element.prefix === 'xsl'; // backwards compatibility with earlier versions of xslt-processor
|
|
616
|
-
}
|
|
617
|
-
}
|
|
618
|
-
exports.Xslt = Xslt;
|
|
619
|
-
//# sourceMappingURL=xslt.js.map
|
package/src/xslt.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xslt.js","sourceRoot":"","sources":["../../src/xslt.ts"],"names":[],"mappings":"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"}
|