
- •Глава 1. Структура и синтаксис xml-документа 3
- •Глава 2. Дизайн документов xml 13
- •Глава 3. Xsl 23
- •Глава 5. Типы элементов ввода asp 45
- •Глава 6. Структуры управления asp 55
- •Глава 1. Структура и синтаксис xml-документа Практикум 1_1. Первый xml-документ
- •Практикум 1_2. Использование dtd для описания xml-документа
- •Практикум 1_3. Атрибуты
- •Практикум 1_4. Ссылки на символы
- •Практикум 1_5. Ссылки на сущности
- •Глава 1. Структура и синтаксис xml-документа 3
- •Глава 2. Дизайн документов xml 14
- •Глава 3. Xsl 25
- •Глава 5. Типы элементов ввода asp 48
- •Глава 6. Структуры управления asp 58
- •Глава 2. Дизайн документов xml Практикум 2.1. Визуализация первого xml-документа, используя внутреннюю таблицу стилей
- •Практикум 2. Визуализация первого xml-документа, используя внешнюю таблицу стилей
- •Практикум 3. Приоритеты между внешними и внутренними таблицами стилей
- •Практикум 3. Атрибуты
- •Практикум 4. Ссылки на символы
- •Практикум 5. Ссылки на сущности
- •Глава 1. Структура и синтаксис xml-документа 3
- •Глава 2. Дизайн документов xml 14
- •Глава 3. Xsl 26
- •Глава 5. Типы элементов ввода asp 48
- •Глава 6. Структуры управления asp 58
- •Глава 3. Xsl Практикум 3.1. Трансформация первого xml-документа
- •Практикум 3.3. Язык xPath в действии
- •Первый asp-пример Практикум Punctual Web Server
- •Как это работает
- •Практикум сценарий на стороне сервера
- •Как это работает
- •Практикум – vbScript-сценарий на стороне клиента
- •Как это работает
- •Порядок выполнения
- •Практикум – порядок выполнения
- •Глава 1. Структура и синтаксис xml-документа 3
- •Глава 2. Дизайн документов xml 14
- •Глава 3. Xsl 26
- •Глава 5. Типы элементов ввода asp 49
- •Глава 6. Структуры управления asp 59
- •Глава 5. Типы элементов ввода asp Практикум 5.1. Кнопки
- •Практикум 5.2. Текстовые поля
- •Практикум 5.3. Списки
- •Практикум 5.4. Переключатель radio button
- •Практикум 5.5. Флажок checkbox
- •Практикум 5.6. Создание анкеты приема на работу
- •Глава 1. Структура и синтаксис xml-документа 3
- •Глава 2. Дизайн документов xml 14
- •Глава 3. Xsl 26
- •Глава 5. Типы элементов ввода asp 49
- •Глава 6. Структуры управления asp 60
- •Глава 6. Структуры управления asp Практикум 6.1. Кнопки в действии
- •Практикум 6.2. Пример обработки некоторого текста
- •Практикум 6.3. Обработка списков, используя структуру перехода
- •Практикум 6.4. Обработка результатов переключателя radio button структурой перехода If Then Else
- •Практикум 6.5. Обработка элемента флажок checkbox
- •Практикум 6.6. Обработайте созданную вами анкету используя приемы рассмотренные в этом практикуме
Практикум 3.3. Язык xPath в действии
Р
<source> <AAA
id="a1" pos="start">
<BBB
id="b1"/>
<BBB
id="b2"/>
</AAA>
<AAA
id="a2">
<BBB
id="b3"/>
<BBB
id="b4"/>
<CCC
id="c1">
<DDD
id="d1"/>
</CCC>
<BBB
id="b5">
<CCC
id="c2"/>
</BBB>
</AAA>
</source>
Теперь давайте попробуем выделить некоторые части этого XML-документа и сформировать новый HTML-документ, содержащий эти части.
-
Наберите в блокноте код из примера pr_3_3.xml
-
С
<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="BBB">
<div style="color:purple">
<xsl:value-of select="name()"/>
<xsl:text> id=</xsl:text>
<xsl:value-of select="@id"/>
</div>
</xsl:template>
<xsl:template match="/source/AAA/CCC/DDD">
<p style="color:red">
<xsl:value-of select="name()"/>
<xsl:text> id=</xsl:text>
<xsl:value-of select="@id"/>
</p>
</xsl:template>
</xsl:stylesheet>
оздайте следующую таблицу стилей pr_3_3.xsl:
В данной таблице я использовал функцию XSLT (name) и инструкцию <xsl:text>.
Функция «name ()» используется для получения имени узла. Инструкция <xsl:text> используется для воспроизведения текста в текущем месте вывода.
-
П
реобразуйте исходный XML-документ в pr_3_3.html, результат такого преобразования представлен на рис. 3.4.
Рис. 3.4. Выполненный файл pr_3_3.html
Используя возможности XPath, мы легко можем обращаться к любым частям XML-документа.
Практикум 4. Инструкция <xsl:for-each>
Инструкция <xsl:for-each> определяет шаблон, который применяется для каждого узла, выбранного с помощью атрибута select.
-
И
<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="/">
<xsl:for-each select="//BBB">
<DIV style="color:red">
<xsl:value-of select="name()"/>
<xsl:text> id=</xsl:text>
<xsl:value-of select="@id"/>
</DIV>
</xsl:for-each>
<xsl:for-each select="source/AAA/CCC">
<DIV style="color:navy">
<xsl:value-of select="name()"/>
<xsl:text> id=</xsl:text>
<xsl:value-of select="@id"/>
</DIV>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
спользуя пример pr_3_3.xml, создадим таблицу стилей с инструкцией <xsl:for-each>
В данной таблице используются оператор «//», который говорит процессору XSLT о том, что надо выбрать все элементы с именем «BBB». Использование этого оператора не рекомендуется в больших документах, так как увеличивается время обработки таких документов.
-
П
реобразуйте XML-документ pr_3_3.xml с помощью таблицы pr_3_4.xsl в pr_3_4.html, результат такой обработки показан на рис. 3.5.
Рис. 3.5. Выполненный pr_3_4.html
Практикум 5. Инструкция <xsl:sort>
Инструкция <xsl:sort> используется для сортировки данных, мы рассмотрим возрастающей и убывающей сортировки.
-
Н
<source> <name>John</name> <name>Josua</name> <name>Charles</name> <name>Alice</name> <name>Martha</name> <name>George</name> </source>
аберите следующих код в текстовом редакторе и сохраните его под именем pr_3_5.xml.
-
И
<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="/">
<TABLE>
<xsl:for-each select="//name">
<xsl:sort order="ascending" select="."/>
<TR>
<TH>
<xsl:value-of select="."/>
</TH>
</TR>
</xsl:for-each>
</TABLE>
</xsl:template>
</xsl:stylesheet>
спользуя следующую таблицу pr_3_5_1.xsl отсортируем исходный данные XML-документа по возрастанию, преобразуйте исходный XML-документ в pr_3_5_1.html.
-
Теперь отсортируем наши данные по убыванию, для этого изменим значение атрибута order в инструкции <xsl:sort> на значение «descending», в конце концов получим следующую инструкцию:
<xsl:sort order= «descending» select=”.”/>
-
Сохраните таблицу стилей с новыми изменениями по именем pr_3_5_2.xsl и преобразуйте исходный документ pr_3_5.xml при помощи новой таблицы в pr_3_5_2.html.
-
С
<source>
<car id="11"/>
<car id="6"/>
<car id="105"/>
<car id="28"/>
<car id="9"/>
</source>
ортировка может проводиться в текстовом режиме (pr_5_3_3.xml, pr_5_3_3.xsl) и цифровом режиме (pr_5_3_3.xml, pr_5_3_4.xsl)
P
<xsl:stylesheet
version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template
match="/">
<TABLE>
<xsl:for-each
select="//car">
<xsl:sort data-type="text"
select="@id"/>
<TR>
<TH>
<xsl:text>Car-</xsl:text>
<xsl:value-of
select="@id"/>
</TH> </TR>
</xsl:for-each>
</TABLE>
</xsl:template> </xsl:stylesheet>
Pr_5_3_3.xsl
p
<xsl:stylesheet
version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template
match="/">
<TABLE>
<xsl:for-each
select="//car">
<xsl:sort
data-type="number" select="@id"/>
<TR>
<TH>
<xsl:text>Car-</xsl:text>
<xsl:value-of
select="@id"/>
</TH> </TR>
</xsl:for-each>
</TABLE>
</xsl:template> </xsl:stylesheet>
Практикум 6. Инструкция <xsl:if> в действии.
Допустим необходимо проверит начинается ли значение элемента с цифры, если начинается необходимо вывести сообщение в виде «the text starts with a number».
-
Д
<source>
<value>125</value>
<value>3aacc</value>
<value>qa111</value>
<value>9-12-45</value>
<value>0-12-45</value>
<value>Q6-88</value>
<value>5-ACD</value>
</source>
опустим, существует следующий XML-документ pr_3_6.xml:
-
С
<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="/">
<xsl:apply-templates select="//value"/>
</xsl:template>
<xsl:template match="value">
<P>
<xsl:value-of select="."/>
<xsl:if test="starts-with(translate(., '0123456789','1111111111'), '1')">
<xsl:text> (the text starts with a number)</xsl:text>
</xsl:if>
</P>
</xsl:template>
</xsl:stylesheet>
оздадим таблицу стилей используя инструкцию <xsl:if>:
-
В данном шаблоне используются функции (start-with, translate).
В общем случае функция start-with(“This is a string”, “This”) определяет, начинается ли строка “This is a string” с текста, который задается второй строкой “This”, если значение верно, то результат действия этой инструкции будет помещен в результирующее дерево, иначе нет.
Функция translate в данном случае действует следующим образом: берется значение элемента и сравнивается с маской «0123456789», если значение совпадает, то оно заменяется на «1» и дальше выполняется функция starts-with. Если первое значение элемента будет не цифра, тогда это значение не будет переведено в «1» и соответственно результатом работы функции start-with будет значение ложь и инструкция <xsl:if> выполнена не будет.
-
Результат полученный после преобразования показан на рис 3.6.
Р
ис.
3.6. Результат преобразования инструкцией
<xsl:if>