1

我有一个包含艺术家列表的实例

<xf:instance id="Artists" xmlns="">  
    <Artists>
        <Artist ID="6548">
            <FirstName>Elvis</FirstName>
            <LastName>Presley</LastName>
        </Artist>
        <Artist ID="7895">
            <FirstName>Duane</FirstName>
            <LastName>Eddy</LastName>
        </Artist>
    </Artists>
</xf:instance>    

我想从列表中选择艺术家。这段代码:

<xf:select>
    <xf:label>Artists</xf:label>
    <xf:itemset nodeset="instance('Artists')/Artist">
        <xf:label ref="LastName" ></xf:label>
        <xf:value ref="@ID"></xf:value>
    </xf:itemset>
</xf:select>

显示“Presley”和“Eddy”标签,但我想显示“Presley, Elvis”和“Eddy, Duane”。这可以在不修改模型的情况下完成吗?我想有一些方法可以在那里表达,但我不知道。

我试过:

<xf:label ref="concat(LastName, ',', FirstName)" ></xf:label>

但这并没有显示任何东西。(我正在使用 BetterForm 和 eXist)

4

2 回答 2

1

试试这个:

<xf:label value="concat(LastName, ', ', FirstName)" />

该解决方案可能是特定于实现的,我仅使用 orbeon 表单对其进行了测试。与您的代码的唯一区别是元素中的value属性xf:label而不是@ref. ref="concat(LastName, ',', FirstName)"将不起作用ref,因为您指定了单节点绑定。如果模型中没有这样的节点,它将失败。value相反,您可以使用 XPath 创建一个“计算的”标签值。

于 2013-01-10T09:45:42.003 回答
0

此语法适用于 BetterForm+eXist:

<xf:label>
    <xf:output value="concat(LastName, ',', FirstName)" />
</xf:label>
于 2013-01-12T13:49:16.413 回答