Поделиться через


Создание файлов 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-документ. В результате он записывает следующие символы в качестве ссылок на сущности: > (&gt;), < (&lt;), ' (&apos;), " (&quot;) и & (&amp;).

Можно настроить этот модуль форматирования на создание текстового выходного файла, если включить элемент 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&apos;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; в &amp;amp;). Дополнительные сведения об атрибуте DisableEscaping см. в разделе Определение модуля форматирования данных XSLT.

  • Если данные события содержат зарезервированные символы (например, &), то установите атрибут DisableEscaping модуля форматирования данных равным false, чтобы модуль форматирования данных преобразовывал зарезервированные символы в корректный XML-документ перед окончательным преобразованием. Дополнительные сведения см. в разделе XML Reserved Characters.

См. также

Основные понятия

Местоположения XSLT-файлов
Определение модуля форматирования данных XSLT
Настройка модулей форматирования данных

Другие ресурсы

Определение классов уведомлений
Определение приложений служб Notification Services

Справка и поддержка

Получение помощи по SQL Server 2005