为什么这些Xqueryies都不起作用?

时间:2016-11-09 09:37:45

标签: xml xpath xquery

我有这些xqueries:

for $x in doc("oblig3.xml")/bøker/bok
where $x/fagfelt="Databaser"
order by $x/title
return $x/title


for $x in doc("oblig3.xml")/bøker/bok
where $x/fagfelt="XML"
order by $x/forfatter
return $x/forfatter


for $x in doc("oblig3.xml")/bøker/bok
where $x/fagfelt="databaser" and $x/fagfelt="programmering"
order by $x/@isbn
return $x/@isbn


doc("oblig3.xml")
//forlag[parent::bok[child::fagfelt='programmering' and child::fagfelt='databaser']]

哪一方都有效,他们仍然会验证,但不会从我的XML查询任何内容。关于为什么这不会返回什么的任何想法?

XML:

    <?xml version="1.0" encoding="UTF-8"?>
<?oxygen RNGSchema="compact_oblig3.rnc" type="compact"?>

<bøker>
    <bok isbn="1111">
        <tittle>Objects first with java</tittle>
        <utgave>6</utgave>
        <forfatter>David J. Barnes</forfatter>
        <utgivelsesår>2016</utgivelsesår>
        <fagfelt>Programmering</fagfelt>
        <fagfelt>Databaser</fagfelt>
        <innholdsfortegnelse> 
            <komponent>En komponent</komponent>
        </innholdsfortegnelse>
        <forlag>Pearson Education Limited
            <url>http://www.pearsoned.co.uk/</url>
            <kontaktinfo>
                <telefon>08456301111</telefon>
                <epost>customersolutions@pearson.com</epost>
        </kontaktinfo>
    </forlag>
</bok>

<bok isbn="9780321197849">
    <tittle>An Introduction to Database Systems</tittle>
    <utgave>8</utgave>
    <forfatter>C.J.Date</forfatter>
    <utgivelsesår>2004</utgivelsesår>
    <fagfelt>Databaser</fagfelt>
    <innholdsfortegnelse>
        <komponent> Continuing in the eighth edition, An Introduction to Database Systems
            provides a comprehensive introduction to the now very large field of database
            systems by providing a solid grounding in the foundations of database technology
            while shedding some light on how the field is likely to develop in the future. This
            new edition has been rewritten and expanded to stay current with database system
            trends. </komponent>
    </innholdsfortegnelse>
    <forlag> Pearson Education
            <url>https://www.pearsonhighered.com/program/Date-An-Introduction-to-Database-Systems-8th-Edition/PGM274345.html</url>
    </forlag>
</bok>

<bok isbn="9788215015224">
    <tittle>Databasesystemer</tittle>
    <utgave>2</utgave>
    <forfatter>Bjørn Kristoffersen</forfatter>
    <utgivelsesår>2009</utgivelsesår>
    <fagfelt>Databaser</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> “Universitetsforlaget”
            <url>http://www.bokkilden.no/SamboWeb/produkt.do?produktId=4136282</url>
        <kontaktinfo>
            <telefon>24147500</telefon>
            <epost>post@universitetsforlaget.no</epost>
            <adresse>
                <gate>Sehesteds gate</gate>
                <gatenmr>3</gatenmr>
                <postnmr>0164</postnmr>
            </adresse>
        </kontaktinfo>
    </forlag>
</bok>

<bok isbn="032141506">
    <tittle>Fundamentals of Database Systems</tittle>
    <utgave>5</utgave>
    <forfatter>Elmasri</forfatter>
    <forfatter>Navathe</forfatter>
    <utgivelsesår>2007</utgivelsesår>
    <fagfelt>Databaser</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> Pearson Education
            <url>https://www.pearsonhighered.com/product/Elmasri-Fundamentals-of-Database-Systems-5th-Edition/9780321369574.html</url>
    </forlag>
</bok>

