Устранимые ошибки XSLT
Рекомендация W3C по XSL-преобразованиям (XSLT) версии 1.0 включает в себя такие области, в которых поставщик реализации может решать, как обрабатывать ситуацию. Эти области считаются предоставленными на усмотрение поставщика. Например, в разделе 7.3 «Инструкции по обработке при создании» рекомендаций XSLT 1.0 указывается на ошибку, которая возникает, если при формировании экземпляра содержимого xsl:processing-instruction
создаются узлы, отличные от текстовых. Для некоторых проблем в рекомендациях XSLT 1.0 указывается решение, которое следует принять, если обработчик решает устранить ошибку. Для проблемы, приведенной в разделе 7.3, W3C заявляет, что реализация может устранять эту ошибку, игнорируя узлы и их содержимое.
Возможные поведения
В следующей таблице перечислены возможные поведения, разрешенные рекомендациями XSLT 1.0, и способы обработки этих поведений классом XslCompiledTransform.
«Восстановление» указывает, что класс XslCompiledTransform устраняет эту ошибку. Событие XsltArgumentList.XsltMessageEncountered может быть использовано, чтобы сообщать о любых событиях из обработчика XSLT.
«Ошибка» указывает, что для этого условия формируется исключение.
Дополнительные сведения мс. в рекомендациях консорциума W3C по преобразованиям XSLT версии 1.0 и поправке к спецификации консорциума W3C по преобразованиям XSLT версии 1.0.
Условие XSLT | Раздел | Поведение XslCompiledTransform |
---|---|---|
Текстовый узел соответствует как xsl:strip-space , так и xsl:preserve-space . |
3,4 | Восстановить |
Исходный узел соответствует более одному правилу шаблона. | 5.5 | Восстановить |
URI-код пространства имен объявлен в качестве псевдонима для нескольких URI-кодов пространств имен, каждый из которых имеет одинаковый приоритет импорта. | 7.1.1 | Восстановить |
Атрибут name в узлах xsl:attribute и xsl:element , сформированный из значения атрибута, не является QName. |
7.1.2, 7.1.3 | Ошибка* |
Два набора атрибутов с одинаковым именем импорта и развернутым именем имеют общий атрибут, и не существует другого набора атрибутов, содержащего общий атрибут с таким же именем, имеющего большую важность. | 7.1.4 | Восстановить |
Добавление атрибута к элементу после добавления к нему потомков. | 7.1.3 | Ошибка* |
Создание атрибута с именем «xmlns» | 7.1.3 | Ошибка* |
Добавление атрибута к узлу, который не является элементом. | 7.1.3 | Ошибка* |
Создание узлов, отличных от текстовых узлов, во время создания экземпляра содержимого атрибута xsl:attribute . |
7.1.3 | Ошибка* |
Атрибут name в узле xsl:processing-instruction не содержит NCName и назначения инструкции по обработке. |
7.3 | Ошибка* |
При создании экземпляра содержимого xsl:processing-instruction создаются узлы, отличные от текстовых. |
7.3 | Ошибка* |
Результат создания экземпляра содержимого xsl:processing-instruction содержит строку "?>" |
7.3 | Восстановить |
Результат создания экземпляра содержимого узла xsl:processing-instruction содержит строку «--» или заканчивается на «-». |
7,4 | Восстановить |
Результат создания экземпляра содержимого узла xsl:comment создает узлы, отличные от текстовых узлов. |
7,4 | Ошибка* |
Шаблон внутри привязывающегося к переменной элемента возвращает узел атрибута или узел пространства имен. | 11.2 | Ошибка* |
Ошибка при извлечении ресурса по URI-идентификатору, переданного в функцию документа. | 12,1 | Ошибка |
URI-ссылка в функции документа содержит идентификатор фрагмента, и возникает ошибка обработки идентификатора фрагмента. | 12,1 | Восстановление* |
Существует несколько атрибутов с одним именем, но различными значениями, которые не являются именованными элементами cdata-section в узле xsl:output с тем же приоритетом импорта. |
16 | Восстановить |
Обработчик не поддерживает кодирование в атрибуте кодировки узла xsl:output . |
16.1 | Восстановить |
Отключение экранирования выхода для текстового узла, который используется в качестве узла, отличного от текстового, в дереве результатов. | 16.4 | Восстановление* |
Преобразование фрагмента дерева результатов в число или строку, если этот фрагмент содержит текстовый узел с включенным экранированием выходных данных. | 16.4 | Восстановление* |
Экранирование выхода отключено для символа, который нельзя представить в кодировке, используемой обработчиком XSLT для выхода. | 16.4 | Восстановление* |
Добавление узла пространства имен к элементу после того, как к нему был добавлен потомок или атрибуты. | поправка 25 | Ошибка* |
Атрибут value в узле xsl:number имеет значение NAN, бесконечное или менее 0,5. |
поправка 24 | Восстановить |
Второй аргумент node-set функции документа пуст, поэтому URI-ссылка является относительной. | поправка 14 | Восстановить |
*Это поведение отличается от класса XslTransform. См. дополнительные сведения по реализации избирательного поведения в классе XslTransform.