查询在XQuery中不返回任何结果

时间:2017-04-02 18:10:54

标签: namespaces xquery basex

我尝试在BaseX中使用XQuery查询XML文件。不幸的是,查询没有返回结果。我认为这是由XQuery的序言中的命名空间声明不正确引起的。请参阅下面的代码,了解原始XML中使用的命名空间。

<page xmlns="http://www.somewebsite.nl/Productoverzicht"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dcterms="http://purl.org/dc/terms/" 
xmlns:overheid="http://standaarden.overheid.nl/owms/terms/" 
xmlns:overheidproduct="http://standaarden.overheid.nl/product/terms/" 
xmlns:overheidsc="http://standaarden.overheid.nl/sc/terms/" 
xsi:schemaLocation="http://www.somewebsite.nl/Productoverzicht 
http://www.somewebsite.nl/xsd/productoverzicht6.2.xsd 
http://standaarden.overheid.nl/product/terms/ 
http://standaarden.overheid.nl/sc/4.0/xsd/sc.xsd">

我复制了原始XML的一部分,其中只包含一个产品项目。

我尝试使用像\\\title\\\product这样的XQuery和XPath表达式无效:但是没有显示结果。

示例XML BaseX使用(factbook.xml)确实使用相同类型的命令显示结果。我猜它可能与命名空间有关。

我的最终目标是列出包含指向特定网址的超链接的所有产品。

