1

アイテムが販売されていないタイプの製品を提供するクエリを考え出す必要があります。つまり、アイテムのタイプが衣料品で、トランザクションのリストに衣料品が表示されない場合、それを表示する必要があります。

これは私の XML ファイルです (超カナダ的で申し訳ありません)。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE store [

<!ELEMENT store (product*, transaction*)> 
<!ATTLIST store name CDATA #REQUIRED > 

<!ELEMENT product EMPTY> 
    <!ATTLIST product 
        name ID #REQUIRED 
        type CDATA #REQUIRED 
        price CDATA #REQUIRED 
    > 

    <!ELEMENT transaction EMPTY> 
    <!ATTLIST transaction 
products IDREFS #REQUIRED 
sumPrice CDATA #REQUIRED 
    >

]>
<store name="Gordons">
<product name="beaverCoat" type="clothing" price="100"/>
<product name="hockeyStick" type="equipment" price="30"/>
<product name="hockeyPuck" type="equipment" price="5"/>
<product name="icePick" type="equipment" price="40"/>
<product name="mooseMeat" type="food" price="350"/>
<product name="salmon" type="food" price="15"/>
<transaction products="salmon mooseMeat" sumPrice="365"/>    
<transaction products="hockeyPuck hockeyStick" sumPrice="35"/>
<transaction products="hockeyStick mooseMeat" sumPrice="380"/>
<transaction products="salmon mooseMeat" sumPrice="300"/>
<transaction products="hockeyStick hockeyStick hockeyStick" sumPrice="30"/>
</store>

望ましい出力

<transaction products="salmon mooseMeat" sumPrice="365"/>
<transaction products="salmon mooseMeat" sumPrice="300"/>

別のトランザクションと同じ商品を持つトランザクションであるため (互いに)

私の試みいくつかのクエリをいじっ てみましたが、うまくいきません。これは私が得た最も近いものです:

これは私が試したことです:

//transaction[id(@products)  = //transaction/@products]

これはうまくいくようです - すべての商品が他のトランザクションの商品属性と一致するすべてのトランザクションを見つけてください。しかし、それはヒットを得ていません。

4

1 に答える 1