XSLT | страница 42



Вам следует также знать, что процессоры XSLT нормализуют текстовые узлы дерева, то есть объединяют два соседних текстовых узла в один большой текстовый узел для упрощения работы со структурой дерева документа. Поэтому, например, между двумя смежными узлами элементов никогда не будет более одного текстового узла, если изначально между этими узлами элементов располагался только текст.

В XSLT узлы могут иметь имена — так же, как дочерние узлы (child node) и родительские узлы (parent node). Иными словами, узлы элементов, атрибутов, пространств имен и инструкций обработки могут иметь имена; каждый узел элемента и корневой узел могут иметь дочерние узлы; и все узлы, за исключением корневого, имеют родителей.

Например, вот как выглядит рассмотренный нами ранее XML-документ в процессоре XSLT в виде дерева, состоящего из узлов:

>                            root

>                             |

>                    element:

>                             |

>                    element:

>                             |

>             |-------------------------------|

>             |                               |

>    element:                 element: <title></code></p><p><code>>             |                               |</code></p><p><code>>text: "Earthquakes for Lunch" text: "Volcanoes for Dinner"</code></p><p>Как видим, корневой узел расположен на самом верху дерева, за которым следует узел корневого элемента, ему соответствует элемент <code>><library></code>. За ним следует узел <code>><book></code>, у которого есть два дочерних узла <code>><title></code>. Эти два узла <code>><title></code> являются внуками элемента <code>><library></code>. Родители, дедушки и прадедушки узла, назад до и включая корневой узел, являются<i> предками</i> (ancestor) элемента. Узлы, производные от узла (дети, внуки, правнуки и т.д.), называются его<i> потомками </i>(descendant). Узлы одного уровня называются<i> братьями</i> (sibling).</p><p>При помощи этой модели в виде дерева можно представить любой хорошо сформированный XML-документ. Но XSLT не ограничивается работой только с такими документами. В хорошо сформированных документах должен существовать один элемент, содержащий все остальные, но в соответствии с рекомендацией XSLT это не обязательно. В XSLT корневой узел может иметь столько детей, сколько их может иметь элемент, — например, несколько узлов элементов или текстовых узлов. Таким образом, XSLT может работать с фрагментами документа, а не только с хорошо сформированными документами.</p><div class="cite"><p>ФРАГМЕНТЫ РЕЗУЛЬТИРУЮЩЕГО ДЕРЕВА </p><p>Помимо работы с фрагментами входного дерева, процессоры могут включать в вывод специальный тип данных, в XSLT 1.0 называемый фрагментом результирующего дерева (result tree fragment). Этот тип данных, однако, не был включен в рабочий проект XSLT 1.1 (см. главу 7), поэтому он, скорее всего, не будет входить в состав XSLT 2.0.</p></div></div></div></div> <!-- Yandex.RTB R-A-5585048-7 --> <div id="yandex_rtb_R-A-5585048-7" class="rkl"><div class="rasporka"></div></div> <script> window.yaContextCb.push(()=>{ Ya.Context.AdvManager.render({ "blockId": "R-A-5585048-7", "renderTo": "yandex_rtb_R-A-5585048-7" }) }) </script> </section> <section> <nav class="bottom-nav clr text-center ignore-select"> <ul class="pagination"> <li class=""> <a class="page-link" rel="prev" href="/r/76045?p_=41">« </a> </li> <li class=""> <a class="page-link" href="/r/76045?p_=41">41</a> </li> <li class="active"> <span class="page-link">42</span> </li> <li class=""> <a class="page-link" href="/r/76045?p_=43">43</a> </li> <li class=""> <a class="page-link" rel="next" href="/r/76045?p_=43"> »</a> </li> </ul> </nav> <div class="text-center"> <label for="reader-pagination-page mt-1"> Перейти на страницу </label> <select name="page" class="js-reader-pagination__page-select" data-target-path="/r/76045" > <option value="1" >1</option> <option value="2" >2</option> <option value="3" >3</option> <option value="4" >4</option> <option value="5" >5</option> <option value="6" >6</option> <option value="7" >7</option> <option value="8" >8</option> <option value="9" >9</option> <option value="10" >10</option> <option value="11" >11</option> <option value="12" >12</option> <option value="13" >13</option> <option value="14" >14</option> <option value="15" >15</option> <option value="16" >16</option> <option value="17" >17</option> <option value="18" >18</option> <option value="19" >19</option> <option value="20" >20</option> <option value="21" >21</option> <option value="22" >22</option> <option value="23" >23</option> <option value="24" >24</option> <option value="25" >25</option> <option value="26" >26</option> <option value="27" >27</option> <option value="28" >28</option> <option value="29" >29</option> <option value="30" >30</option> <option value="31" >31</option> <option value="32" >32</option> <option value="33" >33</option> <option value="34" >34</option> <option value="35" >35</option> <option value="36" >36</option> <option value="37" >37</option> <option value="38" >38</option> <option value="39" >39</option> <option value="40" >40</option> <option value="41" >41</option> <option value="42" selected>42</option> <option value="43" >43</option> <option value="44" >44</option> <option value="45" >45</option> <option value="46" >46</option> <option value="47" >47</option> <option value="48" >48</option> <option value="49" >49</option> <option value="50" >50</option> <option value="51" >51</option> <option value="52" >52</option> <option value="53" >53</option> <option value="54" >54</option> <option value="55" >55</option> <option value="56" >56</option> <option value="57" >57</option> <option value="58" >58</option> <option value="59" >59</option> <option value="60" >60</option> <option value="61" >61</option> <option value="62" >62</option> <option value="63" >63</option> <option value="64" >64</option> <option value="65" >65</option> <option value="66" >66</option> <option value="67" >67</option> <option value="68" >68</option> <option value="69" >69</option> <option value="70" >70</option> <option value="71" >71</option> <option value="72" >72</option> <option value="73" >73</option> <option value="74" >74</option> <option value="75" >75</option> <option value="76" >76</option> <option value="77" >77</option> <option value="78" >78</option> <option value="79" >79</option> <option value="80" >80</option> <option value="81" >81</option> <option value="82" >82</option> <option value="83" >83</option> <option value="84" >84</option> <option value="85" >85</option> <option value="86" >86</option> <option value="87" >87</option> <option value="88" >88</option> <option value="89" >89</option> <option value="90" >90</option> <option value="91" >91</option> <option value="92" >92</option> <option value="93" >93</option> <option value="94" >94</option> <option value="95" >95</option> <option value="96" >96</option> <option value="97" >97</option> <option value="98" >98</option> <option value="99" >99</option> <option value="100" >100</option> <option value="101" >101</option> <option value="102" >102</option> <option value="103" >103</option> <option value="104" >104</option> <option value="105" >105</option> <option value="106" >106</option> <option value="107" >107</option> <option value="108" >108</option> <option value="109" >109</option> <option value="110" >110</option> <option value="111" >111</option> <option value="112" >112</option> <option value="113" >113</option> <option value="114" >114</option> <option value="115" >115</option> <option value="116" >116</option> <option value="117" >117</option> <option value="118" >118</option> <option value="119" >119</option> <option value="120" >120</option> <option value="121" >121</option> <option value="122" >122</option> <option value="123" >123</option> <option value="124" >124</option> <option value="125" >125</option> <option value="126" >126</option> <option value="127" >127</option> <option value="128" >128</option> <option value="129" >129</option> <option value="130" >130</option> <option value="131" >131</option> <option value="132" >132</option> <option value="133" >133</option> <option value="134" >134</option> <option value="135" >135</option> <option value="136" >136</option> <option value="137" >137</option> <option value="138" >138</option> <option value="139" >139</option> <option value="140" >140</option> <option value="141" >141</option> <option value="142" >142</option> <option value="143" >143</option> <option value="144" >144</option> <option value="145" >145</option> <option value="146" >146</option> <option value="147" >147</option> <option value="148" >148</option> <option value="149" >149</option> <option value="150" >150</option> <option value="151" >151</option> <option value="152" >152</option> <option value="153" >153</option> <option value="154" >154</option> <option value="155" >155</option> <option value="156" >156</option> <option value="157" >157</option> <option value="158" >158</option> <option value="159" >159</option> <option value="160" >160</option> <option value="161" >161</option> <option value="162" >162</option> <option value="163" >163</option> <option value="164" >164</option> <option value="165" >165</option> <option value="166" >166</option> <option value="167" >167</option> <option value="168" >168</option> <option value="169" >169</option> <option value="170" >170</option> <option value="171" >171</option> <option value="172" >172</option> <option value="173" >173</option> <option value="174" >174</option> <option value="175" >175</option> <option value="176" >176</option> <option value="177" >177</option> <option value="178" >178</option> <option value="179" >179</option> <option value="180" >180</option> <option value="181" >181</option> <option value="182" >182</option> <option value="183" >183</option> <option value="184" >184</option> <option value="185" >185</option> <option value="186" >186</option> <option value="187" >187</option> <option value="188" >188</option> <option value="189" >189</option> <option value="190" >190</option> <option value="191" >191</option> <option value="192" >192</option> <option value="193" >193</option> <option value="194" >194</option> <option value="195" >195</option> <option value="196" >196</option> <option value="197" >197</option> <option value="198" >198</option> <option value="199" >199</option> <option value="200" >200</option> <option value="201" >201</option> <option value="202" >202</option> <option value="203" >203</option> <option value="204" >204</option> <option value="205" >205</option> <option value="206" >206</option> <option value="207" >207</option> <option value="208" >208</option> <option value="209" >209</option> <option value="210" >210</option> <option value="211" >211</option> <option value="212" >212</option> <option value="213" >213</option> <option value="214" >214</option> <option value="215" >215</option> <option value="216" >216</option> <option value="217" >217</option> <option value="218" >218</option> <option value="219" >219</option> <option value="220" >220</option> <option value="221" >221</option> <option value="222" >222</option> <option value="223" >223</option> <option value="224" >224</option> <option value="225" >225</option> <option value="226" >226</option> <option value="227" >227</option> <option value="228" >228</option> <option value="229" >229</option> <option value="230" >230</option> <option value="231" >231</option> <option value="232" >232</option> <option value="233" >233</option> <option value="234" >234</option> <option value="235" >235</option> <option value="236" >236</option> <option value="237" >237</option> <option value="238" >238</option> <option value="239" >239</option> <option value="240" >240</option> <option value="241" >241</option> <option value="242" >242</option> <option value="243" >243</option> <option value="244" >244</option> <option value="245" >245</option> <option value="246" >246</option> <option value="247" >247</option> <option value="248" >248</option> <option value="249" >249</option> <option value="250" >250</option> <option value="251" >251</option> <option value="252" >252</option> <option value="253" >253</option> <option value="254" >254</option> <option value="255" >255</option> <option value="256" >256</option> <option value="257" >257</option> <option value="258" >258</option> <option value="259" >259</option> <option value="260" >260</option> <option value="261" >261</option> <option value="262" >262</option> <option value="263" >263</option> <option value="264" >264</option> <option value="265" >265</option> <option value="266" >266</option> <option value="267" >267</option> <option value="268" >268</option> <option value="269" >269</option> <option value="270" >270</option> <option value="271" >271</option> <option value="272" >272</option> <option value="273" >273</option> <option value="274" >274</option> <option value="275" >275</option> <option value="276" >276</option> <option value="277" >277</option> <option value="278" >278</option> <option value="279" >279</option> <option value="280" >280</option> <option value="281" >281</option> <option value="282" >282</option> <option value="283" >283</option> <option value="284" >284</option> <option value="285" >285</option> <option value="286" >286</option> <option value="287" >287</option> <option value="288" >288</option> <option value="289" >289</option> <option value="290" >290</option> <option value="291" >291</option> <option value="292" >292</option> <option value="293" >293</option> <option value="294" >294</option> <option value="295" >295</option> <option value="296" >296</option> <option value="297" >297</option> <option value="298" >298</option> <option value="299" >299</option> <option value="300" >300</option> <option value="301" >301</option> <option value="302" >302</option> <option value="303" >303</option> <option value="304" >304</option> <option value="305" >305</option> <option value="306" >306</option> <option value="307" >307</option> <option value="308" >308</option> <option value="309" >309</option> <option value="310" >310</option> <option value="311" >311</option> <option value="312" >312</option> <option value="313" >313</option> <option value="314" >314</option> <option value="315" >315</option> <option value="316" >316</option> <option value="317" >317</option> <option value="318" >318</option> <option value="319" >319</option> <option value="320" >320</option> <option value="321" >321</option> <option value="322" >322</option> <option value="323" >323</option> <option value="324" >324</option> <option value="325" >325</option> <option value="326" >326</option> <option value="327" >327</option> <option value="328" >328</option> <option value="329" >329</option> <option value="330" >330</option> <option value="331" >331</option> <option value="332" >332</option> <option value="333" >333</option> <option value="334" >334</option> <option value="335" >335</option> <option value="336" >336</option> <option value="337" >337</option> <option value="338" >338</option> <option value="339" >339</option> <option value="340" >340</option> <option value="341" >341</option> <option value="342" >342</option> <option value="343" >343</option> <option value="344" >344</option> <option value="345" >345</option> <option value="346" >346</option> <option value="347" >347</option> <option value="348" >348</option> <option value="349" >349</option> </select> </div> </section> </div> </main> </div> <div class="sect sect-popular sect-related ignore-select"> <div class="sect-header fx-row fx-middle"> <div class="sect-title fx-1"> <i class="fa fa-puzzle-piece"></i> Книги, похожие на XSLT </div> </div> <div class="sect-content"> <div class="relbooks-block"> <div class="relbook-item"> <a class="top-in img-resp-vert" href="/b/199553" > <div class="top-desc fx-col fx-center anim"> <div class="top-title">Изучаем Python - Эрик Мэтиз</div> <div class="top-subtitle">Базы данных</div> </div> <img class="book_image lazyload" title="Читать онлайн XSLT - Стивен Хольцнер" data-src="/uploads/books/images/55/55b9cb77a4582342cef846016ede5b22c48d6887.jpg" alt="XSLT - Стивен Хольцнер"> <i class="lazyload-spinner"></i> </a> </div> <div class="relbook-item"> <a class="top-in img-resp-vert" href="/b/33189" > <div class="top-desc fx-col fx-center anim"> <div class="top-title">Сущность технологии СОМ. Библиотека программиста - Дональд Бокс</div> <div class="top-subtitle">Программирование</div> </div> <img class="book_image lazyload" title="Читать онлайн XSLT - Стивен Хольцнер" data-src="/uploads/books/images/12/127692e6fa800253996a01f28528ee57defe0da2.jpg" alt="XSLT - Стивен Хольцнер"> <i class="lazyload-spinner"></i> </a> </div> <div class="relbook-item"> <a class="top-in img-resp-vert" href="/b/84249" > <div class="top-desc fx-col fx-center anim"> <div class="top-title">Программист-прагматик. Путь от подмастерья к мастеру - Эндрю Хант, Дэвид А. Томас</div> <div class="top-subtitle">Программирование</div> </div> <img class="book_image lazyload" title="Читать онлайн XSLT - Стивен Хольцнер" data-src="/uploads/books/images/89/896c6f7673df333291ee5253fc3d8972b45a0a1d.jpg" alt="XSLT - Стивен Хольцнер"> <i class="lazyload-spinner"></i> </a> </div> <div class="relbook-item"> <a class="top-in img-resp-vert" href="/b/60642" > <div class="top-desc fx-col fx-center anim"> <div class="top-title">Эффективное использование STL - Скотт Мейерс</div> <div class="top-subtitle">Программирование</div> </div> <img class="book_image lazyload" title="Читать онлайн XSLT - Стивен Хольцнер" data-src="/uploads/books/images/9d/9dbbcdc9f6d331e7fb87ef54f3aaac4a4c6739b6.jpg" alt="XSLT - Стивен Хольцнер"> <i class="lazyload-spinner"></i> </a> </div> <div class="relbook-item"> <a class="top-in img-resp-vert" href="/b/71722" > <div class="top-desc fx-col fx-center anim"> <div class="top-title">Wi-Fi: Все, что Вы хотели знать, но боялись спросить - А К Щербаков</div> <div class="top-subtitle">Аппаратное обеспечение</div> </div> <img class="book_image lazyload" title="Читать онлайн XSLT - Стивен Хольцнер" data-src="/build/no_cover.f2a76ebc.jpg" alt="XSLT - Стивен Хольцнер"> <i class="lazyload-spinner"></i> </a> </div> <div class="relbook-item"> <a class="top-in img-resp-vert" href="/b/97441" > <div class="top-desc fx-col fx-center anim"> <div class="top-title">Как найти и скачать в Интернете любые файлы - Михаил Анатольевич Райтман</div> <div class="top-subtitle">Интернет</div> </div> <img class="book_image lazyload" title="Читать онлайн XSLT - Стивен Хольцнер" data-src="/uploads/books/images/c4/c42a2d5b617705f2701010d221e5c969b832321c.jpg" alt="XSLT - Стивен Хольцнер"> <i class="lazyload-spinner"></i> </a> </div> <div class="relbook-item"> <a class="top-in img-resp-vert" href="/b/90261" > <div class="top-desc fx-col fx-center anim"> <div class="top-title">HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов - Владимир Александрович Дронов</div> <div class="top-subtitle">Программирование</div> </div> <img class="book_image lazyload" title="Читать онлайн XSLT - Стивен Хольцнер" data-src="/uploads/books/images/00/0031953e5ce50860c67707986ec95038aaaaee4a.jpg" alt="XSLT - Стивен Хольцнер"> <i class="lazyload-spinner"></i> </a> </div> <div class="relbook-item"> <a class="top-in img-resp-vert" href="/b/99830" > <div class="top-desc fx-col fx-center anim"> <div class="top-title">Плачущий "Дракон" и проголодавшийся поезд - Георгий Далидович</div> <div class="top-subtitle">Интернет</div> </div> <img class="book_image lazyload" title="Читать онлайн XSLT - Стивен Хольцнер" data-src="/build/no_cover.f2a76ebc.jpg" alt="XSLT - Стивен Хольцнер"> <i class="lazyload-spinner"></i> </a> </div> </div> </div> </div> </article> </div> </div> </div> </main> <aside class="sidebar"> <div class="side-box search-wrap"> <form id="quicksearch" method="get" action="/p"> <div class="search-box"> <input id="story" name="text" minlength="3" placeholder="Поиск по сайту..." type="text" autocomplete="off"> <button type="submit" class="search-btn"><span class="fa fa-search"></span></button> </div> </form> </div> <ul class="side-box side-nav to-mob"> <li><a href="/books">Книги</a> <ul class="subcat"> <li><a href="/c/55">Боевики</a></li> <li><a href="/c/21">Военное</a></li> <li><a href="/c/6">Детская литература</a></li> <li><a href="/c/74">Классика</a></li> <li><a href="/c/50">ЛитРПГ</a></li> <li><a href="/c/36">Любовная фантастика</a></li> <li><a href="/c/4">Любовные романы</a></li> <li><a href="/c/47">Попаданцы</a></li> <li><a href="/c/35">Постапокалипсис</a></li> <li><a href="/c/5">Приключения</a></li> <li><a href="/c/63">Триллеры</a></li> <li><a href="/c/1">Фантастика</a></li> <li><a href="/c/31">Фэнтези</a></li> </ul> </li> </ul> </aside> </div> <footer class="footer"> <div class="footer-in wrap-center"> <div class="footer-one fx-row"> <div class="footer-col footer-col-desc"> <div class="footer-col-title title"> 2025 Литфонд | Читать книги онлайн </div> </div> <div class="footer-col"> <div class="footer-col-title title">Контакты</div> <ul class="footer-col-content"> <li>Для связи и правообладателям: <a href="mailto:libs.pbn@gmail.com">libs.pbn@gmail.com</a> </li> </ul> </div> </div> </div> </footer> </div> </div> <script src="/build/runtime.68aa92de.js" defer></script><script src="/build/site.38e640f9.js" defer></script> <!-- Yandex.Metrika counter --> <script type="text/javascript" > (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js", "ym"); ym(94963560, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true }); </script> <noscript><div><img src="https://mc.yandex.ru/watch/94963560" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> </body> </html>