| <html> |
| <head> |
| <script src="../../../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]]); |
| |
| </script> |
| <script src="../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |