我正在尝试格式化输出
我有一个xml
<?xml version="1.0" encoding="UTF-8"?>
<personnel>
<person id="Big.Boss">
<name>
<family>Boss</family>
<given>Big</given>
</name>
<email>chief@oxygenxml.com</email>
<link subordinates="one.worker two.worker three.worker four.worker
five.worker"/>
</person>
<person id="one.worker">
<name>
<family>Worker</family>
<given>One</given>
</name>
<email>one@oxygenxml.com</email>
<link manager="Big.Boss"/>
</person>
<person id="two.worker">
<name>
<family>Worker</family>
<given>Two</given>
</name>
<email>two@oxygenxml.com</email>
<link manager="Big.Boss"/>
</person>
<person id="three.worker">
<name>
<family>Worker</family>
<given>Three</given>
</name>
<email>three@oxygenxml.com</email>
<link manager="Big.Boss"/>
</person>
<person id="four.worker">
<name>
<family>Worker</family>
<given>Four</given>
</name>
<email>four@oxygenxml.com</email>
<link manager="Big.Boss"/>
</person>
<person id="five.worker">
<name>
<family>Worker</family>
<given>Five</given>
</name>
<email>five@oxygenxml.com</email>
<link manager="Big.Boss"/>
</person>
</personnel> 这是XQuery
for $b in doc("Persons.xml")/personnel/person/name
where $b/family = "Boss"
return
<persons>
<found> { $b/family, $b/given}</found>
</persons>我得到了这个输出
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<found>
<family>Boss</family>
<given>Big</given>
</found>
</persons>我如何才能得到这个由空格分隔的输出
<persons>
<found>Big Boss</found>
</persons> 发布于 2014-04-17 01:40:05
只需选择元素的字符串值,而不是元素本身:
<found>{
$b/family/fn:string(),
$b/given/fn:string()
}</found> 您还可以使用union运算符|以更简洁的方式编写此代码
<found>{ $b/(family|given)/fn:string() }</found> 发布于 2014-04-19 13:48:29
这些是其他可能的选项。
使用fn:data() -
<persons>
<found> { data($b/family), data($b/given)}</found>
</persons>使用fn:data() -
<persons>
<found> { data($b/family), data($b/given)}</found>
</persons>使用fn:string-join() -
<persons>
<found> { string-join(($b/family, $b/given), " ")}</found>
</persons>发布于 2014-05-02 19:41:26
$b/family正如您所注意到的,这将返回节点<family>Boss</family>,其中包含所有子节点。在本例中,唯一的子对象是您想要的(#PCDATA)。
要返回节点内的文本(#PCDATA),请使用text()
$b/family/text()您的返回值应该是:
<persons>
<found>
{
$b/family/text(),
" ",
$b/given/text()
}
</found>
</persons>https://stackoverflow.com/questions/23115768
复制相似问题