XForms повторяет проблему

У меня есть небольшая проблема с визуализацией содержимого моего XML-файла с помощью XForms. У меня не так много опыта с этим, поэтому, если кто-то может дать мне подсказку, это было бы здорово.

Мой XML выглядит примерно так:

<schedule>
  <day>
    <course> 
    </course>
    <course>
    </course>
     ..
  </day>
  <day>
    <course>
    </course>
    ..
  </day>
  ..
</schedule>

Если я скажу

<xforms:repeat nodeset="day/course" id="whatever">
   <!-- here handling of nodes -->
  </xforms:repeat>

Я получаю только первый курс каждого дня... Как мне его изменить, чтобы я получал узлы за все курсы дня?

Спасибо


person AndaP    schedule 08.02.2011    source источник


Ответы (1)


Повторение, которое у вас есть, должно повторяться по всем <course>, по всем <day>. Например, следующие шоу: Математика, Физика, Английский язык, История.

<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml"
            xmlns:xforms="http://www.w3.org/2002/xforms"
            xmlns:ev="http://www.w3.org/2001/xml-events"
            xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xhtml:head>
        <xhtml:title>Repeat</xhtml:title>
        <xforms:model>
            <xforms:instance>
                <schedule>
                    <day label="Monday">
                        <course label="Math"/>
                        <course label="Physics"/>
                    </day>
                    <day>
                        <course label="English"/>
                        <course label="History"/>
                    </day>
                </schedule>
            </xforms:instance>
        </xforms:model>
    </xhtml:head>
    <xhtml:body>
        <xforms:repeat nodeset="day/course">
            <xhtml:div>
                <xforms:output value="@label"/>
            </xhtml:div>
        </xforms:repeat>
    </xhtml:body>
</xhtml:html>

Но часто то, что вы хотите сделать, это сначала перебрать дни, а затем курсы, как в:

<xforms:repeat nodeset="day">
    <xhtml:div>
        Day: <xforms:output value="@label"/>
        <xforms:repeat nodeset="course">
            <xhtml:div>Course: <xforms:output value="@label"/></xhtml:div>
        </xforms:repeat>
    </xhtml:div>
</xforms:repeat>
person avernet    schedule 08.02.2011
comment
Большое спасибо! Работал как шарм :) - person AndaP; 08.02.2011