В чем отличие префиксов exclude-result-prefix и extension-element-prefix в объявлении пространства имен XSLT? - PullRequest
18 голосов
/ 13 июля 2011

В чем разница между exclude-result-prefixes и extension-element-prefix?Оба используются в заголовке XSLT.Я нашел extension-element-prefix при использовании EXSLT и веб-сайте EXSLT. Как говорит, что extension-element-prefix используется для «предотвращения вывода пространств имен расширений в дереве результатов».

Но это не так (используется libxslt).Только exclude-result-prefixes удаляет расширение пространства имен.Так зачем мне нужен extension-element-prefix ???

Пример:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:exsl="http://exslt.org/common" version="1.0"
  extension-element-prefix="exsl">

<xsl:template match="/">
  <blabla/>
</xsl:template>

</xsl:stylesheet>

Мой вывод с помощью libxslt (xsltproc):

<?xml version="1.0"?>
<blabla xmlns:exsl="http://exslt.org/common"/>

1 Ответ

12 голосов
/ 13 июля 2011

Для использования функций EXSLT, таких как функция в пространстве имен http://exslt.org/common, вам не требуется атрибут extension-element-prefix.Это необходимо только в том случае, если вы хотите использовать такие элементы расширения, как func:function в пространстве имен http://exslt.org/functions.Атрибут extension-element-prefix просто сигнализирует, что любые элементы с этим префиксом не являются литеральными результирующими элементами, а скорее инструкциями расширения в дополнение к инструкциям, определенным языком XSLT.

Что касается exclude-result-prefixes, вы поняли это правоэто помогает избежать любых объявлений пространств имен в ваших элементах результата для пространств имен, объявленных и используемых в таблице стилей исключительно для выбора узлов в выражениях пути или сопоставления шаблонов или используемых для вставки элементов расширения.

...