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

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

Это может быть элемент или просто элемент. Я не уверен, как элемент повтора связан с элементом триггера. Является ли, что элемент repeat сообщает процессору 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?

Спасибо!

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>
Другие вопросы по тегам