Я пишу .xq преобразование для службы osb:
У меня есть следующая структура тегов:
<case>
<segment> Earth </segment>
<subSegment> Africa </subSegment>
<complexType>
<param1> values1 </param1>
<param2> values2 </param2>
</complexType>
</case>
Я бы хотел сопоставить их соответственно с
<case>
<complexType>
<segment> Earth </segment>
<subSegment> Africa </subSegment>
<param1> values1 </param1>
<param2> values2 </param2>
</complexType>
</case>
так, что если содержимое в сегменте / subSegment / param1 / param2 пусто, то эти теги отсутствуют (одновременно) вообще, после преобразования не будет тегов complexType:
<case>
</case>
Итак, когда я делаю что-то подобное:
{let $complexType := $cc/ns1:case/ns2:complexType
return
<ns3:complexType>
{
for $segment in $cc/ns1:case/ns2:segment
return <ns3:segment>{ data($segment) }</ns3:segment>
}
{
for $subSegment in $cc/ns1:case/ns2:subSegment
return <ns3:subSegment>{ data($subSegment) }</ns3:subSegment>
}
{
for $param1 in $complexType/ns2:param1
return <ns3:param1>{ data($param1) }</ns3:param1>
}
{
for $param2 in $complexType/ns2:param2
return <ns3:param2>{ data($param2) }</ns3:param2>
}
}
Он почти выполняет свою работу, но в случае, если все пусто или отсутствует, он все равно возвращает пустой тег complexType:
<case>
<complexType></complexType>
</case>
Пожалуйста, дайте мне подсказку о том, как это исправить. Спасибо!