<bok isbn="9780195138573">
    <tittle>Mindware</tittle>
    <forfatter>Andy Clark</forfatter>
    <utgivelsesår>2001</utgivelsesår>
    <fagfelt>Filosofi</fagfelt>
    <fagfelt>Kognitiv vitenskap</fagfelt>
    <innholdsfortegnelse>
        <komponent> Mindware: An Introduction to the Philosophy of Cognitive Science invites
            readers to join in up-to-the-minute conceptual discussions of the fundamental
            issues, problems, and opportunities in cognitive science. Written by one of the most
            renowned scholars in the field, this vivid and engaging introductory text relates
            the story of the search for a cognitive scientific understanding of mind. This
            search is presented as a no-holds-barred journey from early work in artificial
            intelligence, through connectionist (artificial neural network) counter-visions, and
            on to neuroscience, artificial life, dynamics, and robotics. The journey ends with
            some wide-ranging and provocative speculation about the complex coadaptive dance
            between mind, culture, and technology. Each chapter opens with a brief sketch of a
            major research tradition or perspective, followed by short yet substantial critical
            discussions dealing with key topics and problems. Ranging across both standard
            philosophical territory and the landscape of cutting-edge cognitive science, Clark
            highlights challenging issues in an effort to engage readers in active debate.
            Topics covered include mental causation; machine intelligence; the nature and status
            of folk psychology; the hardware/software distinction; emergence; relations between
            life and mind; the nature of perception, cognition, and action; and the continuity
            (or otherwise) of high-level human intelligence with other forms of adaptive
            response. Numerous illustrations, text boxes, and extensive suggestions for further
            reading enhance the text's utility. Helpful appendices provide background
            information on dualism, behaviorism, identity theory, consciousness, and more. An
            exceptional text for introductory and more advanced courses in cognitive science and
            the philosophy of mind, Mindware is also essential reading for anyone interested in
            these fascinating and ever-changing fields. </komponent>
    </innholdsfortegnelse>
    <forlag> “Oxford University Press” <url>https://global.oup.com/academic/</url>
        <kontaktinfo>
            <telefon>4401865556767</telefon>
            <epost>onlinequeries.uk@oup.com</epost>
        </kontaktinfo>
    </forlag>
</bok>

<bok isbn="9780631229193">
    <tittle>Philosophy of computing and information</tittle>
    <redaktør>Luciano Floridi</redaktør>
    <utgivelsesår>2004</utgivelsesår>
    <fagfelt>Filosofi</fagfelt>
    <fagfelt>Kunnskapsrepresentasjon</fagfelt>
    <fagfelt>Kunstig Intelligens</fagfelt>
    <fagfelt>Programmering</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> “Wiley”
            <url>http://www.wiley.com/WileyCDA/WileyTitle/productCd-0631229191.html</url>
        <kontaktinfo>
            <telefon>4962016060</telefon>
            <epost>info@wiley-vch.de</epost>
            <adresse>
                <gate>Boschstrasse</gate>
                <gatenmr>12</gatenmr>
                <postnmr>69469</postnmr>
            </adresse>
        </kontaktinfo>
    </forlag>
</bok>          

<bok isbn="9780631218685">
    <tittle>Philosophy of Logic</tittle>
    <forfatter>Jacquette Dale</forfatter>
    <utgivelsesår>2002</utgivelsesår>
    <fagfelt>Filosofi</fagfelt>
    <fagfelt>Logikk</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> “Wiley”
            <url>http://www.wiley.com/WileyCDA/WileyTitle/productCd-0631218688.html</url>
        <kontaktinfo>
            <telefon>4962016060</telefon>
            <epost>info@wiley-vch.de</epost>
            <adresse>
                <gate>Boschstrasse</gate>
                <gatenmr>12</gatenmr>
                <postnmr>69469</postnmr>
            </adresse>
        </kontaktinfo>
    </forlag>
</bok>

<bok isbn="9780198752530">
    <tittle>A Survey of Metaphysics</tittle>
    <forfatter>E.J.Lowe</forfatter>
    <utgivelsesår>2002</utgivelsesår>
    <fagfelt>Filosofi</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> “Oxford University Press”
            <url>https://global.oup.com/academic/</url>
        <kontaktinfo>
            <telefon>4401865556767</telefon>
            <epost>onlinequeries.uk@oup.com</epost>
        </kontaktinfo>
    </forlag>
