如何通过Xquery从XML文件中获取最厚书的标题?

时间:2016-04-24 23:54:50

标签: xml xquery

我有一个带有下一个结构的XML文件:

<Books>
  <Book Topic="Databases" eBook = "Available">
    <Pablisher>Wrox</Pablisher>
    <Title>Microsoft SQL Server 2008 Integration Services: Problem, Design, Solution</Title>
    <Authors>
      <Author>Erik Veerman</Author>
      <Author>Jessica M. Moss</Author>
      <Author>Brian Knight</Author>
      <Author>Jay Hackney</Author>
    </Authors>
      <ISBN>978-0-470-52576-0</ISBN>
      <Pages>480</Pages>
      <PublicationDate>November 2009</PublicationDate>
      <Price>49.99</Price>
  </Book>
  </Books>

有很多书,我必须归还最厚的一本。 我唯一知道的是如何找到最大页数:

max(for $x in doc("C:\XMLFile1.xml")/Books/Book/Pages
return $x)

但下一步对我来说绝对不清楚。提前谢谢。

2 个答案:

答案 0 :(得分:2)

您要做的是获取该最大值,并找到一本属于

的书
let $doc =     doc("C:\XMLFile1.xml")
let $pages := max($doc/Books/Book/Pages)
 return $doc/Books/book[Pages = $pages]

答案 1 :(得分:1)

您也可以使用单个XPath表达式执行此操作:

/Books/Book[. is /Books/Book[Pages = max(/Books/Book/Pages)]]