<?xml version="1.0" encoding="UTF-8"?>
<page xmlns="http://www.somewebsite.nl/Productoverzicht" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:overheid="http://standaarden.overheid.nl/owms/terms/" xmlns:overheidproduct="http://standaarden.overheid.nl/product/terms/" xmlns:overheidsc="http://standaarden.overheid.nl/sc/terms/" xsi:schemaLocation="http://www.somewebsite.nl/Productoverzicht http://admin.somewebsite.nl/xsd/productoverzicht6.2.xsd http://standaarden.overheid.nl/product/terms/ http://standaarden.overheid.nl/sc/4.0/xsd/sc.xsd"><product id="1656"><overheidproduct:scproduct owms-version="4.0"><overheidproduct:meta><overheidproduct:owmskern><dcterms:identifier><![CDATA[http://product.somewebsite.nl/product.xml?view=product&account_id=337&product_collection_id=1497&lokettype=7&product_id=1656]]></dcterms:identifier><dcterms:title><![CDATA[Ontheffing aanvragen voor bijzonder transport]]></dcterms:title><dcterms:language>nl</dcterms:language><dcterms:type scheme="overheid:Informatietype">productbeschrijving</dcterms:type><dcterms:modified>2017-02-24</dcterms:modified><dcterms:spatial scheme="overheid:Gemeente" resourceIdentifier="http://standaarden.overheid.nl/owms/terms/x_(gemeente)">x</dcterms:spatial><overheid:authority scheme="overheid:Gemeente" resourceIdentifier="http://standaarden.overheid.nl/owms/terms/x_(gemeente)">x</overheid:authority></overheidproduct:owmskern><overheidproduct:owmsmantel><dcterms:audience scheme="overheid:Doelgroep">ondernemer</dcterms:audience><dcterms:subject><![CDATA[voertuigbreedte]]></dcterms:subject><dcterms:subject><![CDATA[transporteren goederen]]></dcterms:subject><dcterms:subject><![CDATA[exceptioneel]]></dcterms:subject><dcterms:subject><![CDATA[exeptioneel]]></dcterms:subject><dcterms:subject><![CDATA[ondeelbare lading]]></dcterms:subject><dcterms:subject><![CDATA[lange zware voertuigen]]></dcterms:subject><dcterms:subject><![CDATA[lzv]]></dcterms:subject><dcterms:subject><![CDATA[kranen]]></dcterms:subject><dcterms:subject><![CDATA[leegritten]]></dcterms:subject><dcterms:subject><![CDATA[bijzonder transport]]></dcterms:subject><dcterms:abstract><![CDATA[Er zijn regels opgesteld over goederenvervoer. Bijvoorbeeld over hoe lang en breed de lading die u vervoert, mag zijn. Het is verboden om goederen te transporteren die te lang of te breed zijn. Wilt u toch grotere goederen vervoeren? Vraag dan een ontheffing aan.]]></dcterms:abstract></overheidproduct:owmsmantel><overheidproduct:scmeta><overheidproduct:productID>1656</overheidproduct:productID><overheidproduct:onlineAanvragen>ja</overheidproduct:onlineAanvragen><overheidproduct:aanvraagURL resourceIdentifier="https://www.rdw.nl/sites/ontheffingen/Paginas/Regel-het-online.aspx?path=Portal/Ontheffingen/Online%20diensten"/><overheidproduct:uniformeProductnaam scheme="overheid:UniformeProductnaam" resourceIdentifier="http://standaarden.overheid.nl/owms/terms/bijzonder_transportontheffing">bijzonder transportontheffing</overheidproduct:uniformeProductnaam></overheidproduct:scmeta></overheidproduct:meta><overheidproduct:body>
               <overheidproduct:productHTML xmlns="http://www.w3.org/1999/xhtml" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd">&lt;p&gt;Er zijn regels opgesteld over goederenvervoer. Bijvoorbeeld over hoe lang en breed de lading die u vervoert, mag zijn. Het is verboden om goederen te transporteren die te lang of te breed zijn. Wilt u toch grotere goederen vervoeren? Vraag dan een ontheffing aan. Er zijn verschillende soorten ontheffingen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;incidentele ontheffing&lt;/li&gt;
&lt;li&gt;langlopende ontheffing&lt;/li&gt;
&lt;li&gt;LZV-ontheffing&lt;/li&gt;
&lt;li&gt;landbouwontheffing&lt;/li&gt;
&lt;/ul&gt;</overheidproduct:productHTML>
                </overheidproduct:body></overheidproduct:scproduct><name>Ontheffing aanvragen voor bijzonder transport</name><created>2016-12-13T06:31:19</created><updated>2017-02-24T18:05:39</updated><language>NL</language><author><name>avos</name></author><publicerendeOrganisatie><gemeenten>x</gemeenten></publicerendeOrganisatie><abbr/><description><![CDATA[<p>Er zijn regels opgesteld over goederenvervoer. Bijvoorbeeld over hoe lang en breed de lading die u vervoert, mag zijn. Het is verboden om goederen te transporteren die te lang of te breed zijn. Wilt u toch grotere goederen vervoeren? Vraag dan een ontheffing aan. Er zijn verschillende soorten ontheffingen:</p>
<ul>
<li>incidentele ontheffing</li>
<li>langlopende ontheffing</li>
<li>LZV-ontheffing</li>
<li>landbouwontheffing</li>
</ul>]]></description><conditions><![CDATA[De voorwaarden verschillen per type ontheffing.]]></conditions><contact><![CDATA[<p>U vraagt de ontheffing aan bij de RDW. De RDW regelt het met de eigenaar van de weg. Dit is bijvoorbeeld de gemeente of de provincie.</p>]]></contact><period/><procedure><![CDATA[<p>Om een ontheffing voor bijzonder transport aan te vragen, geeft u door:</p>
<ul>
<li>hoe groot het transport is</li>
<li>welke route u wilt rijden</li>
<li>wanneer en hoe laat het transport moet plaatsvinden&nbsp;</li>
</ul>]]></procedure><appeal><![CDATA[<p>U kunt bezwaar maken tegen de beslissing op uw aanvraag. Doe dit binnen 6 weken. Bent u het daarna niet eens met de uitspraak op het bezwaarschrift? Teken dan beroep aan bij de rechtbank.</p>]]></appeal><notice/><costs/><admin_memo/><desk_memo/><publish_from>2016-12-13</publish_from><publish_to/><date_expires/><uitvoerende_instanties/><indieningsadressen/><contactpersonen/><law_rules><law_rule type="3" id="146"><law_rule_name>Reglement verkeersregels en verkeerstekens 1990</law_rule_name><url><![CDATA[http://wetten.overheid.nl/BWBR0004825/]]></url><remark/></law_rule><law_rule type="1" id="1916"><law_rule_name>Regeling voertuigen</law_rule_name><url><![CDATA[http://wetten.overheid.nl/BWBR0025798/]]></url><remark/></law_rule><law_rule type="1" id="3135"><law_rule_name>Wegenverkeerswet 1994</law_rule_name><url><![CDATA[http://wetten.overheid.nl/BWBR0006622]]></url><remark/></law_rule></law_rules><law_rule_article_1/><law_rule_article_2/><law_rule_article_3/><law_rule_article_4/><law_rule_article_5/><subsidies/><subsidies_maximale_bijdrage/><subsidies_budget/><subsidies_startdate/><subsidies_enddate/><subsidies_date_submission/><subsidies_remark/><formulieren_extern><formulier target="_blank"><id>15018</id><type>extern_link_forms</type><label><![CDATA[Ontheffing online aanvragen bij de RDW]]></label><href><![CDATA[http://www.rdw.nl/sites/ontheffingen/Paginas/Regel-het-online.aspx?path=Portal/Ontheffingen/Online%20diensten]]></href></formulier></formulieren_extern><formulieren_intern/><product_links><product_link><product_link_name><![CDATA[Voorwaarden voor de ontheffing (RDW.nl)]]></product_link_name><product_link_url><![CDATA[http://www.rdw.nl/sites/ontheffingen/Paginas/default.aspx]]></product_link_url></product_link><product_link><product_link_name><![CDATA[Informatie over bijzonder transport (RDW.nl)]]></product_link_name><product_link_url><![CDATA[http://www.rdw.nl/Zakelijk/Paginas/Bijzonder-vervoer.aspx]]></product_link_url></product_link></product_links><activiteitsgebieden/><vestigingsgebieden/><target_groups/><themes/><categories/><completion_levels/><completion_level_arguments/><life_occurrences/><authorities><authoritie><id>182</id><name>Rijk</name></authoritie></authorities><subjects1><subject><id>512</id><name>ver.veiligheid</name></subject></subjects1><vind_themes><vind_theme><id>582</id><name>Verkeer &amp; Vervoer:Speciaal vervoer</name></vind_theme><vind_theme><id>583</id><name>Verkeer &amp; Vervoer:Vergunningen en bewijzen</name></vind_theme></vind_themes><vind_doelgroepen><vind_doelgroep><id>914</id><name>Groep</name></vind_doelgroep><vind_doelgroep><id>915</id><name>Instelling</name></vind_doelgroep><vind_doelgroep><id>916</id><name>Onderneming</name></vind_doelgroep></vind_doelgroepen><vind_rollen><vind_rol><id>918</id><name>belangenbehartiger</name></vind_rol><vind_rol><id>921</id><name>exploitant</name></vind_rol><vind_rol><id>922</id><name>exploitant, beheerder</name></vind_rol><vind_rol><id>933</id><name>organisator</name></vind_rol></vind_rollen><productgroepen/><resultaten><resultaat><id>871</id><name>Ontheffing</name></resultaat></resultaten><branches/><doelgroepen><doelgroep>organisatie/ondernemer</doelgroep></doelgroepen><synoniemen><synoniem>bijzonder transport</synoniem><synoniem>exceptioneel</synoniem><synoniem>exeptioneel</synoniem><synoniem>kranen</synoniem><synoniem>lange zware voertuigen</synoniem><synoniem>leegritten</synoniem><synoniem>lzv</synoniem><synoniem>ondeelbare lading</synoniem><synoniem>transporteren goederen</synoniem><synoniem>voertuigbreedte</synoniem></synoniemen><tio_themes><tio_theme id="11a5" prefLabel="Voertuigen" resourceIdentifier="http://standaarden.overheid.nl/owms/terms/Voertuigen_(thema)">Voertuigen</tio_theme></tio_themes><error>no</error></product></page>

1 个答案:

答案 0 :(得分:0)

通过添加以下代码解决了问题!

declare default element namespace "http://www.somewebsite.nl/Productoverzicht";
declare namespace dcterms = "http://purl.org/dc/terms/";
declare namespace overheid = "http://standaarden.overheid.nl/owms/terms/";
declare namespace overheidproduct = "http://standaarden.overheid.nl/product/terms/";
declare namespace overheidsc = "http://standaarden.overheid.nl/sc/terms/";