исключающие-результат-префиксы = "XMLNS" - PullRequest
0 голосов
/ 29 июля 2011

В .net следующий xslt правильный.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"
exclude-result-prefixes="table xmlns">

но в Java, если я использую саксон,

exclude-result-prefixes="xmlns"

сгенерирует следующую ошибку:

Ошибка в xsl: таблица стилей в строке 52 worksheets.xsl: XTSE0165: Префикс пространства имен xmlns не был объявлен

Ответы [ 3 ]

3 голосов
/ 29 июля 2011

Во-первых, довольно сухой вопрос о том, какой продукт является правильным.В спецификации XSLT 1.0 говорится о префиксах exclude-result-prefixs: «Это ошибка, если нет пространства имен, привязанного к префиксу элемента, содержащего атрибуты exclude-result-prefixes или xsl: exclude-result-prefixes.» Префиксы пространства именкоторые «связаны» (в области видимости) для элемента, как это определено в модели данных XPath http://www.w3.org/TR/xpath/#namespace-nodes,, которая, если вы прочитаете ее чрезвычайно внимательно, скажет вам, что в префиксе «xmlns» нет привязки в области действия.XPath 2.0 объясняет это гораздо яснее: «Узел пространства имен не должен иметь ни имени xmlns, ни строкового значения http://www.w3.org/2000/xmlns/.",, но это предназначено для пояснения, а не для существенного изменения.

Теперьболее интересный вопрос о том, как добиться того, чего вы пытаетесь достичь. Я не думаю, что вы на самом деле сказали нам, чего вы пытаетесь достичь. В некоторых ответах высказывались предположения, что exclude-result-prefixes = "# default" решит вашипроблема, но прежде чем сообщить об этом, я хотел бы знать, в чем ваша проблема.

2 голосов
/ 29 июля 2011

В соответствии со спецификацией XSLT используйте #default, например: exclude-result-prefixes="#default".

Ссылка: http://www.w3.org/TR/xslt#literal-result-element

0 голосов
/ 29 июля 2011

Включение xmlns в префиксы exclude-result-result является ошибкой, спецификация Xml запрещает явно указывать префикс пространства имен xmlns:

Префикс xmlns используется только для объявления привязок пространства имен и используетсяопределение, связанное с именем пространства имен http://www.w3.org/2000/xmlns/. НЕ ДОЛЖНО быть объявлено.Другие префиксы НЕ ДОЛЖНЫ быть связаны с этим именем пространства имен и НЕ ДОЛЖНЫ быть объявлены как пространство имен по умолчанию.Имена элементов НЕ ДОЛЖНЫ иметь префикс xmlns.

Следовательно, нет смысла включать xmlns в exclude-result-prefixes, поскольку он не является допустимым префиксом.Для получения дополнительной информации см. http://www.w3.org/TR/xml-names/#ns-decl

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...