首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xquery-如何从特定元素中选择值,即使该元素具有空值/多个以回车符分隔的值

xquery-如何从特定元素中选择值,即使该元素具有空值/多个以回车符分隔的值
EN

Stack Overflow用户
提问于 2012-10-15 22:33:43
回答 1查看 306关注 0票数 0

请考虑以下XML--

代码语言:javascript
复制
<table class="rel_patent"><tbody>
<tr><td>Name</td><td>Description</td></tr>
<tr><td>A</td><td>Type-A</td></tr>
<tr><td>B</td><td>Type-B</td></tr>
<tr><td>C</td><td>Type-C</td></tr>
<tr><td>AC</td><td>Type-C
Type-A</td></tr>
<tr><td>D</td><td></td></tr>
</tbody></table>

现在我想用corresp选择并显示"Name“的所有值。当描述元素具有空值即具有name=D的元素时,值为" Description“element...even,并且,当描述元素具有由enter分隔的值时,我希望这些值(属于描述)位于不同的行中-即具有name=AC的元素的类型-C和类型-A

这是我写的查询类型--

代码语言:javascript
复制
let $rows_data:= $doc//table[@class="rel_patent"]/tbody/tr[1]/following-sibling::tr
for $data_single_row in $rows_data
return 
    let $cited_name:= $data_single_row/td[1]
    let $original_types_w_return:= $data_single_row/td[4]
    let $original_types_list:=    tokenize($original_types_w_return, '(\r?\n|\r)$')
    for $cited_type_each at $pos2 in $original_types_list
    return concat( $cited_name, '^', $original_type_each, '^', $pos2)

但是,我得到了以下类型的响应--

代码语言:javascript
复制
A^Type-A^1
B^Type-B^1
C^Type-C^1
AC^Type-C
Type-A^1

现在,我需要在上面的代码+响应中得到以下正确的结果

(1) "AC“的数据应该是两个单独的行,其中"Type-C”和"Type-A“以及相应的数据都在这两行中的每一行。每行最后一个字段的值为1和2(因为这是2个值)

(2)根本没有显示"D“的数据。

我如何纠正上面的代码以符合这两个要求?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-15 23:16:41

这是可行的:

代码语言:javascript
复制
for $data_single_row in $rows_data
return 
    let $cited_name:= $data_single_row/td[1]
    let $original_types_w_return:= $data_single_row/td[2]
    let $original_types_list:=    tokenize(concat($original_types_w_return, " "), '(\r?\n|\r)')
    for $cited_type_each at $pos2 in $original_types_list
    return concat( $cited_name, '^', normalize-space($cited_type_each), '^', $pos2)

(第一个更改是用$cited_type_each替换$original_type_each,用2替换4 )。

第一个问题可以通过删除tokenize参数末尾的$来解决,因为在默认模式下,$只匹配字符串的末尾。

第二个问题是通过添加一个空格$original_types_w_return来解决的,这样它就不是空的,tokenize会返回一些东西,然后用XQuery - space删除它(在for3.0中,可能可以通过在for表达式中使用'allowing empty‘来解决这个问题)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12897876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档