XML/XSL DocumentFragment 上的 evaluate()?
XML/XSL evaluate() on a DocumentFragment?
无论出于何种原因,如果我输入源 XML,评估就可以了。但是,如果我使用样式表转换 XML 并且它是一个 DocumentFragment,它会转到警报(“否”)。有人知道会发生什么吗?可能需要在 运行 评估之前转换 DocumentFragment?但是为了什么?非常感谢。
doc_trans=xsltProcessor.transformToFragment(doc_xml_source, document);
//var resultDoc=doc_xnl_source;
var resultDoc=doc_trans;
//var path = "/catalog/cd/title"
path="/html/body/table//row";
if (resultDoc.evaluate) {
alert("yes");
var nodes = rDoc.evaluate(path, resultDoc, null, XPathResult.ANY_TYPE, null);
var result = nodes.iterateNext();
while (result) {
alert(result.childNodes[0].nodeValue);
txt += result.childNodes[0].nodeValue + "<br>";
result = nodes.iterateNext();
}
} else {
alert("no");
var evaluator = new XPathEvaluator();
//DocumentFragment not a valid node type exception thrown here...
var resulty = evaluator.evaluate("//tbody/tr", resultDoc, null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
alert( resulty.snapshotLength);
}
尝试使用 XPathEvaluator.evaluate()
https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator/evaluate
我也试过将 DocumentFragment (resultDoc) 转换为 HTML 元素 (zz)...
var zz=document.createElement("div2");
zz.appendChild(resultDoc);
var evaluator = new XPathEvaluator();
var resulty = evaluator.evaluate("//tbody/tr", zz, null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
产生异常...“类型错误:无法读取未定义的 属性 'snapshotLength'”
DocumentFragment 与 NodeList 共享大部分方法,因此 querySelector 和 querySelectorAll、firstChild 等方法与生成的 DocumentFragment 相同。
我想查找转换文档 (A DocumentFragment) 中的行数,因此使用 querySelector 而不是求值...
var allDivs = resultDoc.querySelectorAll('tr');
alert(allDivs.length);
无论出于何种原因,如果我输入源 XML,评估就可以了。但是,如果我使用样式表转换 XML 并且它是一个 DocumentFragment,它会转到警报(“否”)。有人知道会发生什么吗?可能需要在 运行 评估之前转换 DocumentFragment?但是为了什么?非常感谢。
doc_trans=xsltProcessor.transformToFragment(doc_xml_source, document);
//var resultDoc=doc_xnl_source;
var resultDoc=doc_trans;
//var path = "/catalog/cd/title"
path="/html/body/table//row";
if (resultDoc.evaluate) {
alert("yes");
var nodes = rDoc.evaluate(path, resultDoc, null, XPathResult.ANY_TYPE, null);
var result = nodes.iterateNext();
while (result) {
alert(result.childNodes[0].nodeValue);
txt += result.childNodes[0].nodeValue + "<br>";
result = nodes.iterateNext();
}
} else {
alert("no");
var evaluator = new XPathEvaluator();
//DocumentFragment not a valid node type exception thrown here...
var resulty = evaluator.evaluate("//tbody/tr", resultDoc, null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
alert( resulty.snapshotLength);
}
尝试使用 XPathEvaluator.evaluate()
https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator/evaluate
我也试过将 DocumentFragment (resultDoc) 转换为 HTML 元素 (zz)...
var zz=document.createElement("div2");
zz.appendChild(resultDoc);
var evaluator = new XPathEvaluator();
var resulty = evaluator.evaluate("//tbody/tr", zz, null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE);
产生异常...“类型错误:无法读取未定义的 属性 'snapshotLength'”
DocumentFragment 与 NodeList 共享大部分方法,因此 querySelector 和 querySelectorAll、firstChild 等方法与生成的 DocumentFragment 相同。
我想查找转换文档 (A DocumentFragment) 中的行数,因此使用 querySelector 而不是求值...
var allDivs = resultDoc.querySelectorAll('tr');
alert(allDivs.length);