</bok>

<bok isbn="9780262024754">
    <tittle>Knowledge and Mind: A Philosophical Introduction</tittle>
    <utgave>1</utgave>
    <forfatter>Robert. J. Stainton</forfatter>
    <forfatter>Andrew Brook</forfatter>
    <utgivelsesår>2000</utgivelsesår>
    <fagfelt>Filosofi</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> A Bradford Book <url>https://mitpress.mit.edu/category/imprint/bradford-book</url>
    </forlag>
</bok>


<bok isbn="9781412925686">
    <tittle>Cognitive Science</tittle>
    <utgave>1</utgave>
    <forfatter>Jay Friedenberg</forfatter>
    <forfatter>Gordon Silverman</forfatter>
    <utgivelsesår>2006</utgivelsesår>
    <fagfelt>Kognitiv vitenskap</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> Sage Publications, Inc 
        <url>https://uk.sagepub.com/en-gb/eur</url>
        <kontaktinfo>
            <telefon>4402073248500</telefon>
            <epost>market@sagepub.co.uk</epost>
        </kontaktinfo>
    </forlag>
</bok>


<bok isbn="9780262122320">
    <tittle>The logic of knowledge bases </tittle>
    <utgave>1</utgave>
    <forfatter>GerhaldLakemeyer</forfatter>
    <forfatter>Hector Levesque</forfatter>
    <utgivelsesår>2000</utgivelsesår>
    <fagfelt>Kunnskapsrepresentasjon</fagfelt>
    <fagfelt>Logikk</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> The MIT Press <url>https://mitpress.mit.edu/</url>
    </forlag>
</bok>

<bok isbn="9781558609327">
    <tittle>Knowledge Representation and Reasoning</tittle>
    <utgave>1</utgave>
    <forfatter>Ronald Brachman</forfatter>
    <forfatter>Hector Levesque</forfatter>
    <utgivelsesår>2004</utgivelsesår>
    <fagfelt>Kunnskapsrepresentasjon</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> Morgan Kaufmann <url>http://store.elsevier.com/product.jsp?isbn=9781558609327</url>
    </forlag>
</bok>

<bok isbn="9780521150118">
    <tittle>The description logic handbook </tittle>
    <utgave>2</utgave>
    <redaktør>Daniele Nardi</redaktør>
    <redaktør>Franz Baader</redaktør>
    <redaktør>Diego Calvanese</redaktør>
    <utgivelsesår>2007</utgivelsesår>
    <fagfelt>Kunnskapsrepresentasjon</fagfelt>
    <fagfelt>Logikk</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> Cambridge University Press <url>http://www.cambridge.org/</url>
        <kontaktinfo>
            <telefon>4401223358331</telefon>
            <epost>information@cambridge.org</epost>
        </kontaktinfo>
    </forlag>
</bok>

<bok isbn="9780444522115">
    <tittle>Handbook of Knowledge Representation</tittle>
    <utgave>1</utgave>
    <redaktør>Frank von Harmelen</redaktør>
    <redaktør>Vladimir Lifschitz</redaktør>
    <redaktør>Bruce Porter</redaktør>
    <utgivelsesår>2008</utgivelsesår>
    <fagfelt>Kunnskapsrepresentasjon</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> Elsevier Science
            <url>http://store.elsevier.com/product.jsp?isbn=9780444522115</url>
    </forlag>
</bok>

<bok isbn="9780201403756">
    <tittle>Prolog Programming for Artificial Intelligence</tittle>
    <utgave>3</utgave>
    <forfatter>Ivan Bratko</forfatter>
    <utgivelsesår>2001</utgivelsesår>
    <fagfelt>Kunstig Intelligens</fagfelt>
    <fagfelt>Programmering</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> Pearson Education <url>https://www.pearsonhighered.com/</url>
    </forlag>
</bok>


