Ich habe diese XPath:
/document/offers/offer/concat(price/text(), for $r in . return 'default-value'[not($r/price/text())])
, die (für fehlende Tags Standardwert) für dieses Dokument mein Problem löst:
<document>
<company>
<ceo>Elon Musk</ceo>
<employees>13058</employees>
<address>
<city>Palo Alto</city>
<state>California</state>
<country>USA</country>
</address>
</company>
<offers>
<offer avail="0">
<id>1</id>
<model>Tesla Roadster</model>
<imageUrl>https://www.teslamotors.com/sites/default/files/styles/blog-picture_2x_1400xvar_/public/0H8E6227_1.jpg</imageUrl>
</offer>
<offer avail="1">
<id>2</id>
<model>Tesla Model S</model>
<price>63400.00</price>
<offerUrl>https://www.teslamotors.com/models</offerUrl>
<imageUrl>https://www.teslamotors.com/tesla_theme/assets/img/models/section-initial.jpg</imageUrl>
</offer>
<offer avail="1">
<id>3</id>
<model>Tesla Model X</model>
<price>69300.00</price>
<offerUrl>https://www.teslamotors.com/modelx</offerUrl>
<imageUrl>https://www.teslamotors.com/tesla_theme/assets/img/modelx/section-exterior-profile.jpg</imageUrl>
</offer>
<offer avail="1">
<id>4</id>
<model>Tesla Model 3</model>
<price>35000.00</price>
<offerUrl>https://www.teslamotors.com/model3</offerUrl>
<imageUrl>https://www.teslamotors.com/sites/default/files/images/model-3/gallery/gallery-1.jpg</imageUrl>
</offer>
</offers>
</document>
durch Rückkehr:
default-value
63400.00
69300.00
35000.00
Nach http://videlibri.sourceforge.net/cgi-bin/xidelcgi, das funktioniert, aber ich kann nicht mit lxml in Python arbeiten. Im Moment weiß ich nicht einmal, wie man diese Art von xpath googlen soll. Also ... wie diese "inneren Fors" in XPaths heißen?
lxml verwendet libxml, die XPath implementiert nur 1,0, also hier das Problem. –