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


Реализация поведения по выбору в классе XslTransform

Обновлен: November 2007

5zxhf5k9.alert_note(ru-ru,VS.90).gifПримечание.

Класс XslTransform в версии .NET Framework, версия 2.0 устарел. Можно выполнять XSLT-преобразование, используя класс XslCompiledTransform. Дополнительные сведения см. в разделах Использование класса XslCompiledTransform и Миграция с класса XslTransform.

Поведение, реализуемое по усмотрению разработчика, определяется как один из возможных вариантов поведения, описанных в рекомендации W3C по преобразованиям XSL (XSLT) версии 1.0 (www.w3.org/TR/xslt), для которых поставщик реализации может выбрать один из возможных режимов обработки ситуации. Например, раздел 7.3 рекомендации W3C, «Создание инструкций по обработке», определяет, что, если при создании экземпляра содержимого xsl:processing-instruction создаются узлы, отличные от текстовых, это ошибка. В некоторых случаях рекомендации W3C указывают, какое решение следует принять, если обработчик решает провести восстановление после ошибки. Для проблемы, приведенной в разделе 7.3, W3C заявляет, что реализация может устранять эту ошибку, игнорируя узлы и их содержимое.

Поэтому в приведенной ниже таблице для всех разрешенных W3C ситуаций, где поведение оставлено на усмотрение разработчика, описывается поведение, реализуемое по усмотрению разработчика, реализованное для класса XslTransform в среде .NET Framework, и указывается, в каком разделе рекомендаций W3C по XSLT 1.0 обсуждается эта проблема.

Проблема

Поведение

Раздел

Текстовый узел соответствует как xsl:strip-space, так и xsl:preserve-space.

Восстановление

3.4

Исходный узел соответствует более одному правилу шаблона.

Восстановление

5.5

Объявляется URI-код пространства имен, который будет служить псевдонимом для нескольких URI-кодов пространств имен с одинаковым приоритетом импорта.

Восстановление

7.1.1

Атрибут имени в элементах xsl:attribute и xsl:element, созданных из шаблона значения атрибута, не является допустимым полным именем (QName).

Вызов исключения

7.1.2 и 7.1.3

Добавление атрибута к элементу после того, как к узлу элемента уже были добавлены дочерние узлы.

Восстановление

7.1.3

Добавление атрибута к любому другому объекту, кроме узла элемента.

Восстановление

7.1.3

Созданный экземпляр содержимого элемента xsl:attribute не является текстовым узлом.

Восстановление

7.1.3

У двух наборов атрибутов совпадает и приоритет импорта, и развернутое имя. Один атрибут у двух наборов совпадает, и нет другого набора атрибутов с более высоким приоритетом, который содержал бы атрибут с таким же именем.

Восстановление

7.1.4

Атрибут имени xsl:processing-instruction не содержит одновременно имени без двоеточий (NCName) и цели инструкции по обработке.

Восстановление

7.3

При создании экземпляра содержимого xsl:processing-instruction создаются узлы, отличные от текстовых.

Восстановление

7.3

Результаты создания экземпляра содержимого xsl:processing-instruction содержат строку «?>».

Восстановление

7.3

Результаты создания экземпляра содержимого xsl:comment содержат строку «--» или заканчиваются символом «-».

Восстановление

7.4

При создании экземпляра содержимого xsl:comment создаются узлы, отличные от текстовых.

Восстановление

7.4

Шаблон внутри привязывающегося к переменной элемента возвращает узел атрибута или узел пространства имен.

Восстановление

11.2

Ошибка при извлечении ресурса по URI-идентификатору, переданного в функцию документа.

Вызов исключения

12.1

URI-ссылка в функции документа содержит идентификатор фрагмента, и при обработке этого идентификатора произошла ошибка.

Вызов исключения

12.1

Существует несколько атрибутов с одинаковым именем, не совпадающим с атрибутом cdata-section-elements в элементе xls:output, и у этих атрибутов одинаковый приоритет импорта.

Восстановление

16

Процессор не поддерживает кодировку символов, заданную атрибутом encoding элемента xsl:output.

Восстановление

16.1

Атрибут disable-output-escaping используется для текстового узла, и этот текстовый узел используется для создания объекта, который не является текстовым узлом в результирующем дереве.

Атрибут disable-output-escaping не учитывается

16.4

Преобразование фрагмента дерева результатов в число или строку, если этот фрагмент содержит текстовый узел с включенным экранированием выходных данных.

Не учитывается

16.4

Экранирование выходных данных отключено для символов, которые невозможно представить в кодировке, используемой обработчиком XSLT для выходных данных.

Не учитывается

16.4

Добавление узла пространства имен к элементу после того, как к этому элементу добавлены дочерние элементы или атрибуты.

Восстановление

Поправка e25

Элемент xsl:number имеет значение NaN, бесконечность или число меньше 0,5.

Восстановление

Поправка e24

Второй аргумент node-set функции документа пуст, и URI-ссылка является относительной.

Восстановление

Поправка e14

Разделы из поправок можно найти в поправках к спецификации рекомендации W3C по XSLT версии 1.0 по адресу www.w3.org/1999/11/REC-xslt-19991116-errata.

Определяемое пользователем поведение реализации

Некоторые виды поведения уникальны для реализации класса XslTransform. В данном разделе обсуждаются особенности реализации функции xsl:sort конкретным поставщиком и дополнительные функции, поддерживаемые классом XslTransform.

xsl:sort

Рекомендация W3C по XSLT 1.0 содержит некоторые замечания по использованию преобразований для сортировки. Они перечислены ниже.

  • Два обработчика XSLT могут быть подобны, но при этом по-разному выполнять сортировку.

  • Не все обработчики XSLT поддерживают одинаковый набор языков.

  • Что касается языков, различные обработчики могут по-разному проводить обработку для конкретного языка, не указанного в элементе xsl:sort.

В таблице показано поведение при сортировке, реализованное для каждого типа данных в реализации преобразования платформы .NET Framework с помощью класса XslTransform.

Тип данных

Поведение при сортировке

Текстовый

Данные сортируются методом среды CLR String.Compare с учетом языкового стандарта культуры. Для типа данных «text» сортировка, реализованная в классе XslTransform, идентична сравнению строк в среде CLR.

Числовой

Числовые значения обрабатываются как числа языка XPath и сортируются в соответствии со структурой, приведенной в разделе 3.5 рекомендаций W3C по XPath версии 1.0 (www.w3.org/TR/xpath.html#numbers).

Поддерживаемые дополнительные функции

В следующей таблице перечислены дополнительные функции обработчика XSLT, реализованные в классе XslTransform.

Функция

Местоположение ссылки

Примечания

Атрибут disable-output-escaping для тегов <xsl:text...> и <xsl:value-of...>.

Рекомендация W3C по XSLT 1.0,

раздел 16.4

Атрибут disable-output-escaping не обрабатывается, если элементы xsl:text или xsl:value-of используются в элементах xsl:comment, xsl:processing-instruction или xsl:attribute.

Фрагменты результирующего дерева, содержащие экранированный текст и экранированные текстовые выходные данные, не поддерживаются.

Атрибут disable-output-escaping не учитывается при преобразовании в объект XmlReader или XmlWriter.

См. также

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

Реализация классом XslTransform XSLT-процессора

XSLT-преобразования с помощью класса XslTransform

XPathNavigator в преобразованиях

XPathNodeIterator в преобразованиях

Ввод XPathDocument в XslTransform

Ввод XmlDataDocument в XslTransform

Ввод XmlDocument в XslTransform

Ссылки

XslTransform

XslTransform