П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 184700 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 84975 раз(а).

Учебник HTML.
Просмотров 78723 раз(а).

Руководство по PHP5.
Просмотров 49301 раз(а).

Хостинг через призму DNS.
Просмотров 56888 раз(а).

Подборка текстов стандартных документов.
Просмотров 48595 раз(а).

Учебник PHP - Самоучитель
Просмотров 55220 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 56333 раз(а).

Внешние атаки...
Просмотров 45792 раз(а).

Учебник PHP.
Просмотров 40479 раз(а).

SSI в примерах.
Просмотров 30645 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Правила XSL

XSL- документ представляет собой совокупность правил построения, каждое из которых выделено в отдельный блок, ограниченный тэгами <rule> и </rule>;. Правила определяют шаблоны, по которым каждому элементу XML ставится в соответствие последовательность HTML- тэгов, т.е. внутри них содержатся инструкции, определяющие элементы XML- документа и тэги форматирования, применяемые к ним.

Элементы XML, к которым будет применяться форматирование, обозначаются в XSL дескриптором <target-element/>;. Для указания элемента с конкретным названием (название элемента определяется тэгами, его обозначающими), т.е. определения класса элемента, можно использовать атрибут type="<имя_элемента>"

Вот пример простейшего XSL-документа, определяющего форматирование для фрагмента <flower>rose</flower> :

<xsl>
<rule>
<target-element type="flower"/>
<p color="red" font-size="12">
<children/>
</p>
</rule>
</xsl>

Уже на этом примере можно проследить особенность использования стилевых таблиц: в любых правилах при помощи соответствующих элементов декларативно задается область, которая определяет фрагмент XML-документа, как мы чуть позже увидим, программа-анализатор заново проходит все элементы, начиная с текущего, всякий раз, когда в структуре XML- документа обнаруживаются новые вложенные элементы.

Инструкция <target-element> указывает на то, что данное правило определяет элемент. Параметром type="flower" задается название XML-элемента, для которого будет использоваться это правило. Программа-конвертор будет использовать HTML-тэги, помещенные внутри блока <rule></rule> для форматирования XML-элемента, которому "предназначался" текущий блок. В том случае, если для какого-то элемента XML шаблон не определяется, в выходной документ будут добавлены тэги форматирования по умолчанию (например, <DIV></DIV> )

Процесс разбора XSL-правил является рекурсивным, т.е. если у элемента есть дочерние элементы, то программа будет искать определения этих элементов, расположенных "глубже" в дереве документа. Указанием на то, что необходимо повторить процесс разбора XML документа, теперь уже для дочерних элементов, является инструкция <children/>. Дойдя до нее, анализатор выберет из иерархического дерева XML- элементов нужную ветвь и найдет в XSL-шаблонах правила, определяющие форматирование этих нижележащих элементов. В том случае, если вместо <children> мы укажем инструкцию <empty/>;, программа закончит движение по данной ветви и возвратится назад, в родительское правило. При этом текущее правило никакой информации в выходном HTML-документе изменять не будет, т.к. <empty/> в данном случае означает, что содержимое элемента отсутствует.

Если в одном правиле <target-element> используется несколько раз, то инструкции по форматированию будут распространены на все описываемые внутри него XML-элементы, т.е. можно задавать единый шаблон форматирования для нескольких элементов одновременно:

<xsl>
<rule>
<target-element type="item1"/>
<target-element type="item2"/>
<target-element type="item3"/>
<hr>
<children/>
<hr>
</rule>
</xsl>

Ниже приведен пример более сложного XSL- описания, некоторые фрагменты которого будут пояснены позже.

XML-документ:

<?XML Version="1.0"?>
<documents>
<books>
<book id="Book1">
<title>Макроэномические показатели экономики Римской Империи в период
ее расцвета</title>
<author>Иван Петров</author>
<date>21.08.98</date>
</book>
<book id="Book2">
<title>Цветоводство и животноводство. Практические советы</title>
<author>Петр Сидоров</author>
<date>10.10.98</date>
</book>
</books>
<articles>
<article id="Article1">
<author>Петр Иванов</author>
<title>Влияние повышения тарифов оплаты за телефон на продолжительность
жизни населения</title>
<date>12.09.98</date>
</article>
</articles>
</documents>

Содержимое XSL-документа:

<xsl>
  <rule>
    <root/>      
    <HTML>       
    <BODY bgcolor="white">
    <center><hr width="80%"/><b>Library</b><hr width="80%"/><br/> 
    <table width="80%" border="2">
    <children/>  
    </table></center>
    </BODY>
    </HTML>	   
  </rule>
    <rule>
	 <element type="book">
	    <target-element type="author"/>
             </element>
            <td align="center">
	    <p color="red" font-size="14"> <b> 
<children/> 
</b></p></td>
    </rule>
    <rule>
	 <element type="article">
	    <target-element type="author"/>
         </element>
            <td align="center">
	    <p color="red" font-size="14" font-style="italic"><children/></p></td>
    </rule>
    <rule>
	    <target-element type="book"/>
            <tr><children/></tr>
    </rule>
    <rule>
	    <target-element type="article"/>
            <tr><children/></tr>
    </rule>
    <rule>
	    <target-element/>
            <td align="center"><p><children/></p></td>
    </rule>
    <rule>
	    <target-element type="books"/>
            <tr><td colspan="3" bgcolor="silver" >Books</td></tr>
            <children/>
    </rule>
    <rule>
	    <target-element type="articles"/>
            <tr><td colspan="3" bgcolor="silver" >Articles</td></tr>
            <children/>
    </rule>
</xsl>

[Назад] [Содержание] [Вперед]



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту: