Разрешение элементов управления XForm для дополнительных элементов XML - PullRequest
5 голосов
/ 05 января 2011

При разработке интерфейса XForm для базы данных XML (с использованием eXist и XSLTForms) я хотел бы включить элемент управления вводом для необязательного элемента.Записи данных XML уже существуют, и хотя некоторые содержат необязательный элемент, другие нет.Чтобы обновить запись, я использую существующую запись XML в качестве экземпляра модели.Проблема заключается в том, что элемент управления формы не отображается, когда необязательный элемент отсутствует, что логично, но представляет проблему, когда пользователь хочет добавить данные в необязательный элемент.

Чтобы быть более точным, вот пример записи данных, data.xml:

<a>
  <b>content</b>
</a>

со схемой RNC:

start =
  element a {
    element b { text },
    element notes { text }?
  }

Модель XForms:

<xf:model>
    <xf:instance xmlns="" src="data.xml"/> 
    <xf:submission id="save" method="post" action="update.xq" />
</xf:model>

И элемент управления:

<xf:input ref="/a/notes">
  <xf:label>Notes (optional): </xf:label>
</xf:input>  

Проблема в том, что элемент управления вводом «Примечания» просто не отображается.

Очевидным решением является добавление кнопки запуска, чтобы позволитьПользователь может вставить элемент, если это необходимо, но предпочтительно, чтобы элемент управления вводом отображался и был пустым.

Мой вопрос: существует ли некая тонкая комбинация менее известных атрибутов / binds / множественных экземпляров /Выражения xpath, которые всегда будут отображать элемент управления?

Ответы [ 2 ]

2 голосов
/ 06 января 2011

Эта ситуация уже обсуждалась группой форм W3C: http://www.w3.org/2010/07/07-forms-minutes.html Использование нового MIP может помочь реализовать это в XSLTForms.

-Alain

2 голосов
/ 06 января 2011

Если честно, XForms не очень хорошо справляется с ситуацией с дополнительными элементами.См. это связанное обсуждение в блоге Мики.Не очень удачный обходной путь - добавить пустые элементы для этих дополнительных элементов после извлечения данных из eXist и удалить их перед сохранением данных обратно в eXist.

...