Как получить количество записей с помощью XQuery - PullRequest
1 голос
/ 08 апреля 2020

У меня есть "Библиотека. xml" файл, содержащий записи книг в виде

<?xml version="1.0" encoding="UTF-8"?>
<library>
    <book>
        <title>DBMS</title>
        <author>Korth</author>
        <publisher>Pragati</publisher>
        <price>500</price>
    </book>

    <book>
        <title>C Programming</title>
        <author>Balguruswami</author>
        <publisher>Vision</publisher>
        <price>1250</price>
    </book>

    <book>
        <title>DBMS</title>
        <author>Balguruswami</author>
        <publisher>Vision</publisher>
        <price>1300</price>
    </book>

    <book>
        <title>DBMS</title>
        <author>Ramakrishna</author>
        <publisher>Nirali</publisher>
        <price>350</price>
    </book>

    <book>
        <title>C++</title>
        <author>E Balguruswami</author>
        <publisher>Techmax</publisher>
        <price>350</price>
    </book>

</library>

Как получить количество книг СУБД только с использованием XQuery - FLOWER ? Я пробовал это:

let $books := (doc("LibraryXML.xml")/library/book)

    return <result>
    {
        for $x in $books
        where $x/title = "DBMS"
        return count($x)
    }
    </result>

И в соответствии с библиотекой . xml ответ должен быть 3. Но я получаю это как:

<?xml version="1.0" encoding="UTF-8"?>
<result>1 1 1</result>

1 Ответ

2 голосов
/ 08 апреля 2020

Для этого в XQuery 3.0 нет необходимости в полном выражении FLWOR со всеми предложениями.

Проверьте это.

XQuery

let $library := doc("e:\Temp\LibraryXML.xml")/library/book[title='DBMS']
return <result>{count($library)}</result>

Выход

<result>3</result>
...