我们如何在XPATH 1.0中获得最长的预订时间? [英] How do we get the Longest Booking in XPATH 1.0?

查看:83
本文介绍了我们如何在XPATH 1.0中获得最长的预订时间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用属性 StartDate EndDate 获取预订时间最长的人的姓名 belwo我提到了xml虚拟数据,我喜欢12个不同的数据,并且有更多的人,我用于xpath的版本是1.0

How can I get the name of the person who has the longest Booking using the attribute StartDate and EndDate belwo i menioned the xml dummy data i have like 12 diffrent datas and more people , the version i am using for xpath is 1.0

<rent number="101111">
    <car>
        <startDate>2018-02-08</startDate>
        <endDate>2018-03-05</endDate>
        <Location>Toranto</Location>
        <carType>BMW</carType>
        <transmissionType>Automatic</transmissionType>
    </car>
    <person>
        <licenseNumber> 02389749372 </licenseNumber>
        <name>Alexa Steve</name>
        <dob>1999-03-01</dob>
        <phone>
            <type>Home</type>
            <number>44 010 1111 4567</number>
        </phone>
        <email> Alexa@steve.ca</email>
    </person>
    <price>
        <Rate>100.50</Rate>
    </price>
</rent>



<rent number="103311">
    <car>
        <startDate>2018-07-01</startDate>
        <endDate>2018-09-05</endDate>
        <Location>ottawa</Location>
        <carType>audi 8</carType>
        <transmissionType>Automatic</transmissionType>
    </car>
    <person>
        <licenseNumber> 033329372 </licenseNumber>
        <name>mike lornco</name>
        <dob>1960-03-03</dob>
        <phone>
            <type>Home</type>
            <number>44 010 1111 3333</number>
        </phone>
        <email> mikelornokorenco@gmail.com</email>
    </person>
    <price>
        <Rate>300.50</Rate>
    </price>
</rent>

到目前为止我做了什么:

what i did so far:

/rent/StartDate[not(text() <= preceding-sibling::StartDate/text()) and not(text() <=following-sibling::StartDate/text())]

但是它不起作用,也许我缺少任何帮助吗?

but it's not working maybe I'm missing something any help?

我们如何获得预订时间最长的人的名字?

How do we get the name of the person who has the Longest Booking?

推荐答案

重复的主题?请参阅:如何做我们使用1.0版加入XPATH吗?

Duplicate topic ? See : how do we join in XPATH using version 1.0?

我已经处理了以下数据样本:

I've worked with this sample of data:

<data>
<rent number="101111">
    <car>
        <startDate>2018-02-08</startDate>
        <endDate>2018-03-05</endDate>
        <Location>Toranto</Location>
        <carType>BMW</carType>
        <transmissionType>Automatic</transmissionType>
    </car>
    <person>
        <licenseNumber> 02389749372 </licenseNumber>
        <name>Alexa Steve</name>
        <dob>1999-03-01</dob>
        <phone>
            <type>Home</type>
            <number>44 010 1111 4567</number>
        </phone>
        <email> Alexa@steve.ca</email>
    </person>
    <price>
        <Rate>100.50</Rate>
    </price>
</rent>
<rent number="103311">
    <car>
        <startDate>2018-07-01</startDate>
        <endDate>2018-09-05</endDate>
        <Location>ottawa</Location>
        <carType>audi 8</carType>
        <transmissionType>Automatic</transmissionType>
    </car>
    <person>
        <licenseNumber> 033329372 </licenseNumber>
        <name>mike lornco</name>
        <dob>1960-03-03</dob>
        <phone>
            <type>Home</type>
            <number>44 010 1111 3333</number>
        </phone>
        <email> mikelornokorenco@gmail.com</email>
    </person>
    <price>
        <Rate>300.50</Rate>
    </price>
</rent>
</data>

对于具有2个rent元素的XML,请使用它来获取最长的预订时间:

For XML with 2 rent elements, use this to get the longest booking :

//rent[translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./following::endDate,"-","")-translate(./following::startDate,"-","")]|//rent[translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./preceding::endDate,"-","")-translate(./preceding::startDate,"-","")]

对于具有3个或更多租金元素的XML,请使用它来获取最长的预订时间:

For XML with 3 or more rent elements, use this to get the longest booking :

//rent[translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./following::endDate,"-","")-translate(./following::startDate,"-","") and translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./preceding::endDate,"-","")-translate(./preceding::startDate,"-","")]|//rent[1][translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./following::endDate,"-","")-translate(./following::startDate,"-","") and translate(.//endDate,"-","")-translate(.//startDate,"-","")>=//rent[translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./following::endDate,"-","")-translate(./following::startDate,"-","") and translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./preceding::endDate,"-","")-translate(./preceding::startDate,"-","")]]|//rent[last()][translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./preceding::endDate,"-","")-translate(./preceding::startDate,"-","") and translate(.//endDate,"-","")-translate(.//startDate,"-","")>=//rent[translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./following::endDate,"-","")-translate(./following::startDate,"-","") and translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./preceding::endDate,"-","")-translate(./preceding::startDate,"-","")]]

使用 http://www.xpathtester.com/xpath

这些表达式将获得最长的预订.要获取人名,表达式的某些部分需要"//name".如有必要,我会在以后添加.

EDIT : These expressions will get the longest booking. To get the person name, it needs "//name" in some parts of the expression. If necessary I'll add it later.

XPath表达式可获取预订时间最长的人的姓名:

EDIT 2 : XPath expressions to get the name of the person with the longest booking :

对于2个租金元素:

//rent[translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./following::endDate,"-","")-translate(./following::startDate,"-","")]//name/text()|//rent[translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./preceding::endDate,"-","")-translate(./preceding::startDate,"-","")]//name/text()

对于3个或更多租金元素:

For 3 or more rent elements :

//rent[translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./following::endDate,"-","")-translate(./following::startDate,"-","") and translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./preceding::endDate,"-","")-translate(./preceding::startDate,"-","")]//name/text()|//rent[1][translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./following::endDate,"-","")-translate(./following::startDate,"-","") and translate(.//endDate,"-","")-translate(.//startDate,"-","")>=//rent[translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./following::endDate,"-","")-translate(./following::startDate,"-","") and translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./preceding::endDate,"-","")-translate(./preceding::startDate,"-","")]]//name/text()|//rent[last()][translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./preceding::endDate,"-","")-translate(./preceding::startDate,"-","") and translate(.//endDate,"-","")-translate(.//startDate,"-","")>=//rent[translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./following::endDate,"-","")-translate(./following::startDate,"-","") and translate(.//endDate,"-","")-translate(.//startDate,"-","")>=translate(./preceding::endDate,"-","")-translate(./preceding::startDate,"-","")]]//name/text()

示例数据的输出:Mike Lornco

Output for your sample data : mike lornco

这篇关于我们如何在XPATH 1.0中获得最长的预订时间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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