這是第一次海報,所以請不要猶豫,讓我知道如果我做錯了什麼。如何使用XPath選擇非空同胞節點的Cartesian產品集?
我正在使用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
任何人都可以點我在正確的方向?
謝謝!
感謝您的回答。我現在意識到,我的問題形成的不是很好,我沒有詳細說明我在找什麼。而不是僅僅是字符串值,我想要整個節點。我只記得它叫做笛卡兒積**,我希望節點的產品代表一個整體產品集。 – semaj1919
你想要一個序列中現有的動物和人物元素,還是你想要一個動物和人物的每一個新元素的聯合? – joemfb
後者,一個動物和一個人的一個新元素的內部結合。非常感謝您的幫助! – semaj1919