Orbeon Forms:动态标签在嵌套部分中不起作用

Orbeon Forms: Dynamic label not working in nested section

我正在使用 Orbeon Forms 2019.2.0.201912301747 CE。

我的表单结构如下所示:

<s-2>
 <s-2-iteration>
  <s-2-position>
   ...
   <s-2.7>
    <s-2.7-iteration>
     <s-2.7-position>
      ...
     </s-2.7-position>
    </s-2.7-iteration>
   </s-2.7>
   ...
  </s-2-position>
 </s-2-iteration>
</s-2>

标签 <...-position> 是我希望在其中添加动态标签的部分,例如“位置没有 X”,其中 X 是重复编号。我在 Settings/Label/Template 参数 (screen).

部分使用 xxf:repeat-position()<s-2-position> 标记完成了此操作

但是,当我尝试在嵌套在 <s-2-position> 中的 <s-2.7-position> 标记中执行此操作时,它不起作用。 运行 表格时标签为空白。此外,当我尝试在 <s-2.7-position><s-2.7-position> 内的任何其他标签中使用任何类型的动态标签时,它也不起作用。

那么,你遇到过这样的问题吗? solution/workaround 是什么?这是 Orbeon Froms 的错误吗?

谢谢!

确实,xxf:repeat-position() 在这种情况下工作或具有更高级别的 Form Runner 特定功能是有意义的。这包含在增强请求 (RFE) #4144 中。与此同时,您可以尝试像 RFE 中提到的那样:

count(../preceding-sibling::*) + 1

我找到了问题的原因。将标签 <s-2.7-position> 重命名为不包括 s-2.7 的任何内容(甚至分开)后,带有模板参数的动态标签正在工作,包括 xxf:repeat-position().

将下面表格中的 s-2.7-pozycja 标签名称更改为 s-foo 后,这些标签的标签正确显示。在标签根本没有显示之前(空)。

工作形式:

