0

私はこの XML ファイルを持っており、これらのクエリを見つけたいと思っています:

  1. 写真を含むすべての本
  2. 複数の写真があるすべての本
  3. 「ラリー・ニーヴン」で本を書いたすべての著者

XML は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE inventory SYSTEM "books.dtd">
<inventory>
    <book num="b1">
        <title>Snow Crash</title>
        <author>Neal Stephenson</author>
        <publisher>Spectra</publisher>
        <price>14.95</price>
        <chapter>
            <title>Snow Crash - Chapter A</title>
            <paragraph>
                This is the <emph>first</emph> paragraph.
                <image file="firstParagraphImage.gif"/>
                afetr image...
            </paragraph>
            <paragraph>
                This is the <emph>second</emph> paragraph.
                <image file="secondParagraphImage.gif"/>
                afetr image...
            </paragraph>
        </chapter>
        <chapter>
            <title>Snow Crash - Chapter B</title>
            <section>
                <title>Chapter B - section 1</title>
                <paragraph>
                    This is the <emph>first</emph> paragraph of section 1 in chapter B.
                    <image file="Chapter_B_firstParagraphImage.gif"/>
                    afetr image...
                </paragraph>
                <paragraph>
                    This is the <emph>second</emph> paragraph of section 1 in chapter B.
                    <image file="Chapter_B_secondParagraphImage.gif"/>
                    afetr image...
                </paragraph>
            </section>
        </chapter>
        <chapter>
            <title>Chapter C</title>
            <paragraph>
                This chapter has no images and only one paragraph
            </paragraph>
        </chapter>
    </book>
    <book num="b2">
        <title>Burning Tower</title>
        <author>Larry Niven</author>
        <author>Jerry Pournelle</author>
        <publisher>Pocket</publisher>
        <price>5.99</price>
        <chapter>
            <title>Burning Tower - Chapter A</title>
        </chapter>
        <chapter>
            <title>Burning Tower - Chapter B</title>
            <paragraph>
                This is the <emph>second</emph> paragraph of chapter B in the 2nd book.
                <image file="Burning_Tower_Chapter_B_secondParagraphImage.gif"/>
                afetr image...
            </paragraph>
        </chapter>
    </book>
    <book num="b3">
        <title>Zodiac</title>
        <author>Neal Stephenson</author>
        <publisher>Spectra</publisher>
        <price>7.50</price>
        <chapter>
            <title>Zodiac - Chapter A</title>
        </chapter>
    </book>
    <!-- more books... -->
</inventory>

そして、ここに私の答えがあります:

1. /inventory/book[count(image)=1]/title
2. /inventory/book[count(image)>=1/title
3. /inventory/book[author=”Larry Niven”][count(author)>1]/author

しかし、これらの回答を Java XPath コードでテストすると、うまくいきません。

間違いはどこですか?ありがとう

4

1 に答える 1

2

最初の 2 つはimage、ドキュメント内の場所に関連する問題があります。現在のノードから検索し、すべての子 (直接の子だけでなく) を検索する必要があります。

/inventory/book[count(.//image) = 1]/title
/inventory/book[count(.//image) >= 1]/title

あなたの最後のものには、引用符(一重引用符を使用する必要があります)と重複の問題がありますLarry Niven。修正は次のとおりです。

/inventory/book[author='Larry Niven'][count(author) > 1]/author[. != 'Larry Niven']

and代わりに使用できることに注意してください。

/inventory/book[author='Larry Niven' and count(author) > 1]/author[. != 'Larry Niven']
于 2012-05-21T06:16:05.097 に答える