Практикум 3.3. Язык XPath в действии
Рассмотрим XML-документ pr_3_3.xml:
Теперь давайте попробуем выделить некоторые части этого XML-документа и сформировать новый HTML-документ, содержащий эти части.
1. Наберите в блокноте код из примера pr_3_3.xml
2.
![]() |
Создайте следующую таблицу стилей pr_3_3.xsl:
В данной таблице я использовал функцию XSLT (name) и инструкцию <xsl:text>.
Функция «name ()» используется для получения имени узла. Инструкция <xsl:text> используется для воспроизведения текста в текущем месте вывода.
3.
Преобразуйте исходный XML-документ в pr_3_3.html, результат такого преобразования представлен на рис. 3.4.
Рис. 3.4. Выполненный файл pr_3_3.html
Используя возможности XPath, мы легко можем обращаться к любым частям XML-документа.
Практикум 4. Инструкция <xsl:for-each>
Инструкция <xsl:for-each> определяет шаблон, который применяется для каждого узла, выбранного с помощью атрибута select.
1.
![]() |
Используя пример pr_3_3.xml, создадим таблицу стилей с инструкцией <xsl:for-each>
В данной таблице используются оператор «//», который говорит процессору XSLT о том, что надо выбрать все элементы с именем «BBB». Использование этого оператора не рекомендуется в больших документах, так как увеличивается время обработки таких документов.
2.
![]() |
Преобразуйте 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> используется для сортировки данных, мы рассмотрим возрастающей и убывающей сортировки.
1.
![]() |
Наберите следующих код в текстовом редакторе и сохраните его под именем pr_3_5.xml.
2.
![]() |
Используя следующую таблицу pr_3_5_1.xsl отсортируем исходный данные XML-документа по возрастанию, преобразуйте исходный XML-документ в pr_3_5_1.html.
3. Теперь отсортируем наши данные по убыванию, для этого изменим значение атрибута order в инструкции <xsl:sort> на значение «descending», в конце концов получим следующую инструкцию:
<xsl:sort order= «descending» select=”.”/>
4. Сохраните таблицу стилей с новыми изменениями по именем pr_3_5_2.xsl и преобразуйте исходный документ pr_3_5.xml при помощи новой таблицы в pr_3_5_2.html.
5.
Сортировка может проводиться в текстовом режиме (pr_5_3_3.xml, pr_5_3_3.xsl) и цифровом режиме (pr_5_3_3.xml, pr_5_3_4.xsl)
![]() |
Pr_5_3_3.xml
Pr_5_3_3.xsl
![]() |
pr_3_5_4.xsl
Практикум 6. Инструкция <xsl:if> в действии.
Допустим необходимо проверит начинается ли значение элемента с цифры, если начинается необходимо вывести сообщение в виде «the text starts with a number».
1.
![]() |
Допустим, существует следующий XML-документ pr_3_6.xml:
2.
Создадим таблицу стилей используя инструкцию <xsl:if>:
3. В данном шаблоне используются функции (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> выполнена не будет.
4. Результат полученный после преобразования показан на рис 3.6.
![]() |
Рис. 3.6. Результат преобразования инструкцией <xsl:if>
Первый ASP-пример