我试图将2个字符串的结果从:
<string1>A,B,C</string1>
<string2>1,2,3</string2>
到
<result1>
<value1>A</value1>
<value1>1</value1>
</result1>
<result2>
<value1>B</value1>
<value1>2</value1>
</result2>
<result3>
<value1>C</value1>
<value1>3</value1>
</result3>
我可以将每个字符串标记为分隔每个值,但我有一个问题,然后结合结果
,string1中的第一个结果需要与string2中的第一个结果配对,string2中的第二个结果需要与字符串2中的第二个结果配对,依此类推。 任何帮助将不胜感激
答案 0 :(得分:1)
基本方法是一起遍历两个令牌序列。例如:
let $string1 := <string1>A,B,C</string1>,
$string2 := <string2>1,2,3</string2>
let $letters := tokenize($string1, ','),
$numbers := tokenize($string2, ',')
return if (count($letters) ne count($numbers)) then
'Oops, mismatched sets of strings, please try again'
else
for $s at $pos in $letters
return <result>
<value>{$letters[$pos]}</value>
<value>{$numbers[$pos]}</value>
</result>
或者您可以将for
表达式表示为for $pos in 1 to count($letters)
。
请注意,这些元素的序列都是result
,而不是result1
,result2
等,而子元素的名称为value
,而不是{{1}因为我无法认真对待那部分问题描述。如果你还没有能够分辨序列中第一个value1
元素与第三个元素之间没有名称告诉你它在哪里,那么花一些时间来获得这种能力是值得的。 / p>