2013-09-12 3 views
1

В моем вопросе here Я пытаюсь передать параметр в таблицу стилей, чтобы пользователь мог указать желаемый уровень отступов. Очевидно, Xalan не может прочитать значение параметра в свой атрибут indent-amount, поэтому вместо этого я пытаюсь использовать this version of Saxon-HE.Атрибут saxon: indent-spaces игнорируется

Saxon имеет атрибут indent-spaces, который я пытаюсь использовать следующим образом:

<xsl:stylesheet 
    version="2.0" 
    xmlns:saxon="http://saxon.sf.net" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <!-- <xsl:param name="indent-spaces" select="0"/> --> 

    <xsl:output indent="yes" method="xml" omit-xml-declaration="yes" saxon:indent-spaces="10"/><!-- Doesn't matter what I make the value of indent-spaces, the output is always indented 3 spaces --> 

Почему indent-spaces игнорируется?

+0

Какую версию Saxon вы используете Как запустить преобразование точно, как дерево результатов сериализуется? И пространство имен должно быть 'http: // saxon.sf.net /', а не 'http: // saxon.sf.net'. –

ответ

2

Пространство имен должно быть xmlns:saxon="http://saxon.sf.net/" вместо xmlns:saxon="http://saxon.sf.net".

+0

После исправления пространства имен я получил ошибка, сообщающая мне, что запрашиваемая функция требует Saxon-PE :(Спасибо за вашу помощь. – ubiquibacon

0

Во-первых, для всех Saxon-расширений требуется саксон-PE или выше.

Во-вторых, если вы хотите, чтобы динамически управлять параметрами сериализации (например, от параметра таблицы стилей, вы можете сделать это с помощью XSL: результат-документ:

<xsl:result-document indent="yes" saxon:indent-spaces="{$param}"> 
    ... 
</xsl:result-document> 
Смежные вопросы