diff options
Diffstat (limited to 'LayoutTests/fast/xpath/py-dom-xpath/paths.html')
-rw-r--r-- | LayoutTests/fast/xpath/py-dom-xpath/paths.html | 261 |
1 files changed, 261 insertions, 0 deletions
diff --git a/LayoutTests/fast/xpath/py-dom-xpath/paths.html b/LayoutTests/fast/xpath/py-dom-xpath/paths.html new file mode 100644 index 0000000..e65289a --- /dev/null +++ b/LayoutTests/fast/xpath/py-dom-xpath/paths.html @@ -0,0 +1,261 @@ +<html> +<head> +<link rel="stylesheet" href="../../js/resources/js-test-style.css"> +<script src="../../js/resources/js-test-pre.js"></script> +<script src="../xpath-test-pre.js"></script> +</head> +<body> +<div id="console"></div> + +<script> +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<para id="1" />' + + '<div id="2" />' + + '<para id="3" />' + + '</doc>', + 'application/xml'); +test(doc, doc.documentElement, 'child::para', [doc.getElementsByTagName("para")[0], doc.getElementsByTagName("para")[1]]); +test(doc, doc.documentElement, 'child::*', [doc.documentElement.firstChild, doc.documentElement.firstChild.nextSibling, doc.documentElement.lastChild]); + +var doc = (new DOMParser).parseFromString( + '<doc>This is <i>some</i> text.</doc>', + 'application/xml'); +test(doc, doc.documentElement, 'child::text()', [doc.documentElement.firstChild, doc.documentElement.lastChild]); +test(doc, doc.documentElement, 'child::node()', [doc.documentElement.firstChild, doc.documentElement.firstChild.nextSibling, doc.documentElement.lastChild]); + +var doc = (new DOMParser).parseFromString( + '<doc name="foo" value="bar" />', + 'application/xml'); +test(doc, doc.documentElement, 'attribute::name', [doc.documentElement.getAttributeNode("name")]); +test(doc, doc.documentElement, 'attribute::*', [doc.documentElement.getAttributeNode("name"), doc.documentElement.getAttributeNode("value")]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<para id="1">' + + '<div id="2" />' + + '<para id="3" />' + + '</para>' + + '</doc>', + 'application/xml'); +test(doc, doc.documentElement, 'descendant::para', [doc.getElementsByTagName("para")[0], doc.getElementsByTagName("para")[1]]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<div id="1">' + + '<div id="2">' + + '<context />' + + '</div>' + + '<div id="3" />' + + '</div>' + + '<div id="4" />' + + '</doc>', + 'application/xml'); +test(doc, '//context', 'ancestor::div', [doc.getElementsByTagName("div")[0], doc.getElementsByTagName("div")[1]]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<div id="1">' + + '<div id="2" />' + + '<div id="3" />' + + '</div>' + + '<div id="4" />' + + '</doc>', + 'application/xml'); +test(doc, '//div[@id="3"]', 'ancestor-or-self::div', [doc.getElementsByTagName("div")[0], doc.getElementsByTagName("div")[2]]); + +var doc = (new DOMParser).parseFromString( + '<para id="0">' + + '<div id="1" />' + + '<para id="2">' + + '<para id="3" />' + + '</para>' + + '</para>', + 'application/xml'); +test(doc, doc.documentElement, 'descendant-or-self::para', [doc.getElementsByTagName("para")[0], doc.getElementsByTagName("para")[1], doc.getElementsByTagName("para")[2]]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<para />' + + '</doc>', + 'application/xml'); +test(doc, doc.documentElement, 'self::para', []); +test(doc, 'para', 'self::para', [doc.documentElement.firstChild]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<chapter><para id="1" /><para id="2" /></chapter>' + + '<chapter><section><para id="3" /></section></chapter>' + + '<para id="4" />' + + '</doc>', + 'application/xml'); +test(doc, doc.documentElement, 'child::chapter/descendant::para', [doc.getElementsByTagName("para")[0], doc.getElementsByTagName("para")[1], doc.getElementsByTagName("para")[2]]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<chapter><para id="1" /><para id="2" /></chapter>' + + '<section><para id="3" /><sub><para id="4" /></sub></section>' + + '<para id="4" />' + + '</doc>', + 'application/xml'); +test(doc, doc.documentElement, 'child::*/child::para', [doc.getElementsByTagName("para")[0], doc.getElementsByTagName("para")[1], doc.getElementsByTagName("para")[2]]); + +var doc = (new DOMParser).parseFromString( + '<doc><a><b><context /></b></a></doc>', + 'application/xml'); +test(doc, '//context', '/', [doc]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<para id="1"><context /></para>' + + '<para id="2" />' + + '</doc>', + 'application/xml'); +test(doc, '//context', '/descendant::para', [doc.getElementsByTagName("para")[0], doc.getElementsByTagName("para")[1]]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<item id="1">' + + '<context />' + + '<olist><item id="2" /></olist>' + + '</item>' + + '<olist><item id="3" /></olist>' + + '</doc>', + 'application/xml'); +test(doc, '//context', '/descendant::olist/child::item', [doc.getElementsByTagName("item")[1], doc.getElementsByTagName("item")[2]]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<div id="1" />' + + '<para id="2" />' + + '<para id="3" />' + + '</doc>', + 'application/xml'); +test(doc, doc.documentElement, 'child::para[position()=1]', [doc.getElementsByTagName("para")[0]]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<para id="1" />' + + '<para id="2" />' + + '<div id="3" />' + + '</doc>', + 'application/xml'); +test(doc, doc.documentElement, 'child::para[position()=last()]', [doc.getElementsByTagName("para")[1]]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<para id="1" />' + + '<para id="2" />' + + '<para id="3" />' + + '<div id="4" />' + + '</doc>', + 'application/xml'); +test(doc, doc.documentElement, 'child::para[position()=last()-1]', [doc.getElementsByTagName("para")[1]]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<div id="1" /><para id="2" />' + + '<div id="3" /><para id="4" />' + + '<div id="5" /><para id="6" />' + + '</doc>', + 'application/xml'); +test(doc, doc.documentElement, 'child::para[position()>1]', [doc.getElementsByTagName("para")[1], doc.getElementsByTagName("para")[2]]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<chapter id="1" /><chapter id="2" />' + + '<context />' + + '<chapter id="3" /><chapter id="4" />' + + '</doc>', + 'application/xml'); +test(doc, '//context', 'following-sibling::chapter[position()=1]', [doc.getElementsByTagName("chapter")[2]]); +test(doc, '//context', 'preceding-sibling::chapter[position()=1]', [doc.getElementsByTagName("chapter")[1]]); + +var xml = "<doc>" +for (i = 1; i <= 10; ++i) { + for (j = 1; j <= 10; ++j) + xml += '<figure id="' + ((i*10)+j) + '%d">'; + for (j = 1; j <= 10; ++j) + xml += '</figure>'; +} +xml += "</doc>" +var doc = (new DOMParser).parseFromString(xml, 'application/xml'); +test(doc, doc.documentElement, '/descendant::figure[position()=42]', [doc.getElementsByTagName("figure")[41]]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<chapter id="1" /><chapter id="2" /><chapter id="3" />' + + '<chapter id="4">' + + '<section id="4.1" /><section id="4.2" /><section id="4.3" />' + + '</chapter>' + + '<chapter id="5">' + + '<section id="5.1" /><section id="5.2" /><section id="5.3" />' + + '</chapter>' + + '</doc>', + 'application/xml'); +test(doc, doc.documentElement, '/child::doc/child::chapter[position()=5]/child::section[position()=2]', [doc.getElementsByTagName("section")[4]]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<para id="1" type="info" />' + + '<para id="2" type="warning" />' + + '<para id="3" type="warning" />' + + '<para id="4" type="warning" />' + + '<para id="5" type="error" />' + + '<para id="6" type="warning" />' + + '<para id="7" type="warning" />' + + '</doc>', + 'application/xml'); +test(doc, doc.documentElement, 'child::para[attribute::type="warning"][position()=5]', [doc.getElementsByTagName("para")[6]]); +test(doc, doc.documentElement, 'child::para[position()=5][attribute::type="warning"]', []); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<chapter id="1" />' + + '<chapter id="2"><title>Introduction</title></chapter>' + + '<chapter id="3"><title>Body</title></chapter>' + + '<chapter id="4">' + + '<title>Another</title>' + + '<title>Introduction</title>' + + '</chapter>' + + '</doc>', + 'application/xml'); +test(doc, doc.documentElement, "child::chapter[child::title='Introduction']", [doc.getElementsByTagName("chapter")[1], doc.getElementsByTagName("chapter")[3]]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<chapter id="1" />' + + '<chapter id="2"><title /></chapter>' + + '<chapter id="3"><title /><title /></chapter>' + + '</doc>', + 'application/xml'); +test(doc, doc.documentElement, "child::chapter[child::title]", [doc.getElementsByTagName("chapter")[1], doc.getElementsByTagName("chapter")[2]]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<chapter id="1" />' + + '<appendix id="2" />' + + '<para id="3" />' + + '<chapter id="4" />' + + '</doc>', + 'application/xml'); +test(doc, doc.documentElement, "child::*[self::chapter or self::appendix]", [doc.getElementsByTagName("chapter")[0], doc.getElementsByTagName("appendix")[0], doc.getElementsByTagName("chapter")[1]]); + +var doc = (new DOMParser).parseFromString( + '<doc>' + + '<chapter id="1" />' + + '<appendix id="2" />' + + '<para id="3" />' + + '<chapter id="4" />' + + '<para id="5" />' + + '</doc>', + 'application/xml'); +test(doc, doc.documentElement, "child::*[self::chapter or self::appendix][position()=last()]", [doc.getElementsByTagName("chapter")[1]]); + + +var successfullyParsed = true; + +</script> +<script src="../../js/resources/js-test-post.js"></script> +</body> +</html> |