1
我使用XQuery根據某些條件從XML中選擇節點列表。結果是幾個節點的列表,但我只想返回其中的一個(第一個或最後一個)。僅從XQuery FLWOR序列返回一個元素
首先我使用XPath來選擇一些元素,然後我想過濾掉任何不包含值(即爲空)的元素。爲此,我正在使用functx:if-not-empty函數。我得到的是一系列項目,我只需要其中的一個。這是我的代碼到目前爲止:
declare function xf:createHeader($var as element(sgi:inputType))
{
<ns0:Header>
<ns0:MSG_TYPE>MESSAGETYPE</ns0:MSG_TYPE>
<ns0:MSG_NAMESPACE>{ fn:namespace-uri($var) }</ns0:MSG_NAMESPACE>
<ns0:UNIT>
{
let $x := $var/DataArea/OrganisationalUnit[@type = "Responsible"]/PartnerID[@agencyID = "TT4"]
for $y in $x
where functx:if-not-empty($y)
return data($y)
}
</ns0:UNIT>
</ns0:Header>
};
事實上,你可以做掉與整個'for'和只是'返回數據($ x [functx:if-not-empty(。)] [1])' – 2015-03-25 13:05:42