XML 中的重复数据 [英] Repeated data in a XML

查看:50
本文介绍了XML 中的重复数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我怎样才能得到它在变量中没有重复的 () 数据.

我使用这个功能:

<预><代码>...让 $person:= $hopital1/persona对于 $seq in (1 to count($derechohabiente))返回$person[$seq][not(xf:is-node-secuence-equal(.,$person[position() <$seq]))]将函数 xf:is-node-secuence-equal ( $node as node()? , $seq as node()*) 声明为 xs:boolean {$seq 中的一些 $nodeInSeq 满足 fn:deep-equal($nodeInSeq/name, $node/ns0:name)};...

这是XML示例,我只是想得到约瑟夫的信息,但我得到的只是重复的数据

<医院><人物><idee>1902</idee><姓名>约瑟夫</姓名><年龄>60</年龄><房间>4</房间><service>false</service></人><人物><idee>3246</idee><姓名>约翰</姓名><年龄>34</年龄><房间>0<service>false</service></人><人物><idee>3246</idee><姓名>约翰</姓名><年龄>34</年龄><房间>0<service>true</service></人><人物><idee>3246</idee><姓名>约翰</姓名><年龄>34</年龄><房间>5</房间><service>true</service></人></医院>

评论更新

<块引用>

我想获取不是的数据重复;如果您看到 XML 示例,这是我想要的结果:

<医院><人物><idee>1902</idee><姓名>约瑟夫</姓名><年龄>60</年龄><房间>4</房间><service>false</service></人></医院>

解决方案

两个 XQuery 表达式:

/hospital/person[not(name = (../person except .)/name)]

/hospital/person[not(index-of(../person/name,name)[2])]

How can I get the () data which it's not repeated in a variable.

I use this function:

.
.
.
let $person:= $hopital1/persona
    for $seq in (1 to count($derechohabiente))
    return
       $person[$seq]
       [not(xf:is-node-secuence-equal(.,$person[position() < $seq])) ]

declare function xf:is-node-secuence-equal ( $node as node()? , $seq as node()*)  as xs:boolean {
    some $nodeInSeq in $seq satisfies fn:deep-equal($nodeInSeq/name, $node/ns0:name)
};
.
.
.

This is the XML example, I just want to get Joseph's information, but I get only the data repeated

<?xml version="1.0"?>
<hospital>
    <person>
        <idee>1902</idee>
        <name>Joseph</name>
        <age>60</age>
        <room>4</room>
        <service>false</service>        
    </person>
    <person>
        <idee>3246</idee>
        <name>John</name>
        <age>34</age>
        <room>0</room>
        <service>false</service>        
    </person>
    <person>
        <idee>3246</idee>
        <name>John</name>
        <age>34</age>
        <room>0</room>
        <service>true</service>        
    </person>
    <person>
        <idee>3246</idee>
        <name>John</name>
        <age>34</age>
        <room>5</room>
        <service>true</service>        
    </person>
</hospital>

Update from comments

I want to get the data which is not repeated; if you see the XML example, this is the result I'd like to get:

<hospital>
    <person>
        <idee>1902</idee>
        <name>Joseph</name>
        <age>60</age>
        <room>4</room>
        <service>false</service>
    </person>
</hospital>

解决方案

Two XQuery expressions:

/hospital/person[not(name = (../person except .)/name)]

And

/hospital/person[not(index-of(../person/name,name)[2])]

这篇关于XML 中的重复数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