<xh:html xmlns:xh="http://www.w3.org/1999/xhtml"
         xmlns:xxf="http://orbeon.org/oxf/xml/xforms"
         xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
         xmlns:xf="http://www.w3.org/2002/xforms"
         xmlns:xs="http://www.w3.org/2001/XMLSchema"
         xmlns:fb="http://orbeon.org/oxf/xml/form-builder"
         fr:data-format-version="4.0.0">
    <xh:head>
        <xh:title>PL825 - Projekt podziału przemieszczenia</xh:title>
        <xf:model id="fr-form-model" xxf:expose-xpath-types="true" xxf:analysis.calculate="true"
                  xxf:hint.appearance="tooltip">

            <!-- Main instance -->
            <xf:instance id="fr-form-instance" xxf:exclude-result-prefixes="#all" xxf:index="id">
                <form>
                    <s-2>
                        <s-2-iteration>
                            <s-2-pozycja>
                                <s-2.7>
                                    <s-2.7-iteration>
                                        <s-foo>
                                            <grid-7>
                                                <control-1/>
                                            </grid-7>
                                        </s-foo>
                                    </s-2.7-iteration>
                                </s-2.7>
                            </s-2-pozycja>
                        </s-2-iteration>
                    </s-2>
                </form>
            </xf:instance>

            <!-- Bindings -->
            <xf:bind id="fr-form-binds" ref="instance('fr-form-instance')">
                <xf:bind id="s-2-bind" ref="s-2" name="s-2">
                    <xf:bind id="s-2-iteration-bind" ref="s-2-iteration" name="s-2-iteration">
                        <xf:bind id="s-2-pozycja-bind" ref="s-2-pozycja" name="s-2-pozycja">
                            <xf:bind id="s-2.7-bind" ref="s-2.7" name="s-2.7">
                                <xf:bind id="s-2.7-iteration-bind" ref="s-2.7-iteration" name="s-2.7-iteration">
                                    <xf:bind id="s-foo-bind" ref="s-foo" name="s-foo">
                                        <xf:bind id="grid-7-bind" ref="grid-7" name="grid-7">
                                            <xf:bind id="control-1-bind" ref="control-1" name="control-1" xxf:whitespace="trim"/>
                                        </xf:bind>
                                    </xf:bind>
                                </xf:bind>
                            </xf:bind>
                        </xf:bind>
                    </xf:bind>
                </xf:bind>
            </xf:bind>

            <!-- Metadata -->
            <xf:instance id="fr-form-metadata" xxf:readonly="true" xxf:exclude-result-prefixes="#all">
                <metadata>
                    <application-name>EMSC</application-name>
                    <form-name>PL825</form-name>
                    <title xml:lang="pl">PL825 - Projekt podziału przemieszczenia</title>
                    <description xml:lang="pl"/>
                    <created-with-version>2019.2.0.201912301747 CE</created-with-version>
                    <updated-with-version>2019.2.0.201912301747 CE</updated-with-version>
                    <library-versions>
                        <orbeon>1</orbeon>
                    </library-versions>
                </metadata>
            </xf:instance>

            <!-- Attachments -->
            <xf:instance id="fr-form-attachments" xxf:exclude-result-prefixes="#all">
                <attachments/>
            </xf:instance>

            <!-- All form resources -->
            <xf:instance xxf:readonly="true" id="fr-form-resources" xxf:exclude-result-prefixes="#all">
                <resources>
                    <resource xml:lang="pl">
                        <control-1>
                            <label/>
                            <hint/>
                        </control-1>
                        <s-2.7>
                            <label>2.7 </label>
                        </s-2.7>
                        <s-foo>
                            <label>Position {$nr_poz}</label>
                        </s-foo>
                        <s-2>
                            <label>2. </label>
                        </s-2>
                        <s-2-pozycja>
                            <label>Position {$nr_poz}</label>
                        </s-2-pozycja>
                    </resource>
                </resources>
            </xf:instance>
            <xf:instance xxf:readonly="true" xxf:exclude-result-prefixes="#all" id="s-2-template">
                <s-2-iteration>
                    <s-2-pozycja>
                        <s-2.7>
                            <s-2.7-iteration>
                                <s-foo>
                                    <grid-7>
                                        <control-1/>
                                    </grid-7>
                                </s-foo>
                            </s-2.7-iteration>
                        </s-2.7>
                    </s-2-pozycja>
                </s-2-iteration>
            </xf:instance>
            <xf:instance xxf:readonly="true" xxf:exclude-result-prefixes="#all" id="s-2.7-template">
                <s-2.7-iteration>
                    <s-foo>
                        <grid-7>
                            <control-1/>
                        </grid-7>
                    </s-foo>
                </s-2.7-iteration>
            </xf:instance>
        </xf:model>
    </xh:head>
    <xh:body>
        <fr:view>
            <fr:body xmlns:p="http://www.orbeon.com/oxf/pipeline" xmlns:xbl="http://www.w3.org/ns/xbl"
                     xmlns:oxf="http://www.orbeon.com/oxf/processors">
                <fr:section id="s-2-section" bind="s-2-bind" repeat="content" min="2"
                            template="instance('s-2-template')"
                            apply-defaults="true"
                            fb:initial-iterations="first">
                    <xf:label ref="$form-resources/s-2/label"/>
                    <fr:section id="s-2-pozycja-section" bind="s-2-pozycja-bind">
                        <xf:label ref="$form-resources/s-2-pozycja/label">
                            <fr:param type="ExpressionParam">
                                <fr:name>nr_poz</fr:name>
                                <fr:expr>xxf:repeat-position()</fr:expr>
                            </fr:param>
                        </xf:label>
                        <fr:section id="s-2.7-section" bind="s-2.7-bind" repeat="content" max="99"
                                    template="instance('s-2.7-template')"
                                    apply-defaults="true"
                                    fb:initial-iterations="first">
                            <xf:label ref="$form-resources/s-2.7/label"/>
                            <fr:section id="s-foo-section" bind="s-foo-bind">
                                <xf:label ref="$form-resources/s-foo/label">
                                    <fr:param type="ExpressionParam">
                                        <fr:name>nr_poz</fr:name>
                                        <fr:expr>xxf:repeat-position()</fr:expr>
                                    </fr:param>
                                </xf:label>
                                <fr:grid id="grid-7-grid" bind="grid-7-bind">
                                    <fr:c x="1" y="1" w="12">
                                        <xf:input id="control-1-control" bind="control-1-bind">
                                            <xf:label ref="$form-resources/control-1/label"/>
                                            <xf:hint ref="$form-resources/control-1/hint"/>
                                            <xf:alert ref="$fr-resources/detail/labels/alert"/>
                                        </xf:input>
                                    </fr:c>
                                </fr:grid>
                            </fr:section>
                        </fr:section>
                    </fr:section>
                </fr:section>
            </fr:body>
        </fr:view>
    </xh:body>
</xh:html>`

错误行为

预期行为