第一次在这里发帖,所以如果我做错了什么,请不要犹豫,让我知道。
我正在使用 Altova Stylevision 打印表单文档,并且我需要为每个唯一的两个节点集合集打印一份表单副本。下面是一个示例 XML,可以更好地解释我的要求。
<form>
<Animals>
<Animal>
<AName>Boomer</AName>
<AAddress>House</AAddress>
</Animal>
<Animal>
<AName>Growl</AName>
<AAddress>Street</AAddress>
</Animal>
<Animal>
<AName>Incognito</AName>
<AAddress>Nowhere</AAddress>
</Animal>
</Animals>
<People>
<Person>
<PName>Willy</PName>
<PAddress>123 Common Lane</PAddress>
</Person>
<Person>
<PName>Wonka</PName>
<PAddress>Chocolate Factory</PAddress>
</Person>
</People>
</form>
我想从上面的示例中生成 6 个唯一值(笛卡尔积),其中包含每个组合<Animal>
并且<Person>
它们都不为空。因此,此示例的输出将类似于(仅显示分组,需要所有子节点而不仅仅是名称):
([Boomer, Willy], [Boomer, Wonka], [Growl, Willy], [Growl, Wonka], [Incognito, Willy], [Incognito, Wonka])
编辑: 我正在尝试获取节点,而不仅仅是<Name>
元素值。因为我在这个模板中包装了整个 StyleVision 表单,所以范围应该在<Animal>
and<Person>
级别。这样,在表格中,我可以说并在表格的每个副本上/AName, /PName,
获得一个值。它应该充当元素节点的 6 个实例,每个实例代表和的唯一组合。/AName
/PName
<Person>
<Animal>
我查看了for # in # return
语法,但无法弄清楚如何返回唯一集。以下是我到目前为止尝试过的:
for $a in form/Animals/Animal, $p in form/People/Person return ($a, $p)
和
form/Animals/Animal | form/People/Person
谁能指出我正确的方向?
谢谢!