xml - XPath 可以连接两个节点集值吗? (用于 XForms)

标签 xml xpath concatenation xforms

我想在 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/

相关文章:

c# - 在 XPath 中对结果进行分组

java - 使用 XPath 将 XML 信息提取到 List<Map>

mysql - 在 JQuery onchange 文本字段中获取数据库数据

c 宏 - 如何将宏名称设置为另一个宏的输出

连接 DWORD

java - xmlparserv2.jar 和 Oracle 数据库错误

html - Xpath:查找类包含空格的元素

c# - 使用 LINQ 查询 XDocument 的最佳方式?

python - 如何修复 bs4 选择错误 : 'TypeError: __init__() keywords must be strings'

sql-server - GROUP BY 子句中不允许使用 SQL Server XML 方法