选择单独存储的有关相同信息的节点

时间:2017-06-07 15:01:54

标签: xml xpath basex

我试着用MWE解释。这里我们有9467328.xml:

<GROUP year="2004" groupid="9467328">
<TOWN name="Springfield"></TOWN>
<PEOPLE>
<PERSON eyecolor="brown" fullname="Jane Doe">
<HEALTH>
<WEIGHT>67</WEIGHT>
<HEIGHT>1.75</HEIGHT>
</HEALTH>
</PERSON>
</PEOPLE>
</GROUP>

这是9467328_extended.xml:

<GROUP source="SGXML" date="28092004">
<PEOPLE>
<PERSON fullname="Jane Doe">
<MEALS>
<MEAL id="1" title="Breakfast"/>
<MEAL id="2" title="Lunch"/>
<MEAL id="3" title="Dinner"/>
</MEALS>
</PERSON>
</PEOPLE>
</GROUP>

这些是匹配的文件,每个文件都有关于同一组的不同信息。其中一个有groupid标签,但没有另一个。 两个文件名在整个数据库中都包含groupid

我能够从特定PERSON中选择所有TOWN个节点:

/GROUP[TOWN/@name="Springfield"]/PEOPLE/PERSON

或计算所吃的所有食物:

count(/GROUP/PEOPLE/PERSON/MEALS/MEAL)

我需要计算在某个城镇吃过的所有饭菜,但是这些值是空的,因为它们实际上是不同的节点:

/GROUP[TOWN/@name="Springfield"]/count(/PEOPLE/PERSON/MEALS)

在找到如何将文件名删除到groupid

之后,我陷入了困境

replace(fn:base-uri(),'^(.*/)(.*?)\.\w+$','$2')

您如何重写表达式,以便可以根据MEALS值访问groupid节点?

0 个答案:

没有答案