Поддерживаются ли переменные (var) в XSLTforms или betterForm?

Я подготовил следующий документ XForms на основе http://www.w3.org/MarkUp/Forms/wiki/XForms_2.0#The_var_element:

<?xml-stylesheet type="text/xsl" href="../xsltforms/xsltforms.xsl"?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms">
    <head>
        <title>var-demo</title>
        <xf:model>
            <xf:instance>
                <data xmlns="">
                    <PersonGivenName>Kilroy</PersonGivenName>
                </data>
            </xf:instance>
        </xf:model>
    </head>
    <body>
        <xf:output value="PersonGivenName"><xf:label>PersonGivenName=</xf:label></xf:output>

        <xf:var name="pg_name" value="PersonGivenName"/>
        <xf:output value="pg_name"><xf:label>pg_name=</xf:label></xf:output>
    </body>
</html>

Это очень просто: должен вывести (я думаю) Kilroy дважды, сначала читать непосредственно из модели, затем помещать в переменную и печатать эту переменную.

Но выход только

PersonGivenName=Kilroy
pg_name=

Я пробовал это из eXist-db 2.0 и eXide версии 2.0. Код выше обрабатывается XSLTforms; если пропустить первую строку, она обрабатывается лучше в форме - но результат тот же.

Примеры после главы "3.2.4.2 Область действия переменной" в http://www.w3.org/MarkUp/Forms/wiki/XForms_2.0 показывают, что префикс $ необходим при использовании значения переменной, но оба XSLTforms и исключение betterForm при изменении последнего вывода на значение ="$pg_name". Код выше кажется синтаксически правильным, но значение переменной не распечатывается. Кто-нибудь может объяснить это?

2 ответа

Извините, переменные еще не реализованы в XSLTForms.

Я часто определяю выделенный экземпляр для "переменных".

-Alain

И при этом они не в лучшей форме. Вы можете использовать шаблон, который описывает Ален, или использовать собственный простой механизм переменных, который мы реализовали до того, как он появился в спецификации:

Мы получили <xf:setvariable name="foo" value="bar"/> реализация. Результирующая переменная может затем использоваться с нотацией '$' в определенных местах или (более экономно) с помощью bf:appContext('foo') Функция XPath.

  • Йорн
Другие вопросы по тегам