简体   繁体   English

BaseX上的Xpath / Xquery没有带来任何结果

[英]Xpath/Xquery on BaseX bringing back no results

Trying to use XPath/Xquery for the first time, within BaseX and i have a collection/database of opendata.gov for carpark snippet below, 试图在BaseX中第一次使用XPath / Xquery,我在下面的carpark片段中有一个opendata.gov的集合/数据库,

<?xml version="1.0" encoding="utf-8"?>
<CarParkDataImport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://www.transportdirect.info/carparking B:/CODE/carparks/CarParking.xsd" xmlns="http://www.transportdirect.info/carparking">
<CarPark>
    <CarParkRef>3</CarParkRef>
    <CarParkName>Nunnery Lane</CarParkName>
    <Location>York</Location>
    <Address>Nunnery Lane--York--North Yorkshire</Address>
    <Postcode>YO23 1AA</Postcode>
</CarPark>

what i am trying to do is find where the location is a certain place, in this instance "Nunnery Lane" and then return the carpark reference so i tried (the db is called Car_park_data, and has 8 documents inside) 我想要做的是找到位置是某个地方的位置,在这个例子中“Nunnery Lane”,然后返回停车场参考,所以我试过(db被称为Car_park_data,里面有8个文件)

collection("Car_park_data")/CarParkDataImport/CarPark[Location="Nunnery Lane"]/CarParkRef

and then tried flowr 然后尝试了flowr

for $x in collection("Car_park_data")/CarParkDataImport/CarPark
where $x/Location="Nunnery Lane"
order by $x/CarParkRef
return $x/CarParkRef

both bring back no hits..the full details the first query is(the result bit of basex) 两者都没有回击......第一个查询的完整细节(basex的结果位)

Compiling:
- pre-evaluating fn:collection("Car_park_data")
- adding text() step
- applying text index
Query:
collection("Car_park_data")/CarParkDataImport/CarPark[Location="Nunnery  Lane"]/CarParkRef
Optimized Query:
db:text("Car_park_data", "Nunnery  Lane")/parent::Location/parent::CarPark[parent::CarParkDataImport/parent::docume nt-node()]/CarParkRef
Result:
- Hit(s): 0 Items
- Updated: 0 Items
- Printed: 0 Bytes
- Read Locking: local [Car_park_data]
- Write Locking: none
Timing:
- Parsing: 1.33 ms
- Compiling: 0.54 ms
- Evaluating: 0.36 ms
- Printing: 0.28 ms
- Total Time: 2.52 ms
Query plan:
<QueryPlan>
<CachedPath>
 <ValueAccess data="Car_park_data" type="TEXT">
  <Str value="Nunnery Lane" type="xs:string"/>
 </ValueAccess>
 <IterStep axis="parent" test="Location"/>
  <IterStep axis="parent" test="CarPark">
  <CachedPath>
    <IterStep axis="parent" test="CarParkDataImport"/>
    <IterStep axis="parent" test="document-node()"/>
  </CachedPath>
   </IterStep>
   <IterStep axis="child" test="CarParkRef"/>
  </CachedPath>
</QueryPlan>

what am i doing wrong, As i said using basex, you can see that it its viable Xpat/Xquery, (ie basex reports no errors) but i am guessing something wrong in my Xquery? 我做错了什么,正如我所说的使用basex,你可以看到它是可行的Xpat / Xquery,(即basex报告没有错误)但我猜我的Xquery有问题吗?

if i do an "find" with BaseX for "Nunnery Lane" this is the results that come back 如果我使用BaseX为“Nunnery Lane”做“查找”,这就是回来的结果

Query:
/descendant-or-self::*[text() contains text "Nunnery Lane"]
Result:
- Hit(s): 4 Items
- Updated: 0 Items
- Printed: 601 Bytes
- Read Locking: global
- Write Locking: global

so i then tried adding the contains text to my query, to the same avale, no hits 所以我然后尝试将包含文本添加到我的查询,相同的avale,没有命中

Thank you for any help 感谢您的任何帮助

Take the namespace into account by adding 通过添加将命名空间考虑在内

declare default element namespace "http://www.transportdirect.info/carparking";

see http://www.w3.org/TR/xquery/#id-default-namespace . 请参阅http://www.w3.org/TR/xquery/#id-default-namespace

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM