我想在 XForms 中使用 XPath 连接两个节点集值。
我知道 XPath 有一个 concat(string, string) 函数,但是我如何连接两个节点集值?
开始编辑: 我尝试了 concat 函数..我尝试了这个..及其变体以使其工作,但它不起作用
<xf:value ref="concat(instance('param_choices')/choice/root, .)"/>
结束编辑
下面是我想要实现的目标的简化代码示例。
XForms 模型:
<xf:instance id="param_choices" xmlns="">
<choices>
<root label="Param Choices">/param</root>
<choice label="Name">/@AAA</choice>
<choice label="Value">/@BBB</choice>
</choices>
</xf:instance>
我当前拥有的 XForms ui 代码:
<xf:select ref="instance('criteria_data')/criteria/criterion" appearance="full">
<xf:label>Param choices:</xf:label>
<br/>
<xf:itemset nodeset="instance('param_choices')/choice">
<xf:label ref="@label"></xf:label>
<xf:value ref="."></xf:value>
</xf:itemset>
</xf:select>
(如果用户选择“名称”复选框..)XML 输出为:
<criterion>/@BBB</criterion>
但是!我想将根节点集值与当前选择的节点集值组合起来。
本质上:
<xf:value ref="concat(instance('param_choices')/choice/root, .)"/>
或
<xf:value ref="(instance('definition_choices')/choice/root) + ."/>
实现以下XML输出:
<criterion>/param/@BBB</criterion>
关于如何做到这一点有什么建议吗? (我对 XPath 和 XForms 还很陌生)
附:当我输入时,我所问的内容对我来说是有意义的,但如果您无法理解我所问的内容,请告诉我..
谢谢!
最佳答案
XPath 表达式的计算不能修改 XML 文档的结构/内容——它仅选择(一组)现有节点。
为了生成 XML 文档中不存在的节点,必须结合 XPath 使用其他方法(例如 XSLT)。
关于xml - XPath 可以连接两个节点集值吗? (用于 XForms),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3009132/