2013-08-23 2 views
3

Aloha,XSLT Нелегальная атрибут «разделитель»

во время написания таблицы стилей XSLT, я столкнулся с проблемой, я не мог решить. Моя основная структура XML следующая:

<nonUniqueConstraint name = "..."> 
    <column name = "..."/> 
    <column name = "..."/> 
</nonUniqueConstraint> 

Я хочу напечатать имена всех столбцов. Поэтому я использовал следующее заявление (я итерация по всему nonUniqueConstraints):

<xsl:value-of select="./column/@name" separator=", "/> 

Однако, когда я запускаю мой Ant файл сборки, он выводит следующее:

Ошибки! [ERR 0510] [ERR XTSE0090] Нелегальная atttribute 'разделитель' является указано

Я искал ошибки и нашел следующее описание:

[ERR XTSE0090] Это статическая погрешность элемент из пространства имен XSLT , чтобы иметь атрибут, пространство имен которого равно нулю ( - это атрибут с неподписанным именем) или пространство имен XSLT, другое , чем атрибуты, определенные для элемента в этом документе.

Тем не менее, я видел много примеров, используя атрибут separator, например. here.

Как исправить эту проблему?

Приветствия

ответ

3

Я думаю, вы должны проверить, какой XSLT процессор вы Бег.

Ошибка немного странная, поскольку код ошибки XTSE0090 определен только в XSLT 2.0, но XSLT 2.0 разрешает атрибут separator. Ответ Ирки лишь частично правильный. Если вы используете процессор XSLT 1.0, он всегда будет отклонять атрибут разделителя, но вряд ли он использует код ошибки XSLT 2.0 XTSE0090. Если вы используете процессор 2.0, он должен принять атрибут separator, соответствует ли таблица стилей version = "1.0" или version = "2.0". Так что кое-что немного странное происходит.

Чтобы проверить, какой процессор XSLT вы используете, используйте функцию XSLT system-property() для записи сообщения.

+1

Ответ Jirka заставил ошибку исчезнуть, однако она выводит только имя первого элемента столбца. – slashburn

+1

Проверка процессора показала, что у меня установлен только XSLT-процессор 1.0. Поэтому указание версии 2.0 при запуске 1.0-процессора бесполезно. – slashburn

4

Посмотрите на таблицы стилей элемента на атрибут версии - он должен быть 2.0, чтобы включить атрибут «разделитель» в XSL: стоимость из

<xsl:stylesheet version="2.0"... 
Смежные вопросы