xforms: как предотвратить xxforms: значение по умолчанию от перезаписи пользовательского ввода - PullRequest
3 голосов
/ 17 июля 2010

У меня есть раскрывающийся список для отображения статуса, который может быть включен (true) или отключен (false).Вот мой экземпляр xml.

<?xml version="1.0" encoding="UTF-8"?>
    <page>
        <file-name></file-name>
        <status></status>
    </page>

По умолчанию статус должен быть истинным.Поэтому я установил привязку следующим образом:

<xforms:bind nodeset="./status" xxforms:default="true()" />

Когда пользователь выбирает Отключено в раскрывающемся списке, статус должен быть сохранен как ложный.Вот XML, который сохраняется при сохранении формы.

<page>
    <file-name>StatusDisabled.xml</file-name>
    <status>false</false>
</page>

Когда я открываю форму в режиме редактирования, это XML, который я получаю в виджете инспектора XML.

<page>
    <file-name>StatusDisabled.xml</file-name>
    <status>true></status>
</page>

Состояние получает значение true из-за xxforms: default, даже если xml сохраняется с ложным значением для status.

Как я могу это исправить?

Вот текст HTML:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:xxforms="http://orbeon.org/oxf/xml/xforms">

    <head>
        <title>XForms Default</title>

        <xforms:model>
            <xforms:instance id="instance">
                <page>
                    <name xmlns=""/>    
                    <status xmlns=""/>
                </page>
            </xforms:instance>

            <xforms:instance id="status-instance">
                <items>
                    <item label="Enabled" value="true" xmlns=""/>
                    <item label="Disabled" value="false" xmlns=""/>
                </items>
            </xforms:instance>

            <xforms:bind nodeset="instance('instance')">
                <xforms:bind nodeset="./status" xxforms:default="true()" />
            </xforms:bind>

        </xforms:model>
    </head>
    <body>
        <p>
            <xforms:input ref="instance('instance')/name" incremental="true">
                <xforms:label>Please enter your name:</xforms:label>
            </xforms:input>
        </p>
        <p>
            <xforms:select1 ref="instance('instance')/status" appearance="minimal" incremental="true">
                <xforms:label>Please select status:</xforms:label>
                <xforms:itemset nodeset="instance('status-instance')/item">
                    <xforms:label ref="./@label"/>
                    <xforms:value ref="./@value"/>
                </xforms:itemset>
            </xforms:select1> 
        </p>
    </body>
</html>

1 Ответ

1 голос
/ 17 июля 2010

Если это произойдет, это ошибка. xxforms:default должен оцениваться только один раз.

...