我有一个返回 item()* 的函数。此函数的输出类似于以下内容:
<Root>
<Value>
<Year>1999</Year>
<A>50</A>
<B>100</B>
</Value>
<Value>
<Year>2000</Year>
<A>50</A>
<B>100</B>
<Value>
</Root>
这个输出应该被传递给第二个函数。我希望能够解析它并返回不同的输出。我尝试使用 fn:parse-xml($output) 将输出转换为字符串,但出现错误 提示 No text allowed before root element。但是,如果我在第二个函数中声明一个局部变量并将其分配给它的字符串输出它可以工作。
这有效:
declare function function2($outputFromFunction1 as item()*) item()*{
let sToX := fn:parse-xml(" <Root>
<Value>
<Year>1999</Year>
<A>50</A>
<B>100</B>
</Value>
<Value>
<Year>2000</Year>
<A>50</A>
<B>100</B>
<Value>
</Root>")...
};
我能够解析这个变量(对于 $sToX/Value 中的 $Value...)。
为什么它在这种情况下有效,而不是当我使用传入的参数时?