
- •Серверы приложений. Веб-серверы
- •Лекция основные принципы технологии «клиент--сервер»
- •Меры безопасности
- •Установка iis
- •Контрольный список программного обеспечения iis
- •Процедура установки iis
- •Краткая история сервера apache.
- •Лекция основы web-программирования
- •1. Основы функционирования Интернета
- •2. Язык разметки html*
- •3. Каскадные таблицы стилей (css)
- •4. Язык сценариев JavaScript
- •5. Объектная модель dhtml
- •6. Объектная модель dom
- •7. Основы языка xml и объектная модель xml
- •Лекция Протоколы прикладного уровня
- •Что такое soap
- •Что такое веб-сервисы
- •Механизм взаимодействия клиента и сервера
- •Лекция Развитие языков разметки гипертекста
- •Структура html-документа
- •Лекция Описание html. Теги языка, их свойства.
- •Описание html
- •Лекция Фреймы. Формы
- •Html формы
- •Тэги Формы
- •Меню выбора в формах
- •Лекция Каскадные таблицы стилей
- •Id селекторы (id Selectors):
- •Лекция Характеристика и возможности xml
- •Как выглядит xml-документ?
- •Правила создания xml- документа
- •Конструкции языка
- •Элементы данных
- •Комментарии
- •Атрибуты
- •Cпециальные символы
- •Директивы анализатора
- •Просмотр xml - документов
- •Стилевые таблицы xsl
- •С чего начать
- •Структура xsl- таблиц
- •Правила xsl
- •Корневое правило
- •Отношения между элементами
- •Использование атрибутов элементов
- •Фильтрация элементов
- •Лекция Язык описания схемы данных xml (dtd)
- •Схемы данных
- •Лекция Объектная модель документа dom
- •Лекция Характеристика ис. Спецификация cgi. Расширения isapi. Серверы asp
- •Лекция Характеристика программного средства(php)
- •Лекция Основы языка ис. Синтаксис
- •Лекция Элементы и выражения языка
- •Элементы языка
- •Лекция Функции ис (php)
- •Функции отрезания пробелов
- •Базовые функции
- •Лекция Характеристика программного средства (JavaScript )
- •Лекция Синтаксис языка Java Script. Операторы. JavaScript Велечины, Имена, и Литералы
- •Выражения
- •Условные Выражения
- •Декремент (--)
- •Унарное вычитание (-)
- •Побитовые Операторы
- •Побитовые Логические операторы
- •Побитовые Операторы сдвига
- •Логические операторы
- •Вычисление...
- •Операторы Строки
- •Лекция Объекты JavaScript. Методы и события
- •Общие сведения
- •Понятие объектной модели применительно к JavaScript
- •Cвойства
- •События
- •Размещение кода на html-странице
- •Обработчики событий
- •Подстановки
- •Вставка (контейнер script - принудительный вызов интерпретатора)
- •Размещение кода внутри html-документа
- •Условная генерация html-разметки на стороне браузера
- •Иерархия классов
Использование атрибутов элементов
Применительно к <target-element> и <element> в правилах также могут использоваться специальные элементы <attribute>;, при помощи которых можно уточнять характеристики обрабатываемых элементов, задавая различные инструкции форматирования для одинаковых элементов с различными атрибутами. Указываемые в <attribute> параметры name и value определяют атрибут XML, который должен иметь текущий обрабатываемый элемент. Например, в следующем фрагменте все элементы с атрибутом free_lance ="true" будут выделены в выходном HTML- документе серым цветом
<rule>
<target-element type="author">
<attribute name="free_lance" value="true">
</target-element>
<p color="gray">
<children/>
</p>
</rule>
Фильтрация элементов
Одним из самых мощных средств XSL является возможность сортировки и выборки элементов, выделяемых из общего дерева элементов документа. Для этого используется элемент <select-elements>;, который заменяет <children/> в правилах, определяя те элементы, которые следует обработать в процессе рекурсивного обхода. Например, в следующем примере будут обработаны только элементы <author>:
<rule>
<target-element type=" staff"/>
<div>
<select-elements>
<target-element type = "author"/>
</select-elements>
</div>
</rule>
Элемент <select-elements> сам по себе не определяет шаблон форматирования, он лишь управляет работой анализатора, обозначая, подобно <children/>, "нижележащие" элементы. В приведенном примере элемент <author> должен быть расположен внутри элемента <staff>
Для того, чтобы в шаблоне выделить не только собственные дочерние элементы, но и дочерние элементы потомков, т.е. использовать несколько уровней вложенности, необходимо задать параметр from = "descendants". Если параметр имеет значение "children", что указывает на то, что выбор должен производится из списка собственных дочерних элементов, то атрибут from может опускаться, т.к. "children" является значением по умолчанию.
Правила стилей
В отличие от CSS, в XSL невозможно использование каскадных стилевых определений(т.е. нельзя использовать несколько правил для определения стиля одного того же элемента), т.к. такие ограничения вводит рекурсивный алгоритм работы программы - анализатора. Однако использование правил определения стиля(Style Rules) элемента позволяет каким-то образом скомпенсировать этот недостаток.
Для определения правила стилевого оформления необходимо воспользоваться элементом <style-rule>;, который используется точно также, как и <rule>, но инструкции, содержащиеся в нем, никак не влияют на структуру выходного документа. Поэтому все команды внутри этого правила должны описываться в рамках элемента <apply>. Вот как будет выглядеть, например, определение стиля для элемента <flower>rose</flower>;:
<style-rule>
<target-element type ="flower"/>
<apply color ="red"/>
</style-rule>
<rule>
<target-element type="flower"/>
<div font-style="italic";>
<children/>
</div>
</rule>
Если бы мы не определили правила <rule>, то в выходной документ не было бы помещено никакой информации, т.к. элемент <style-rule> только определяет параметры стилевого оформления, не предпринимая никаких других действий.
Также надо учитывать, что XSL- анализатор использует CSS для определения задаваемого правилами <style-rule> стиля в выходном HTML-документе, тем самым предоставляя нам возможность использования этого мощного средства при оформлении HTML-страниц После обработки приведенного в примере фрагмента в выходной документ будут помещены следующие элементы:
<div style= "font-style: italic; color : red;"
>rose</div>
Еще один пример:
Стили в формате CSS:
issue {font-weight=bold; color=blue;}
.new {font-weight=bold; color=red;}
Фрагмент XSL- документа, позволяющего использовать подобные стилевые определения:
<style-rule>
<target-element type ="issue"/>
<apply color ="blue"/>
</style-rule>
<style-rule>
<target-element type ="issue">
<attribute name ="class" value ="new" />
</target-element>
<apply color ="red"/>
</style-rule>
<rule>
<target-element type="issue"/>
<div>
<children/>
</div>
</rule>
Сценарии
Сценарии могут использоваться в документах XSL точно также, как и в HTML. Кроме того, сценарии, содержащиеся внутри XSL-документа и запускаемые броузером в процессе обработки документа могут динамически создавать HTML-документы, извлекая необходимую для этого информацию непосредственно из элементов XSL-документа.
Для написания сценариев XSL использует специальный скриптовый язык - ECMAScript. Однако в msxsl для этих целей можно применять Microsoft JavaScript,- язык, который объединил в себе некоторые элементы стандартного JavaScript и ECMAScript.
Вычисление выражений
Наиболее простым примером использования сценариев в XSL -документе является вычисление значений параметров описываемых элементов. Для этого надо просто поставить знак равенства в качестве первого символа параметра, что заставит XSL-процессор вычислить значение выражения(синтаксис этого выражения должен отвечать требованиям JavaScript). Например, после разбора этого правила:
<rule>
<target-element type="header">
<hr width="=100-20+'%'">
<children/>
<hr width="80%">
</rule>
, в выходном документе окажутся следующие инструкции:
<hr width=80%>
...
<hr width=80%>
Очень часто в правилах XSL необходимо использовать атрибуты описываемого в них элемента. Для этого мы должны воспользоваться методом getAttribute(), описанным в объектной модели XML (мы рассматриваем объектную модель XML-документов, предложенную Microsoft, список этих функций приведен в конце раздела). Т.к. каждому элементу XSL доступен указатель на соответствующий ему объект, сценарий может обращаться к внутренним функциям и свойствам этих элементов, при помощи которых и осуществляются необходимые действия.
В следующем фрагменте XML- документа определяется элемент <article>, в котором атрибут src используется для задания адреса файла, содержащего текст статьи.
<articles>
<article src="http://server/pages/article.html">
Bugs report</article>
</articles>
Для того, чтобы использовать этот атрибут в выходном HTML-документе, необходимо определить следующее правило:
<rule>
<target-element type="article">
<a href='=getAttribute("src")'>
<children/>
</a>
</rule>
После обработки этого фрагмента в выходной документ будет помещен элемент:
<a href="http://server/pages/article.html"
>Bugs report</a>
Выполнение инструкций
Другим способом помещения в выходной HTML- документ информации, являющейся результатом выполнения каких-либо операций JavaScript – сценариев является использовнаие инструкции <eval>;:
<rule>
<element type="articles">
<target-element type="article">
</element>
<tr><td><eval>childNumber(this)</eval></td><td>
<children/>
</td><tr>
</rule>
Метод childNumber в данном случае возвращает текущий номер дочернего элемента.
Определение функций и глобальных переменных
Аналогично тэгу <SCRIPT> в HTML, элемент <define-script> содержит функции и определения глобальных переменных. Обычно в XSL-документе определяется один элемент <define-script>, расположенный в самом начале.
<xsl>
<define-script>
<![CDATA[
var fontSize=12;
function getColor(elem){
return elem.children.item("color",0).text;
// Возвращает содержимое дочернего элемента <color>
}]]>
</define-script>
<rule>
<target-element type = "flower">
<div background-color="=getColor(this)";
font-size="=fontSize">
<children/>
</div>
</rule>
</xsl>
Если применить эти правила к такому фрагменту XML- документу:
<xml>
<flower>
rose
<color>red</color>
</flower>
, то на выходе HTML -документ будет содержать следующие элементы:
<div background-color="red"; font-size="12">
Необходимо отметить, что использование глобальных переменных в некоторых случаях может приводить к серьезным ошибкам, вызванным попытками одновременного к ним доступа. Поэтому рекомендуется использовать такие переменные только в качестве констант.