Динамически обновляемые ссылки href на xform - PullRequest
0 голосов
/ 27 января 2011

Из документов XSL-процессор можно использовать для динамического создания ссылок href (или другого содержимого HTML):

<xhtml:tr>
<xhtml:td>
    <xsl:for-each select="{instance('fr-form-instance')/form/retrievalSection/retrievalControl">
        <xhtml:a href="http://somewhere/">
            <xsl:value-of select="SomeData"/>
            <xsl:if test="position() lt last()">
                <br/>
            </xsl:if>
        </xhtml:a>
    </xsl:for-each>
</xhtml:td>

Выше приведен примерный пример кода, в котором href является статическим, можно игнорировать.

Проблема в том, что (сгенерированный xslt текст ссылки) не обновляется автоматически при обновлении экземпляра; как этого добиться?

1 Ответ

1 голос
/ 01 февраля 2011

XSLT-обработка выполняется раз и навсегда при загрузке страницы. Вы можете видеть шаг XSLT как шаблон или шаг предварительной обработки. Как только это будет сделано, XForms обрабатывает результат, а затем все динамически обновляется.

Вы можете смешивать XSLT и XForms таким образом, но это не тривиально, и если вы можете, вероятно, лучше избегать этого.

Я бы попробовал использовать XForms исключительно для достижения этой цели, например:

<xhtml:td>
    <xforms:repeat nodeset="instance('fr-form-instance')/form/retrievalSection/retrievalControl">
        <xhtml:a href="http://somewhere/">
            <xforms:output value="SomeData"/>
            <xhtml:br/>
        </xhtml:a>
    </xforms:repeat>
</xhtml:td>

Если вы хотите, чтобы href был динамическим, используйте AVT, как в XSLT:

href="{expression}"

Наконец, вы можете поместить <br/> в <xforms:group>, чтобы сделать его условным, но, вероятно, лучше использовать CSS в этом случае, если вы можете.

...