【发布时间】:2014-01-08 08:18:12
【问题描述】:
第一次在这里发帖,所以如果我做错了什么,请不要犹豫,让我知道。
我正在使用 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> 和 <Person> 级别。这样,在表单中我可以只说 /AName, /PName, 并在表单的每个副本上为 /AName 和 /PName 获取一个值。它应该充当元素节点的 6 个实例,每个实例代表 <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
谁能指出我正确的方向?
谢谢!
【问题讨论】:
标签: xml xpath xpath-2.0 altova