snipt

Ctrl+h for KB shortcuts

JavaScript

Some simple javascript xpath examples

var canCElC = document.evaluate( '//a[@class="canc"]' ,document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );

for (var m = 0; m < canCElC.snapshotLength; m++){

	var im = canCElC.snapshotItem(m);

}

var mems = document.evaluate( '//a[contains(@href, "profile")][ not( @class = "skyblue" )]' ,document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );

for (var l = 0; l < mems.snapshotLength; l++){

	var cThis = mems.snapshotItem(l);

}	

var canHazPics = document.evaluate( '//a[@title= "Click for large image"]' ,document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue;

document.evaluate( 'html/body/div/div[7]/table/tbody/tr[2]/td[ not( contains(@id, "main") )]' ,document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );

for(...

//bravo's xpath function shortcut
// if you don't have $x already
function $x(p, c) {
	var i, r = [], x = document.evaluate(p, c || document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
	while(i=x.iterateNext()) r.push(i);
	return r;
}
//
// a function to change history days in links
//
// Usage: ChangeDays(n); where n is 1, 3, 7, 14, 30 or 60 - not sure what other values may do to poor Simones Site
//
function ChangeDays(d) {
	$x('//a[contains(@href, "/forum-user.cfm?id=")][not(contains(@href, "days="))]').forEach(function(e) {
		e.setAttribute('href', e.getAttribute('href').replace(/cfm\?id=/, 'cfm?days='+d+'&id='));
	});
}


// more bravo stuff

// getById
function $i(id) {
	return document.getElementById(id);
}
// xpath unordered nodes
function $xu(p, c) {
	var i, r = [], x = document.evaluate(p, c || document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
	while(i=x.iterateNext()) r.push(i);
	return r;
}
// xpath ordered nodes
function $xo(p, c) {
	var i, r = [], x = document.evaluate(p, c || document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
	while(i=x.iterateNext()) r.push(i);
	return r;
}
// xpath single first node
function $xf(p, c) {
	return document.evaluate(p, c || document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}
// xpath single any node
function $xa(p, c) {
	return document.evaluate(p, c || document, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue;
}
// getByCLASS(className, orderedFlag);
// untested!!
function $c(cls, o) {
	var fn=$xu;
	if(o) fn=$xo;
	return fn('//*[@class = "'+cls+'"' +
				' or contains(@class, " '+cls+' ")' +
				' or starts-with(@class, "' +cls+' ")' +
				' or substring(@class,string-length(@class)-'+cls.length+')=" '+cls+'"]');
}
// create Element
function $ec(type, attributes){
	var node = document.createElement(type);
	for (var attr in attributes) if (attributes.hasOwnProperty(attr)){
		node.setAttribute(attr, attributes[attr]);
	}
	return node;
}
// delete Element
function $ed(element) {
	element.parentNode.removeChild(element);
}
// insert element after
function $ea(newNode, node) {
	return node.parentNode.insertBefore(newNode, node.nextSibling);
}
// insert element before
function $eb(newNode, node) {
	return node.parentNode.insertBefore(newNode, node);
}
// make element first child of par
function $ef(newNode, par) {
	return par.insertBefore(newNode, par.firstChild);
}
// make element last child of par
function $el(newNode, par) {
	return par.appendChild(newNode);
}
https://snipt.net/embed/dd00818a9adcc64bbc0a2990d5cbdb44/
/raw/dd00818a9adcc64bbc0a2990d5cbdb44/
dd00818a9adcc64bbc0a2990d5cbdb44
js
JavaScript
107
2019-05-21T19:29:09
True
False
False
/api/public/snipt/5053/
some-simple-javascript-xpath-examples
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#L-1"> 1</a> <a href="#L-2"> 2</a> <a href="#L-3"> 3</a> <a href="#L-4"> 4</a> <a href="#L-5"> 5</a> <a href="#L-6"> 6</a> <a href="#L-7"> 7</a> <a href="#L-8"> 8</a> <a href="#L-9"> 9</a> <a href="#L-10"> 10</a> <a href="#L-11"> 11</a> <a href="#L-12"> 12</a> <a href="#L-13"> 13</a> <a href="#L-14"> 14</a> <a href="#L-15"> 15</a> <a href="#L-16"> 16</a> <a href="#L-17"> 17</a> <a href="#L-18"> 18</a> <a href="#L-19"> 19</a> <a href="#L-20"> 20</a> <a href="#L-21"> 21</a> <a href="#L-22"> 22</a> <a href="#L-23"> 23</a> <a href="#L-24"> 24</a> <a href="#L-25"> 25</a> <a href="#L-26"> 26</a> <a href="#L-27"> 27</a> <a href="#L-28"> 28</a> <a href="#L-29"> 29</a> <a href="#L-30"> 30</a> <a href="#L-31"> 31</a> <a href="#L-32"> 32</a> <a href="#L-33"> 33</a> <a href="#L-34"> 34</a> <a href="#L-35"> 35</a> <a href="#L-36"> 36</a> <a href="#L-37"> 37</a> <a href="#L-38"> 38</a> <a href="#L-39"> 39</a> <a href="#L-40"> 40</a> <a href="#L-41"> 41</a> <a href="#L-42"> 42</a> <a href="#L-43"> 43</a> <a href="#L-44"> 44</a> <a href="#L-45"> 45</a> <a href="#L-46"> 46</a> <a href="#L-47"> 47</a> <a href="#L-48"> 48</a> <a href="#L-49"> 49</a> <a href="#L-50"> 50</a> <a href="#L-51"> 51</a> <a href="#L-52"> 52</a> <a href="#L-53"> 53</a> <a href="#L-54"> 54</a> <a href="#L-55"> 55</a> <a href="#L-56"> 56</a> <a href="#L-57"> 57</a> <a href="#L-58"> 58</a> <a href="#L-59"> 59</a> <a href="#L-60"> 60</a> <a href="#L-61"> 61</a> <a href="#L-62"> 62</a> <a href="#L-63"> 63</a> <a href="#L-64"> 64</a> <a href="#L-65"> 65</a> <a href="#L-66"> 66</a> <a href="#L-67"> 67</a> <a href="#L-68"> 68</a> <a href="#L-69"> 69</a> <a href="#L-70"> 70</a> <a href="#L-71"> 71</a> <a href="#L-72"> 72</a> <a href="#L-73"> 73</a> <a href="#L-74"> 74</a> <a href="#L-75"> 75</a> <a href="#L-76"> 76</a> <a href="#L-77"> 77</a> <a href="#L-78"> 78</a> <a href="#L-79"> 79</a> <a href="#L-80"> 80</a> <a href="#L-81"> 81</a> <a href="#L-82"> 82</a> <a href="#L-83"> 83</a> <a href="#L-84"> 84</a> <a href="#L-85"> 85</a> <a href="#L-86"> 86</a> <a href="#L-87"> 87</a> <a href="#L-88"> 88</a> <a href="#L-89"> 89</a> <a href="#L-90"> 90</a> <a href="#L-91"> 91</a> <a href="#L-92"> 92</a> <a href="#L-93"> 93</a> <a href="#L-94"> 94</a> <a href="#L-95"> 95</a> <a href="#L-96"> 96</a> <a href="#L-97"> 97</a> <a href="#L-98"> 98</a> <a href="#L-99"> 99</a> <a href="#L-100">100</a> <a href="#L-101">101</a> <a href="#L-102">102</a> <a href="#L-103">103</a> <a href="#L-104">104</a> <a href="#L-105">105</a></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span id="L-1"><a name="L-1"></a><span class="kd">var</span> <span class="nx">canCElC</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">evaluate</span><span class="p">(</span> <span class="s1">&#39;//a[@class=&quot;canc&quot;]&#39;</span> <span class="p">,</span><span class="nb">document</span><span class="p">,</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">XPathResult</span><span class="p">.</span><span class="nx">ORDERED_NODE_SNAPSHOT_TYPE</span><span class="p">,</span> <span class="kc">null</span> <span class="p">);</span> </span><span id="L-2"><a name="L-2"></a> </span><span id="L-3"><a name="L-3"></a><span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">m</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">m</span> <span class="o">&lt;</span> <span class="nx">canCElC</span><span class="p">.</span><span class="nx">snapshotLength</span><span class="p">;</span> <span class="nx">m</span><span class="o">++</span><span class="p">){</span> </span><span id="L-4"><a name="L-4"></a> </span><span id="L-5"><a name="L-5"></a> <span class="kd">var</span> <span class="nx">im</span> <span class="o">=</span> <span class="nx">canCElC</span><span class="p">.</span><span class="nx">snapshotItem</span><span class="p">(</span><span class="nx">m</span><span class="p">);</span> </span><span id="L-6"><a name="L-6"></a> </span><span id="L-7"><a name="L-7"></a><span class="p">}</span> </span><span id="L-8"><a name="L-8"></a> </span><span id="L-9"><a name="L-9"></a><span class="kd">var</span> <span class="nx">mems</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">evaluate</span><span class="p">(</span> <span class="s1">&#39;//a[contains(@href, &quot;profile&quot;)][ not( @class = &quot;skyblue&quot; )]&#39;</span> <span class="p">,</span><span class="nb">document</span><span class="p">,</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">XPathResult</span><span class="p">.</span><span class="nx">ORDERED_NODE_SNAPSHOT_TYPE</span><span class="p">,</span> <span class="kc">null</span> <span class="p">);</span> </span><span id="L-10"><a name="L-10"></a> </span><span id="L-11"><a name="L-11"></a><span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">l</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">l</span> <span class="o">&lt;</span> <span class="nx">mems</span><span class="p">.</span><span class="nx">snapshotLength</span><span class="p">;</span> <span class="nx">l</span><span class="o">++</span><span class="p">){</span> </span><span id="L-12"><a name="L-12"></a> </span><span id="L-13"><a name="L-13"></a> <span class="kd">var</span> <span class="nx">cThis</span> <span class="o">=</span> <span class="nx">mems</span><span class="p">.</span><span class="nx">snapshotItem</span><span class="p">(</span><span class="nx">l</span><span class="p">);</span> </span><span id="L-14"><a name="L-14"></a> </span><span id="L-15"><a name="L-15"></a><span class="p">}</span> </span><span id="L-16"><a name="L-16"></a> </span><span id="L-17"><a name="L-17"></a><span class="kd">var</span> <span class="nx">canHazPics</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">evaluate</span><span class="p">(</span> <span class="s1">&#39;//a[@title= &quot;Click for large image&quot;]&#39;</span> <span class="p">,</span><span class="nb">document</span><span class="p">,</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">XPathResult</span><span class="p">.</span><span class="nx">FIRST_ORDERED_NODE_TYPE</span><span class="p">,</span> <span class="kc">null</span> <span class="p">).</span><span class="nx">singleNodeValue</span><span class="p">;</span> </span><span id="L-18"><a name="L-18"></a> </span><span id="L-19"><a name="L-19"></a><span class="nb">document</span><span class="p">.</span><span class="nx">evaluate</span><span class="p">(</span> <span class="s1">&#39;html/body/div/div[7]/table/tbody/tr[2]/td[ not( contains(@id, &quot;main&quot;) )]&#39;</span> <span class="p">,</span><span class="nb">document</span><span class="p">,</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">XPathResult</span><span class="p">.</span><span class="nx">ORDERED_NODE_SNAPSHOT_TYPE</span><span class="p">,</span> <span class="kc">null</span> <span class="p">);</span> </span><span id="L-20"><a name="L-20"></a> </span><span id="L-21"><a name="L-21"></a><span class="k">for</span><span class="p">(...</span> </span><span id="L-22"><a name="L-22"></a> </span><span id="L-23"><a name="L-23"></a><span class="c1">//bravo&#39;s xpath function shortcut</span> </span><span id="L-24"><a name="L-24"></a><span class="c1">// if you don&#39;t have $x already</span> </span><span id="L-25"><a name="L-25"></a><span class="kd">function</span> <span class="nx">$x</span><span class="p">(</span><span class="nx">p</span><span class="p">,</span> <span class="nx">c</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-26"><a name="L-26"></a> <span class="kd">var</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">r</span> <span class="o">=</span> <span class="p">[],</span> <span class="nx">x</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">evaluate</span><span class="p">(</span><span class="nx">p</span><span class="p">,</span> <span class="nx">c</span> <span class="o">||</span> <span class="nb">document</span><span class="p">,</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">XPathResult</span><span class="p">.</span><span class="nx">UNORDERED_NODE_ITERATOR_TYPE</span><span class="p">,</span> <span class="kc">null</span><span class="p">);</span> </span><span id="L-27"><a name="L-27"></a> <span class="k">while</span><span class="p">(</span><span class="nx">i</span><span class="o">=</span><span class="nx">x</span><span class="p">.</span><span class="nx">iterateNext</span><span class="p">())</span> <span class="nx">r</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span> </span><span id="L-28"><a name="L-28"></a> <span class="k">return</span> <span class="nx">r</span><span class="p">;</span> </span><span id="L-29"><a name="L-29"></a><span class="p">}</span> </span><span id="L-30"><a name="L-30"></a><span class="c1">//</span> </span><span id="L-31"><a name="L-31"></a><span class="c1">// a function to change history days in links</span> </span><span id="L-32"><a name="L-32"></a><span class="c1">//</span> </span><span id="L-33"><a name="L-33"></a><span class="c1">// Usage: ChangeDays(n); where n is 1, 3, 7, 14, 30 or 60 - not sure what other values may do to poor Simones Site</span> </span><span id="L-34"><a name="L-34"></a><span class="c1">//</span> </span><span id="L-35"><a name="L-35"></a><span class="kd">function</span> <span class="nx">ChangeDays</span><span class="p">(</span><span class="nx">d</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-36"><a name="L-36"></a> <span class="nx">$x</span><span class="p">(</span><span class="s1">&#39;//a[contains(@href, &quot;/forum-user.cfm?id=&quot;)][not(contains(@href, &quot;days=&quot;))]&#39;</span><span class="p">).</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-37"><a name="L-37"></a> <span class="nx">e</span><span class="p">.</span><span class="nx">setAttribute</span><span class="p">(</span><span class="s1">&#39;href&#39;</span><span class="p">,</span> <span class="nx">e</span><span class="p">.</span><span class="nx">getAttribute</span><span class="p">(</span><span class="s1">&#39;href&#39;</span><span class="p">).</span><span class="nx">replace</span><span class="p">(</span><span class="sr">/cfm\?id=/</span><span class="p">,</span> <span class="s1">&#39;cfm?days=&#39;</span><span class="o">+</span><span class="nx">d</span><span class="o">+</span><span class="s1">&#39;&amp;id=&#39;</span><span class="p">));</span> </span><span id="L-38"><a name="L-38"></a> <span class="p">});</span> </span><span id="L-39"><a name="L-39"></a><span class="p">}</span> </span><span id="L-40"><a name="L-40"></a> </span><span id="L-41"><a name="L-41"></a> </span><span id="L-42"><a name="L-42"></a><span class="c1">// more bravo stuff</span> </span><span id="L-43"><a name="L-43"></a> </span><span id="L-44"><a name="L-44"></a><span class="c1">// getById</span> </span><span id="L-45"><a name="L-45"></a><span class="kd">function</span> <span class="nx">$i</span><span class="p">(</span><span class="nx">id</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-46"><a name="L-46"></a> <span class="k">return</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="nx">id</span><span class="p">);</span> </span><span id="L-47"><a name="L-47"></a><span class="p">}</span> </span><span id="L-48"><a name="L-48"></a><span class="c1">// xpath unordered nodes</span> </span><span id="L-49"><a name="L-49"></a><span class="kd">function</span> <span class="nx">$xu</span><span class="p">(</span><span class="nx">p</span><span class="p">,</span> <span class="nx">c</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-50"><a name="L-50"></a> <span class="kd">var</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">r</span> <span class="o">=</span> <span class="p">[],</span> <span class="nx">x</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">evaluate</span><span class="p">(</span><span class="nx">p</span><span class="p">,</span> <span class="nx">c</span> <span class="o">||</span> <span class="nb">document</span><span class="p">,</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">XPathResult</span><span class="p">.</span><span class="nx">UNORDERED_NODE_ITERATOR_TYPE</span><span class="p">,</span> <span class="kc">null</span><span class="p">);</span> </span><span id="L-51"><a name="L-51"></a> <span class="k">while</span><span class="p">(</span><span class="nx">i</span><span class="o">=</span><span class="nx">x</span><span class="p">.</span><span class="nx">iterateNext</span><span class="p">())</span> <span class="nx">r</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span> </span><span id="L-52"><a name="L-52"></a> <span class="k">return</span> <span class="nx">r</span><span class="p">;</span> </span><span id="L-53"><a name="L-53"></a><span class="p">}</span> </span><span id="L-54"><a name="L-54"></a><span class="c1">// xpath ordered nodes</span> </span><span id="L-55"><a name="L-55"></a><span class="kd">function</span> <span class="nx">$xo</span><span class="p">(</span><span class="nx">p</span><span class="p">,</span> <span class="nx">c</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-56"><a name="L-56"></a> <span class="kd">var</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">r</span> <span class="o">=</span> <span class="p">[],</span> <span class="nx">x</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">evaluate</span><span class="p">(</span><span class="nx">p</span><span class="p">,</span> <span class="nx">c</span> <span class="o">||</span> <span class="nb">document</span><span class="p">,</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">XPathResult</span><span class="p">.</span><span class="nx">ORDERED_NODE_ITERATOR_TYPE</span><span class="p">,</span> <span class="kc">null</span><span class="p">);</span> </span><span id="L-57"><a name="L-57"></a> <span class="k">while</span><span class="p">(</span><span class="nx">i</span><span class="o">=</span><span class="nx">x</span><span class="p">.</span><span class="nx">iterateNext</span><span class="p">())</span> <span class="nx">r</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span> </span><span id="L-58"><a name="L-58"></a> <span class="k">return</span> <span class="nx">r</span><span class="p">;</span> </span><span id="L-59"><a name="L-59"></a><span class="p">}</span> </span><span id="L-60"><a name="L-60"></a><span class="c1">// xpath single first node</span> </span><span id="L-61"><a name="L-61"></a><span class="kd">function</span> <span class="nx">$xf</span><span class="p">(</span><span class="nx">p</span><span class="p">,</span> <span class="nx">c</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-62"><a name="L-62"></a> <span class="k">return</span> <span class="nb">document</span><span class="p">.</span><span class="nx">evaluate</span><span class="p">(</span><span class="nx">p</span><span class="p">,</span> <span class="nx">c</span> <span class="o">||</span> <span class="nb">document</span><span class="p">,</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">XPathResult</span><span class="p">.</span><span class="nx">FIRST_ORDERED_NODE_TYPE</span><span class="p">,</span> <span class="kc">null</span><span class="p">).</span><span class="nx">singleNodeValue</span><span class="p">;</span> </span><span id="L-63"><a name="L-63"></a><span class="p">}</span> </span><span id="L-64"><a name="L-64"></a><span class="c1">// xpath single any node</span> </span><span id="L-65"><a name="L-65"></a><span class="kd">function</span> <span class="nx">$xa</span><span class="p">(</span><span class="nx">p</span><span class="p">,</span> <span class="nx">c</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-66"><a name="L-66"></a> <span class="k">return</span> <span class="nb">document</span><span class="p">.</span><span class="nx">evaluate</span><span class="p">(</span><span class="nx">p</span><span class="p">,</span> <span class="nx">c</span> <span class="o">||</span> <span class="nb">document</span><span class="p">,</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">XPathResult</span><span class="p">.</span><span class="nx">ANY_UNORDERED_NODE_TYPE</span><span class="p">,</span> <span class="kc">null</span><span class="p">).</span><span class="nx">singleNodeValue</span><span class="p">;</span> </span><span id="L-67"><a name="L-67"></a><span class="p">}</span> </span><span id="L-68"><a name="L-68"></a><span class="c1">// getByCLASS(className, orderedFlag);</span> </span><span id="L-69"><a name="L-69"></a><span class="c1">// untested!!</span> </span><span id="L-70"><a name="L-70"></a><span class="kd">function</span> <span class="nx">$c</span><span class="p">(</span><span class="nx">cls</span><span class="p">,</span> <span class="nx">o</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-71"><a name="L-71"></a> <span class="kd">var</span> <span class="nx">fn</span><span class="o">=</span><span class="nx">$xu</span><span class="p">;</span> </span><span id="L-72"><a name="L-72"></a> <span class="k">if</span><span class="p">(</span><span class="nx">o</span><span class="p">)</span> <span class="nx">fn</span><span class="o">=</span><span class="nx">$xo</span><span class="p">;</span> </span><span id="L-73"><a name="L-73"></a> <span class="k">return</span> <span class="nx">fn</span><span class="p">(</span><span class="s1">&#39;//*[@class = &quot;&#39;</span><span class="o">+</span><span class="nx">cls</span><span class="o">+</span><span class="s1">&#39;&quot;&#39;</span> <span class="o">+</span> </span><span id="L-74"><a name="L-74"></a> <span class="s1">&#39; or contains(@class, &quot; &#39;</span><span class="o">+</span><span class="nx">cls</span><span class="o">+</span><span class="s1">&#39; &quot;)&#39;</span> <span class="o">+</span> </span><span id="L-75"><a name="L-75"></a> <span class="s1">&#39; or starts-with(@class, &quot;&#39;</span> <span class="o">+</span><span class="nx">cls</span><span class="o">+</span><span class="s1">&#39; &quot;)&#39;</span> <span class="o">+</span> </span><span id="L-76"><a name="L-76"></a> <span class="s1">&#39; or substring(@class,string-length(@class)-&#39;</span><span class="o">+</span><span class="nx">cls</span><span class="p">.</span><span class="nx">length</span><span class="o">+</span><span class="s1">&#39;)=&quot; &#39;</span><span class="o">+</span><span class="nx">cls</span><span class="o">+</span><span class="s1">&#39;&quot;]&#39;</span><span class="p">);</span> </span><span id="L-77"><a name="L-77"></a><span class="p">}</span> </span><span id="L-78"><a name="L-78"></a><span class="c1">// create Element</span> </span><span id="L-79"><a name="L-79"></a><span class="kd">function</span> <span class="nx">$ec</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">attributes</span><span class="p">){</span> </span><span id="L-80"><a name="L-80"></a> <span class="kd">var</span> <span class="nx">node</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="nx">type</span><span class="p">);</span> </span><span id="L-81"><a name="L-81"></a> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">attr</span> <span class="k">in</span> <span class="nx">attributes</span><span class="p">)</span> <span class="k">if</span> <span class="p">(</span><span class="nx">attributes</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">attr</span><span class="p">)){</span> </span><span id="L-82"><a name="L-82"></a> <span class="nx">node</span><span class="p">.</span><span class="nx">setAttribute</span><span class="p">(</span><span class="nx">attr</span><span class="p">,</span> <span class="nx">attributes</span><span class="p">[</span><span class="nx">attr</span><span class="p">]);</span> </span><span id="L-83"><a name="L-83"></a> <span class="p">}</span> </span><span id="L-84"><a name="L-84"></a> <span class="k">return</span> <span class="nx">node</span><span class="p">;</span> </span><span id="L-85"><a name="L-85"></a><span class="p">}</span> </span><span id="L-86"><a name="L-86"></a><span class="c1">// delete Element</span> </span><span id="L-87"><a name="L-87"></a><span class="kd">function</span> <span class="nx">$ed</span><span class="p">(</span><span class="nx">element</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-88"><a name="L-88"></a> <span class="nx">element</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nx">removeChild</span><span class="p">(</span><span class="nx">element</span><span class="p">);</span> </span><span id="L-89"><a name="L-89"></a><span class="p">}</span> </span><span id="L-90"><a name="L-90"></a><span class="c1">// insert element after</span> </span><span id="L-91"><a name="L-91"></a><span class="kd">function</span> <span class="nx">$ea</span><span class="p">(</span><span class="nx">newNode</span><span class="p">,</span> <span class="nx">node</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-92"><a name="L-92"></a> <span class="k">return</span> <span class="nx">node</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nx">insertBefore</span><span class="p">(</span><span class="nx">newNode</span><span class="p">,</span> <span class="nx">node</span><span class="p">.</span><span class="nx">nextSibling</span><span class="p">);</span> </span><span id="L-93"><a name="L-93"></a><span class="p">}</span> </span><span id="L-94"><a name="L-94"></a><span class="c1">// insert element before</span> </span><span id="L-95"><a name="L-95"></a><span class="kd">function</span> <span class="nx">$eb</span><span class="p">(</span><span class="nx">newNode</span><span class="p">,</span> <span class="nx">node</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-96"><a name="L-96"></a> <span class="k">return</span> <span class="nx">node</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nx">insertBefore</span><span class="p">(</span><span class="nx">newNode</span><span class="p">,</span> <span class="nx">node</span><span class="p">);</span> </span><span id="L-97"><a name="L-97"></a><span class="p">}</span> </span><span id="L-98"><a name="L-98"></a><span class="c1">// make element first child of par</span> </span><span id="L-99"><a name="L-99"></a><span class="kd">function</span> <span class="nx">$ef</span><span class="p">(</span><span class="nx">newNode</span><span class="p">,</span> <span class="nx">par</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-100"><a name="L-100"></a> <span class="k">return</span> <span class="nx">par</span><span class="p">.</span><span class="nx">insertBefore</span><span class="p">(</span><span class="nx">newNode</span><span class="p">,</span> <span class="nx">par</span><span class="p">.</span><span class="nx">firstChild</span><span class="p">);</span> </span><span id="L-101"><a name="L-101"></a><span class="p">}</span> </span><span id="L-102"><a name="L-102"></a><span class="c1">// make element last child of par</span> </span><span id="L-103"><a name="L-103"></a><span class="kd">function</span> <span class="nx">$el</span><span class="p">(</span><span class="nx">newNode</span><span class="p">,</span> <span class="nx">par</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-104"><a name="L-104"></a> <span class="k">return</span> <span class="nx">par</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">newNode</span><span class="p">);</span> </span><span id="L-105"><a name="L-105"></a><span class="p">}</span> </span></pre></div> </td></tr></table>
xpath