xforms повторяет элемент с загрузкой изображения?

Может ли кто-нибудь показать мне, как с помощью XForms написать код виджета, который позволяет выбирать файл изображения для загрузки, при необходимости повторно? То есть пользователь загружает по одной фотографии за раз, но при необходимости может продолжать загрузку снова и снова.

Это может быть либо элемент, либо просто элемент. Я не уверен, как элемент повтора связан с элементом триггера. Дело в том, что повторяющийся элемент сообщает процессору XForms, какие элементы пользовательского интерфейса следует отображать повторно? А элемент триггера — это кнопка, которая обновляет базовую модель?

Я не понимаю, как зафиксировать эту информацию. Мне нужно что-то примерно такое:

<xforms:repeat 
                <xforms:trigger>
                    <xforms:label>Add pic</xforms:label>
                    <xforms:upload
                        ref="data/picture[@id='1']"
                        mediatype="image/*">
                    </xforms:upload>
                </xforms:trigger>
</xforms:repeat>

Например, если пользователь загружает 5 фотографий, можно ли идентифицировать каждую картинку как pic1, pic2, pic3?

Благодарю вас!


person user798719    schedule 06.08.2012    source источник


Ответы (1)


Элемент Xforms Repeat повторяется для существующих данных для отображения. Вам нужно отобразить существующие фотографии и вставить новые. Викикнига XForms достаточно обширна, так что вы можете посмотреть на http://en.wikibooks.org/wiki/XForms/Insert и http://en.wikibooks.org/wiki/XForms/Repeat_into_table

Ниже приведен непроверенный пример, который должен дать вам хорошее представление о том, что вам нужно сделать.

<html 
   xmlns="http://www.w3.org/1999/xhtml" 
   xmlns:xf="http://www.w3.org/2002/xforms" 
   xmlns:ev="http://www.w3.org/2001/xml-events">
   <head>
      <title>XForms insert example</title>
      <xf:model>
         <xf:instance>
            <Data xmlns="">
               <Photo name="My Photo">
                    <!-- Data here -->
               </Photo>
               <NewPhoto name="">
               </NewPhoto>
            </Data>
         </xf:instance>
      </xf:model>
   </head>
   <body>
      <fieldset>
         <legend>Company Phone List</legend>
         <p>
            <b>Uploaded Photos...</b>
            <ul>
            <xf:repeat id="list" nodeset="/Data/Photo">
               <li><xf:output ref="@name" /></li>
            </xf:repeat>
            </ul>
         </p>
      </fieldset>
      <fieldset>
         <legend>Add New Photo</legend>
         <p> <!-- here is where we get the new record -->
            <xf:input ref="/Data/NewPhoto/@name">
               <xf:label>Photo Name:</xf:label>
            </xf:input>
            <xforms:upload
                        ref="/Data/NewPhoto"
                        mediatype="image/*">
            </xforms:upload>
            <xf:trigger>
               <xf:label>Insert... </xf:label>
               <xf:action ev:event="DOMActivate">
                  <xf:insert nodeset="/Data/Photo" at="index('list')" position="after" />
                  <xf:setvalue ref="/Data/Photo[index('list')]/@name" value="/Data/NewPhoto/@name" />
                  <xf:setvalue ref="/Data/Photo[index('list')]" value="/Data/NewPhoto" />
               </xf:action>
            </xf:trigger>
         </p>
      </fieldset>
   </body>
</html>
person Community    schedule 17.05.2013