XPath-Abfrage mit variable mehrere Bedingungen

Lange Zeit Zuhörer, zum ersten mal Anrufer. Ich bin relativ neu in XPath und sah mehrere andere threads hier und anderswo, aber ich kann nicht scheinen, um eine Abfrage zu arbeiten, jede Hilfe wäre toll.

Ich habe die XML wie folgt:

<catalog>
  <book pgid="28054" lang="en">
    <title>The Brothers Karamazov</title>
    <author>Dostoyevsky, Fyodor</author>
    <friendly_title>The Brothers Karamazov by Fyodor Dostoyevsky</friendly_title>
    <file>
      <type>ePub</type>
      <path>cache/generated/28054/</path>
      <name>pg28054.epub</name>
      <size>800</size>
    </file>
    <file>
      <type>PDF</type>
      <path>2/8/0/5/28054/</path>
      <name>28054-pdf.pdf</name>
      <size>5829</size>
    </file>
    <file>
      <type compression="zipped">PDF</type>
      <path>2/8/0/5/28054/</path>
      <name>28054-pdf.zip</name>
      <size>1693</size>
    </file>
    <file>
      <type encoding="utf-8" compression="zipped">Text</type>
      <path>2/8/0/5/28054/</path>
      <name>28054-0.zip</name>
      <size>726</size>
    </file>
  </book>
</catalog>

(Katalog ist das root-element, und in diesem Beispiel gibt es keine <contributor> Elemente)

Habe ich die Abfrage funktioniert auf Autor, Mitwirkende, Titel und Sprache sucht, aber ich bin immer aufgehängt, die auf das hinzufügen eines Dateityp-Zustand. Diese Abfrage finden Sie Bücher mit Autor enthält "Dostojewski" und den Titel mit "Brüder" mit der Sprache "en" ist arbeiten (D. H. der erwarteten Ergebnisse), aber wenn es einen besseren Weg, es zu schreiben, ich bin ganz Ohr:

/catalog//book/*[(contains(self::author,'Dostoyevsky') or contains(self::contributor,'Dostoyevsky')) and contains(../title,'Brothers') and ../@lang = 'en']

Was ich nicht an die Arbeit ist die Begrenzung der Abfrage-Ergebnisse, um Dateien von einem bestimmten Typ, D. H. das Anhängen and ../file/type='PDF' oder so etwas. Hatte kein Glück mit | Gewerkschaften entweder.

Vielen Dank im Voraus.

Oh, und wenn es darauf ankommt, die Abfrage muss gebaut werden dynamisch (form input), so muss es behalten eine Universelle syntax, die Arbeit mit einer beliebigen Anzahl von Benutzer-angegebenen Kriterien.

  • Bitte, machen Sie Ihre Hausaufgaben und mindestens einen echten, wohlgeformten und sinnvollen XML-Dokument.
  • Was wollen Sie, Dimitre? Das ist mein richtiger XML. Ich glaube nicht, dass der Inhalt relevant war.
  • Dimitre ist richtig, dein XML ist nicht wohlgeformt. Die, wie Sie schreiben, Ihre lang-Attribut ist nicht XML. Sollten Sie aktualisieren Sie Ihre Frage, um ihn gültig zu machen (z.B. lang="...").
  • Ok, sorry, zu verwirren. Es ist mehr Los als hier relevant ist diese Frage, und ich habe nur versucht, die Versorgung der entsprechenden Vorlage und so entschieden wir uns für einige Kürzel. Natürlich ist der Inhalt lang='de' (oder was auch immer).
  • Auch, wenn Sie das Problem beheben mit dem Attribut, würden Sie sich die Mühe, füllen Sie die Elemente mit Inhalt? Was Sie geboten haben, sieht mehr aus wie ein "Skelett" einer realen XML-Dokument.
InformationsquelleAutor swornabsent | 2011-12-20
Schreibe einen Kommentar