XSLT | страница 73



Внутри шаблона создайте разметку HTML, начинающую требуемую таблицу, — такая прямая вставка разметки называется элементом буквального (literal) результата. Когда процессор встречает литерал, он копирует его в результирующее дерево:

>

>

> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

>  

>   

>    </b></code></p><p><code>><b>     The Planets Table</b></code></p><p><code>><b>    

>   

>   

>    

>     The Planets Table

>    

>   

>     

>     

>      

>      

>      

>     

>    

NameMassRadiusDay

>  

>  

> .

> .

> .

>

Однако это правило обрабатывает только элемент >, но не его дочерние элементы >, содержащие сами данные. В соответствии с правилами шаблона по умолчанию, элементы > будут обрабатываться, если установить шаблон для их выбора. Это, кстати, нежелательно, поскольку я хочу вставить результат обработки элементов > в определенное место в создаваемом файле HTML. Для этого мне потребуется применить элемент >.

Обработка дочерних узлов

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

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

В следующем примере мы поместим элемент > туда, куда нам требуется вставить данные из элементов > в таблицу HTML. Я также добавил новый шаблон для обработки элементов >:

>

>

> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

>  

>   

>    </code></p><p><code>>     The Planets Table</code></p><p><code>>   

>   

>   

>