Создание файлов XSLT
Для форматирования уведомлений модуль форматирования данных использует один или несколько файлов XSLT для каждого класса уведомлений. Файлы XSLT определяются для преобразования промежуточных XML-данных для каждого уведомления в форматированное сообщение.
Промежуточные XML-данные
Для каждого уведомления распространитель преобразует необработанные данные в XML-документ. Для всех уведомлений, за исключением сводных, этот XML-документ выглядит следующим образом:
<notifications>
<notification>
<FieldName>value</FieldName>
<FieldName>value</FieldName>
...
</notification>
</notifications>
Имена элементов в элементе notification отражают имена полей уведомления, заданных в определении приложения, а их значения равны значениям полей уведомления. Данные уведомления состоят из полей уведомления из таблицы уведомлений, а также из вычисляемых полей уведомления.
Например, распространитель может создать следующий XML-документ для уведомления об акциях:
<notifications>
<notification>
<StockSymbol>AWKS</StockSymbol>
<StockPrice>55.02</StockPrice>
</notification>
</notifications>
Для сводного уведомления к схеме добавляются дополнительные элементы notification:
<notifications>
<notification>
<FieldName>value</FieldName>
...
</notification>
<notification>
<FieldName>value</FieldName>
...
</notification>
</notifications>
Все значения в промежуточном XML-документе являются строками, а жесткий порядок следования полей уведомления в XML-документе отсутствует.
Значение любого поля в промежуточном XML-документе, представляющего дату или число, представлено в форме, соответствующей языковому стандарту уведомления. Например, дата для языкового стандарта «Английский (США)» имеет формат ММ/ДД/ГГГГ, в то время как дата для языкового стандарта «Японский (Япония)» имеет формат ГГГГ/ММ/ДД. Любые дополнительные переводы или преобразования содержимого полей уведомления остаются на усмотрение разработчика приложения.
Преобразования XSL
Службы Notification Services не проверяют файл XSLT и не поддерживают никакие ограничения на преобразования. Преобразование должно создавать корректный XML-документ или простой текст. Однако с помощью этих двух параметров можно создать документ практически любого типа.
При необходимости создания документа HTML для вышеприведенных данных уведомления создается следующее преобразование XSL:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="notifications">
<html>
<body>
<xsl:apply-templates/>
<i>Thank you for using SQL Server
Notification Services.</i>
</body>
</html>
</xsl:template>
<xsl:template match="notification">
<b><xsl:value-of select="StockSymbol" /></b>
is now trading at: <b>
$<xsl:value-of select="StockPrice" /></b><br/>
<br/><br/>
</xsl:template>
</xsl:stylesheet>
Создание простого текста
По умолчанию модуль форматирования данных XSLT создает корректный XML-документ. В результате он записывает следующие символы в качестве ссылок на сущности: > (>), < (<), ' ('), " (") и & (&).
Можно настроить этот модуль форматирования на создание текстового выходного файла, если включить элемент xsl:output в файл XSLT. В следующем примере показано преобразование XSL, возвращающее точное содержимое, отправленное ему, не выполняя никаких преобразований:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="*">
Today's Notifications:
<xsl:copy-of select = "." />
</xsl:template>
</xsl:stylesheet>
Рекомендации в отношении XSLT
Нижеприведенные рекомендации могут облегчить разработку файла XSLT.
В следующем коде показано создание файла XSLT, который просто возвращает промежуточный XML-документ, формируемый распространителем на основе необработанных данных уведомления. Используя это преобразование, модуль форматирования данных в реальности не выполняет преобразования и просто передает необработанные данные уведомления. Использование этого сквозного преобразования может облегчить проверку XML-документа и использование подходящих средств разработки для создания файлов XSLT:
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="*"> <xsl:copy-of select = "." /> </xsl:template> </xsl:stylesheet>
Используйте атрибут indent элемента xsl:output для автоматического структурирования XML-документа:
<xsl:output method="xml" indent="yes"/>
Если данные события содержат ссылки на сущности или фрагменты XML-документа, то установите атрибут DisableEscaping модуля форматирования данных равным true, чтобы модуль форматирования данных не производил излишних преобразований данных (например, преобразования & в &amp;). Дополнительные сведения об атрибуте DisableEscaping см. в разделе Определение модуля форматирования данных XSLT.
Если данные события содержат зарезервированные символы (например, &), то установите атрибут DisableEscaping модуля форматирования данных равным false, чтобы модуль форматирования данных преобразовывал зарезервированные символы в корректный XML-документ перед окончательным преобразованием. Дополнительные сведения см. в разделе XML Reserved Characters.
См. также
Основные понятия
Местоположения XSLT-файлов
Определение модуля форматирования данных XSLT
Настройка модулей форматирования данных
Другие ресурсы
Определение классов уведомлений
Определение приложений служб Notification Services