带条件的Xml路径

时间:2012-05-21 16:28:28

标签: xml xpath

我有以下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>

如何编写以下XmlPath 1.0:

1)退还所有书籍,所有书籍的价格都不等于14.95?

2)退还所有价格大于书后价格的书籍。

提前谢谢。

2 个答案:

答案 0 :(得分:3)

试试这些:

  1)退还所有书籍,所有书籍的价格都不等于14.95?

 /inventory/book[price != 14.95]/title
  

2)将所有书籍的价格大于后面的书价格。

 /inventory/book[price>following-sibling::*[1]/price]/title

答案 1 :(得分:2)

如何编写以下XmlPath 1.0:

1)退还所有书籍,所有书籍的价格都不等于14.95?

/inventory/book[price/text() != 14.95] 

“/ inventory / book”为您提供“库存”节点名为“books”的所有子元素。和“price / text()!= 14.95”只是意味着每本书,检查一个名为“价格”的子元素是否与14.95不同。而不是“/ inventory / book”,您可以使用“// book”来方便您的应用程序。 “// book”从当前节点(在本例中为根元素)询问所有名为“book”的后代元素

2)退还所有价格大于书后价格的书籍。

/inventory/book[price >  following-sibling::book[position() = 1]/price]