gpt4 book ai didi

xml - 如何排序,然后挑选一个项目

转载 作者:数据小太阳 更新时间:2023-10-29 01:57:28 24 4
gpt4 key购买 nike

我正在使用 XSLT 从提要中获取数据。目前我用这个block of code ,它只是从提要中挑选第一个项目。我对其进行了一些更改,以便它适用于此示例 XML。

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="/">
<xsl:value-of select="catalog/book/author"/>
</xsl:template>

</xsl:stylesheet>

我想按价格对 xml 进行排序,然后选择与价格最高的书关联的作者。我已经尝试了各种方法,但我似乎无法弄明白。

当前输出是“Gambardella, Matthew”,但我需要它是“Galos, Mike”。

最佳答案

I want to sort the xml by price, and then pick the author associated with the highest priced book.

FWIW,您也可以使用纯 XPath 来做到这一点。

/catalog/book[not(price < /catalog/book/price)]/author

(谓词是这样写的:“选择任何<book>,其<price> 不低于任何一本书。”)

这将选择 <author>Galos, Mike</author>sample XML .

注释

  • 此表达式不会选择 价格最高的书,而是选择所有 价格最高的书(即,如果有两本书,它会选择两本书同样的价格)。使用

    /catalog/book[not(price < /catalog/book/price)][1]/author

    只选择一本匹配的书(将选择文档顺序中的第一本)。

  • XPath 自动将“小于/大于(或等于)” 的两个操作数强制转换为 numbers 的比较类型.只要<price>的值可以直接转换为数字,上面的表达式会成功。

  • 一定是逆逻辑(“不(低于任何)”),因为相反(“大于任何”)永远不可能真(而“大于或等于任何” 将始终为真)。

  • nodeset1[expression < nodeset2] 的时间复杂度操作是:
    O(count(nodeset1) × count(nodeset2))
    在上述情况下 nodeset1nodeset2相同,所以有效时间复杂度为:
    O(n²)
    换句话说,这不是解决这个问题的最有效方法(我会说 <xsl:apply-templates><xsl:sort> 是),但另一方面 - 它是一个单线,可能对你来说足够快.

关于xml - 如何排序,然后挑选一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13252426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com