<bok isbn="9780470035610">
    <tittle>Computational Intelligence </tittle>
    <utgave>2</utgave>
    <forfatter>Andries P. Engelbrecht</forfatter>
    <utgivelsesår>2007</utgivelsesår>
    <fagfelt>Kunstig Intelligens</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> Wiley <url>http://www.wiley.com/WileyCDA/</url>
        <kontaktinfo>
            <telefon>4962016060</telefon>
            <epost>info@wiley-vch.de</epost>
            <adresse>
                <gate>Boschstrasse</gate>
                <gatenmr>12</gatenmr>
                <postnmr>69469</postnmr>
            </adresse>
        </kontaktinfo>
    </forlag>
</bok>



<bok isbn="9780137903955">
    <tittle> Artificial Intelligence - a modern approach </tittle>
    <utgave>2</utgave>
    <forfatter>Stuart Russell</forfatter>
    <forfatter>Peter Norvig</forfatter>
    <utgivelsesår>2003</utgivelsesår>
    <fagfelt>Kunstig Intelligens</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> “Pearson education”
            <url>https://www.pearsonhighered.com/product/Russell-Artificial-Intelligence-A-
            Modern-Approach-2nd-Edition/9780137903955.html</url>
    </forlag>
</bok>


<bok isbn="9780763718435">
    <tittle>Discrete structures, logic and computability </tittle>
    <utgave>2</utgave>
    <forfatter>James L. Hein</forfatter>
    <utgivelsesår>2002</utgivelsesår>
    <fagfelt>Logikk</fagfelt>
    <fagfelt>Matematikk</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> Jones and Bartlett Learning <url>http://www.jblearning.com/</url>
        <kontaktinfo>
            <telefon>8008320034</telefon>
        </kontaktinfo>
    </forlag>
</bok>


<bok isbn="9780521708777">
    <tittle>The mathematics of logic</tittle>
    <utgave>1</utgave>
    <forfatter>Richard W. Kaye</forfatter>
    <utgivelsesår>2007</utgivelsesår>
    <fagfelt>Logikk</fagfelt>
    <fagfelt>Matematikk</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> Cambridge University Press <url>http://www.cambridge.org/ </url>
        <kontaktinfo>
            <telefon>4401223358331</telefon>
            <epost>information@cambridge.org</epost>
        </kontaktinfo>
    </forlag>
</bok>


<bok isbn="9780521365840">
    <tittle>Lattices and order </tittle>
    <utgave>1</utgave>
    <forfatter>B. A. Davey</forfatter>
    <forfatter>H. A. Priestley</forfatter>
    <utgivelsesår>1990</utgivelsesår>
    <fagfelt>Matematikk</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> Cambridge University Press <url>http://www.cambridge.org/</url>
        <kontaktinfo>
            <telefon>4401223358331</telefon>
            <epost>information@cambridge.org</epost>
        </kontaktinfo>
    </forlag>
</bok>


<bok isbn="9780201730470">
    <tittle>Discrete Mathematics for Computing</tittle>
    <utgave>1</utgave>
    <forfatter>Rod Haggarty</forfatter>
    <utgivelsesår>2001</utgivelsesår>
    <fagfelt>Matematikk</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> Pearson education <url>https://www.pearsonhighered.com/</url>
    </forlag>
</bok>

<bok isbn="978-0521478175">
    <tittle>Conceptual Mathematics: A First Introduction to Categories</tittle>
    <utgave>1</utgave>
    <forfatter>F. William Lawvere </forfatter>
    <forfatter>Stephen Hoel Schanuel</forfatter>
    <utgivelsesår>1997</utgivelsesår>
    <fagfelt>Matematikk</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> ELSEVIER <url>https://www.elsevier.com/</url>
    </forlag>
</bok>


<bok isbn="9780321392794">
    <tittle>Data Structures in Java</tittle>
    <utgave>1</utgave>
    <forfatter>Simon Gray</forfatter>
    <utgivelsesår>2007</utgivelsesår>
    <fagfelt>Programmering</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> “Pearson education” <url>https://www.pearsonhighered.com/</url>
    </forlag>
