Пошаговое руководство. Отладка таблицы стилей XSLT
Шаги в данном пошаговом руководстве демонстрируют, как использовать XSLT-отладчик. Шаги включают просмотр переменных, задание точек останова и пошаговое прохождение кода. Отладчик позволяет выполнять код по одной строке за раз.
Чтобы подготовиться к изучению этого пошагового руководства, сначала скопируйте два файла примеров на локальный компьютер. Один из них — это таблица стилей, а другой — XML-файл, который будет использоваться в качестве входных данных для таблицы стилей. В этом пошаговом руководстве таблица стилей, которую мы используем, находит все книги, стоимость которых ниже средней стоимости книги.
Примечание.
Отладчик XSLT доступен только в выпусках Visual Studio Professional и Enterprise.
Запуск отладки
В меню Файл выберите Открыть>Файл.
Перейдите к файлу below-average.xsl и выберите Открыть.
Таблица стилей откроется в XML-редакторе.
Нажмите кнопку обзора (...) в поле Ввод окна свойств документа. (Если окно Свойства не отображается, щелкните правой кнопкой мыши в любом месте открытого файла в редакторе и выберите Свойства.)
Найдите файл books.xml и нажмите кнопку Открыть.
Таким образом задается файл исходного документа, используемого в XSLT-преобразовании.
Задайте точку останова в строке 12 файла below-average.xsl. Это можно сделать несколькими способами:
Щелкните поле редактора в строке 12.
Щелкните в любом месте строки 12, а затем нажмите клавишу F9.
Щелкните правой кнопкой мыши открывающий тег
xsl:if
и выберите Точка останова>Вставить точку останова.
В строке меню выберите XML>Запустить XSLT без отладки (или нажмите клавиши ALT+F5).
Запустится процесс отладки.
Позиция отладчика в редакторе будет находиться на элементе
xsl:if
таблицы. В редакторе откроется другой файл с именем below-average.xml. Это выходной файл, который будет заполняться по мере обработки каждого узла во входном файле books.xml.В нижней части окна Visual Studio отображаются окна Видимые, Локальные и Контрольное значение 1. В окне Локальные отображаются все локальные переменные и их текущие значения. Сюда относятся переменные, определенные в таблице стиля, а также переменные, используемые отладчиком для отслеживания узлов, которые в настоящий момент находятся в контексте.
Окно наблюдения
Мы добавим две переменные в окно Контрольное значение 1, чтобы можно было проверить их значения по мере обработки входного файла. (Можно также использовать окно Локальные для просмотра значений, если нужные переменные уже есть.)
В меню Отладка выберите Окна>Контрольные значения>Контрольное значение 1.
Окно Контрольное значение 1 станет видимым.
Введите
$bookAverage
в поле Имя и нажмите клавишу ВВОД.В поле Значение отобразится значение переменной
$bookAverage
.В следующей строке введите
self::node()
в поле Имя и нажмите клавишу ВВОД.self::node()
является выражением XPath, которое вычисляется до текущего узла контекста. Значениеself::node()
выражения XPath является первым узлом книги. Оно меняется по мере прохождения преобразования.Разверните узел
self::node()
, а затем разверните узел, значение которого равноprice
.Отобразится значение цены книги для текущего узла книги, и его можно легко сравнить со значением
$bookAverage
. Так как цена книги ниже средней, при продолжении процесса отладки условиеxsl:if
должно выполняться.
Пошаговое прохождение кода
Нажмите клавишу F5, чтобы продолжить.
Так как первый узел книги удовлетворяет условию
xsl:if
, узел книги добавляется в выходной файл below-average.xml. Отладчик продолжает выполнение, пока не будет вновь достигнут элементxsl:if
в таблице стилей. Теперь отладчик располагается на втором узле книги в файле books.xml.В окне Контрольное значение 1 значение
self::node()
меняется на второй узел книги. Проверив значение элемента цены, можно определить, что цена выше средней; таким образом, условиеxsl:if
не выполняется.Нажмите клавишу F5, чтобы продолжить.
Так как второй узел книги не удовлетворяет условию
xsl:if
, узел книги не добавляется в выходной файл below-average.xml. Отладчик продолжает выполнение, пока не будет вновь достигнут элементxsl:if
в таблице стилей. Теперь отладчик располагается на третьем узлеbook
в файле books.xml.В окне Контрольное значение 1 значение
self::node()
меняется на третий узел книги. Проверив значение элементаprice
, можно определить, что цена ниже средней. Таким образом, условиеxsl:if
должно выполняться.Нажмите клавишу F5, чтобы продолжить.
Так как условие
xsl:if
выполняется, третья книга добавляется в выходной файл below-average.xml. Все книги в XML-документе обработаны, отладчик прекращает выполнение.
Образцы файлов
В этом пошаговом руководстве используются следующие два файла.
below-average.xsl
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8"/>
<xsl:template match="/">
<xsl:variable name="bookCount" select="count(/bookstore/book)"/>
<xsl:variable name="bookTotal" select="sum(/bookstore/book/price)"/>
<xsl:variable name="bookAverage" select="$bookTotal div $bookCount"/>
<books>
<!--Books That Cost Below Average-->
<xsl:for-each select="/bookstore/book">
<xsl:if test="price < $bookAverage">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</books>
</xsl:template>
</xsl:stylesheet>
books.xml
<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
<book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>