Удаление префикса пространства имен XSL в тегах таблицы стилей XSL - PullRequest
1 голос
/ 18 марта 2011

Возможно ли сбросить теги xsl: в XSL в таблицах стилей XSL?

Например, может:

<xsl:if test=''>

введите:

<if test=''>

Edit: Таблица стилей содержит узлы HTML и XML.

Спасибо, Росс

Ответы [ 4 ]

4 голосов
/ 18 марта 2011

Действительно, вы можете сделать это, определив пространство имен XSLT ("http://www.w3.org/1999/XSL/Transform") в качестве пространства имен по умолчанию:

 <stylesheet xmlns="http://www.w3.org/1999/XSL/Transform">
    ...
 </stylesheet>

Недостатком является то, что вы затем должны использовать другой префикс для своих пространств имен "домен":

 <stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" xmlns:foo="http://whatever" xmlns:html="http://www.w3.org/1999/xhtml">
    <template match="foo:bar">
       <html:form>
           ...
       </html:form>
    </template>
 </stylesheet>
4 голосов
/ 18 марта 2011

Конечно, вы можете, но, сочетая ответы @ysdx и @ Jon, помните, что вашему процессору XSLT необходимо различать элементы XSLT и выходные элементы.Например, следующая таблица стилей выдает ошибку в Firefox:

<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">
    <template match="/">
        <!-- <b> is not a valid XSLT element -->
        <b><value-of select="'test'"/></b>
    </template>
</stylesheet>

Это означает, что вам нужно указать имена выходных элементов, например:

<stylesheet version="1.0" 
         xmlns="http://www.w3.org/1999/XSL/Transform"
         xmlns:test="http://whatever">
    <template match="/">
        <test:b><value-of select="'test'"/></test:b>
    </template>
</stylesheet>

Это может быть проблематично.Вам следует придерживаться обычного префикса xsl, если только у вас нет веских причин не делать этого.

1 голос
/ 18 марта 2011

Не думай так.Они различают «язык» и любые узлы, предназначенные для вывода.

0 голосов
/ 18 марта 2011

Да.

Но учтите, что это не имеет ничего общего с самим XSLT, а с именами XML.Вот почему существуют различия между использованием XML 1.0 и XML 1.1.

Например, здесь у вас есть несколько моих предыдущих ответов с использованием этого синтаксиса:

с использованием xml в качестве переменной xsl

XSLT многострочная замена с рекурсией

...