</bok>

<bok isbn="978-0131374690">
    <tittle>Java software solutions</tittle>
    <utgave>3</utgave>
    <forfatter>John Lewis</forfatter>
    <forfatter>William Loftus</forfatter>
    <forfatter>Cara Cocking</forfatter>
    <utgivelsesår>2003</utgivelsesår>
    <fagfelt>Programmering</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> Pearson education
        <url>https://www.pearsonhighered.com/</url>
    </forlag>
</bok>

<bok isbn="9780262012423">
    <tittle>A Semantic Web Primer</tittle>
    <utgave>2</utgave>
    <forfatter>Grigoris Antoniou</forfatter>
    <forfatter>Frank van Harmelen</forfatter>
    <utgivelsesår>2004</utgivelsesår>
    <fagfelt>Web</fagfelt>
    <innholdsfortegnelse>
        <komponent/>
    </innholdsfortegnelse>
    <forlag> MIT Press 
        <url>https://mitpress.mit.edu/books/semantic-web-primer</url>
    </forlag>
</bok>

<bok isbn="9780321269669">
    <tittle>An introduction to XML and techologies</tittle>
    <utgave>1</utgave>
    <forfatter>Anders Moller</forfatter>
    <forfatter>Michael Schwartzbach</forfatter>
    <utgivelsesår>2005</utgivelsesår>
    <fagfelt>XML</fagfelt>
    <fagfelt>Programmering</fagfelt>
    <fagfelt>Web</fagfelt>
    <innholdsfortegnelse>
        <komponent></komponent>
    </innholdsfortegnelse>
    <forlag>Pearson Education Cananda
        <url>http://www.pearsoncanada.ca/</url>
        <kontaktinfo>
            <telefon>18005673800</telefon>
            <epost>cs.canada@pearson.com</epost>
            <adresse>
                <gate>Prince Andrew Place</gate>
                <gatenmr>26</gatenmr>
                <postnmr>416</postnmr>
            </adresse>
        </kontaktinfo>
    </forlag>
</bok>

<bok isbn="2222222">
    <tittle>Jeg er en bok om Xpath</tittle>
    <utgave>2</utgave>
    <forfatter>Thomas Petersson</forfatter>
    <utgivelsesår>2016</utgivelsesår>
    <fagfelt>XML</fagfelt>
    <innholdsfortegnelse>
        <komponent></komponent>
    </innholdsfortegnelse>
    <forlag> Mitt forlag
        <url>www.eksempelforlag.no</url>
    </forlag>
</bok>

其他查询的工作方式如下:

 /bøker/bok[./tittle[contains(.,'Xpath')] or ./innholdsfortegnelse[contains(.,'Xpath')]]/tittle

这将返回一本带有Xpath名称的书。

1 个答案:

答案 0 :(得分:1)

有些事情需要纠正:

  1. 您的XQuery想要返回<title>,但它们在输入XML中写成<tittle>。因此,您可以像这样更正查询:

    for $x in doc("oblig3.xml")/bøker/bok
    let $tittle := $x/tittle/text()
    where $x/fagfelt = "Databaser"
    order by $tittle
    return $tittle
    
  2. 您有时会有多个<forfater>标记,因此您的查询会返回几个不能用作排序键的节点。一种可能性是仅针对遇到的第一个<forfatter>标记进行排序,如下所示:

    for $x in doc("oblig3.xml")/bøker/bok
    let $forfatter := $x/forfatter[1]/text()
    where $x/fagfelt/text() = "XML"
    order by $forfatter
    return $x/forfatter
    
  3. 第三次查询再次失败,因为找到了多个<fagfelt>标记。过滤元素的条件应该重新设置为不区分大小写(如Markus&#39;注释中所述),以及返回指令,因为您无法直接返回属性。这应该可以正常工作:

    for $x in doc("oblig3.xml")/bøker/bok
    where $x/fagfelt[lower-case(.) = "databaser"] and $x/fagfelt[lower-case(.) = "programmering"]
    order by fn:string($x/@isbn)
    return fn:string($x/@isbn)