如何使用XQuery连接和匹配来自两个XML文件的数据?

问题描述:

我需要使用XQuery合并来自两个XML文件的数据并使用这些数据创建一个HTML表格。如何使用XQuery连接和匹配来自两个XML文件的数据?

第一文件包含一个属性,它标识的元素的元素:

<element id="x"/> 
<element id="x2"/> 

第二个文件包含另一个标识符以及元素交叉引用在第一文件中的元素:

<2nd-element id="y" xref="x"/> 
<2nd-element id="y2" xref="x2"/> 

如何筛选数据以便我留下以下结果?

<table> 
    <tbody> 
    <tr><td>x</td><td>y</td></tr> 
    <tr><td>x2</td><td>y2</td></tr> 
    </tbody> 
    </table> 

目前,我能够填充所有外部参照第二个文件属性的第二列,但如何过滤掉不需要的数据?

如何包含表达式来过滤表达式中的数据用于填充表列?

{data(2nd-element/@xref)} 

你走在第一个文件的ID,匹配第二个文件的ID,并为每对创建一个表行:

<table> 
    <tbody> 
    { 
    for $id1 in $first-file//element/@id 
    let $id2 := $second-file//element-2nd[@xref = $id1]/@id 
    return <tr><td>{data($id1)}</td><td>{data($id2)}</td></tr> 
    } 
    </tbody> 
</table> 
+0

谢谢Gunther:我放错了'[@xref = $ id1]'属性@id。 – ritzdiamond 2012-08-10 11:49:27

我不明白什么数据是不需要的。您只需插入2nd-element s的两个属性xrefid的值。只需使用第二个片段即可生成所需的输出,因此不需要使用element

+0

的第一个文件明确表明那些在结果通缉。 – Gunther 2012-08-10 11:21:30