2015-04-12 43 views
2

試圖使用XPath/XQuery項在第一時間內BaseX和我有opendata.gov下面停車場片段的集合/數據庫,的Xpath /對的Xquery BaseX帶回沒有結果

<?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> 

我我試圖做的是尋找到的位置是某一個地方,在這種情況下「庵巷」,然後返回停車場參考,所以我試圖(分貝叫Car_park_data,並具有內8個文件)

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

然後嘗試流動

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

都帶回沒有hits..the完整信息,第一查詢(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> 

我在做什麼錯了,因爲我使用basex說,你可以看到它其可行的Xpat/Xquery(即basex報告沒有錯誤),但我猜我的Xquery中有什麼問題?

,如果我做了一個「發現」與BaseX爲「庵巷」這樣的結果回來

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 

於是我嘗試添加了包含文本到我的查詢,以同樣的avale,無打

感謝您的幫助

回答

3

採取命名空間考慮加入

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

參見http://www.w3.org/TR/xquery/#id-default-namespace

+0

感謝您的回覆,我在兩次查詢之前都添加了它,並且它的結果仍然沒有匹配,當您將xml創建爲數據庫時,BaseX是否爲您聲明瞭名稱空間? – funkmaster20th

+0

那麼你的樣本有'約克'而你的查詢確實'位置=「女修道院巷'',所以我不明白這種情況如何是真的。我認爲命名空間聲明是需要用命名空間來處理XML的。因此,如果您的XML確實有'女修道院'發佈,請嘗試'CarParkName ='Nunnery Lane''條件。 –

+0

編輯:好吧..某些原因...正在工作...謝謝..聲明默認元素名稱空間「http://www.transportdirect.info/carparking」; /CarParkDataImport/CarPark [位置=「約克」]/CarParkRef'帶來的結果對不起約克只是一個片段,尼姑車道是在xml的其餘部分,謝謝你的幫助 – funkmaster20th