Raik: / XPATH url mit gespeicherten suchausdrücken vergleichen

Hallo,

ich arbeite gerade an der zweiten version meiner fx-extension. (siehe meine signatur)
dabei bin ich auf "xpath" gestossen und überlege nun, ob das für meine zwecke eine brauchbare lösung wäre.
mit meiner extension können die user elemente einer webseite manipulieren. diese änderungen sollen dann gespeichert werden, um sie später wieder per script auf die seite anwenden zu können. da die manipulation wiederholt möglich ist, muss ich doppelte einträge beim speichern vermeiden.

die konkrete url des nachrichtenformulars hier im forum ist z.b.:
http://forum.de.selfhtml.org/cgi-bin/user/fo_post?fupto=000000%0C000000&a=answer
oder
http://forum.de.selfhtml.org/cgi-bin/user/fo_post?fupto=111111%1C111111&a=answer

dabei ändert sich nur die variable "fupto", es wird aber das gleiche template aufgerufen.
deshalb soll die speicherung mit (händisch einzufügenden) platzhaltern (*) erfolgen:
http://forum.de.selfhtml.org/cgi-bin/user/fo_post?fupto=*&a=answer

meine frage zielt jetzt darauf, ob es mit xpath möglich ist, in einer abfrage die aktuelle, konkrete url mit einem in der xml-datei gespeicherten suchmuster zu vergleichen und als rückgabewert evtl. sogar ohne zweite abfrage die zu dem suchmuster gespeicherten attribute für die manipulation der elemente zu bekommen.
normalerweise wird ja ein suchmuster auf konkrete daten angewendet.

  
<?xml version="1.0" encoding="ISO-8859-1"?>  
  
<searchbase>  
    <domain value="forum.de.selfhtml.org">  
      <path value="cgi-bin">  
        <path value="user">  
          <path value="fo_post">  
            <search variable="fo_post" value="*">  
              <search variable="a" value="answer">  
          <input index="0" width="100" />  
          <input index="1" width="80" />  
          <textarea index="0" width="500" height="100" />  
          <textarea index="1" width="300" height="50" />  
          <textarea index="2" width="650" height="90" />  
              </search>  
            </search>  
          </path>  
        </path>  
      </path>  
    </domain>  
</searchbase>  

kann ich in einer xml-datei mit z.b. mehreren solcher "domain"-blöcke  mit einem xpath-query zu einer konkreten url den passenden eintrag finden, wenn der platzhalter (*) enthält?
oder gibts eine elegantere lösung für solche aufgaben?

ich hoffe, ich konnte einigermassen verständlich machen, worum es mir geht.

freundl. Grüsse aus Berlin, Raik

--
Der IE ist wichtig. Man benötigt ihn, um sich einen Browser zu besorgen.
Resizeable Textarea 0.1a
  1. Hallo,

    meine frage zielt jetzt darauf, ob es mit xpath möglich ist, in einer abfrage die aktuelle, konkrete url mit einem in der xml-datei gespeicherten suchmuster zu vergleichen und als rückgabewert evtl. sogar ohne zweite abfrage die zu dem suchmuster gespeicherten attribute für die manipulation der elemente zu bekommen.

    Kurze Antwort: ja es ist möglich.
    Lange Antwort: XPath kann auch unabhängig von XSLT eingesetzt werden, es gibt verschiedene Implementierungen dafür von PHP bis Java etc.
    D.h. in deinem konkreten Fall, dass du auf eine serverseitige Strategie angewiesen bist, dass dir die URL z.B. als Variable speichert und dann auf die XML-Datei eine XPath-Query damit ausführt.

    kann ich in einer xml-datei mit z.b. mehreren solcher "domain"-blöcke  mit einem xpath-query zu einer konkreten url den passenden eintrag finden, wenn der platzhalter (*) enthält?

    Den Satz verstehe ich nicht ganz (vor allem was du hier konkret mit Platzhalter meinst).

    Grüße
    Thomas

    1. Hallo, Thomas!

      D.h. in deinem konkreten Fall, dass du auf eine serverseitige Strategie angewiesen bist, ...

      das scheidet aus. firefox-erweiterungen haben keine datenbank oder nen server zur verfügung. das ganze muss mit javascript gelöst werden.
      wenn dann mit xpath nicht geht, muss ich mir was anderes einfallen lassen, oder hier jemanden finden, der ne idee hat.

      kann ich in einer xml-datei mit z.b. mehreren solcher "domain"-blöcke  mit einem xpath-query zu einer konkreten url den passenden eintrag finden, wenn der platzhalter (*) enthält?
      Den Satz verstehe ich nicht ganz (vor allem was du hier konkret mit Platzhalter meinst).

      na, normalerweise ist das xpath-query eine art regulärer ausdruck und durchsucht werden konkrete daten. ich will aber zu einem konkreten string aus einer sammlung von suchausdrücken den passenden finden.

      du kennst diese fernsehshow, wo der moderator eine beschreibung der lösung nennt, und die kandidaten die frage erraten und als solche formulieren müssen?

      freundl. Grüsse aus Berlin, Raik

      --
      Der IE ist wichtig. Man benötigt ihn, um sich einen Browser zu besorgen.
      Resizeable Textarea 0.1a
      1. Hallo,

        D.h. in deinem konkreten Fall, dass du auf eine serverseitige Strategie angewiesen bist, ...

        das scheidet aus. firefox-erweiterungen haben keine datenbank oder nen server zur verfügung. das ganze muss mit javascript gelöst werden.

        Das wird dann mit XPath nicht gehen, weil es dafür keine JavaScript implementierung gibt.

        wenn dann mit xpath nicht geht, muss ich mir was anderes einfallen lassen, oder hier jemanden finden, der ne idee hat.

        Warum versuchst du es nicht mit RegEx-Ausdücken?

        kann ich in einer xml-datei mit z.b. mehreren solcher "domain"-blöcke  mit einem xpath-query zu einer konkreten url den passenden eintrag finden, wenn der platzhalter (*) enthält?
        Den Satz verstehe ich nicht ganz (vor allem was du hier konkret mit Platzhalter meinst).

        na, normalerweise ist das xpath-query eine art regulärer ausdruck und durchsucht werden konkrete daten. ich will aber zu einem konkreten string aus einer sammlung von suchausdrücken den passenden finden.

        Das ginge, aber du sprichst von Platzhalter und ein Vergleich von einem String mit "*" wird in diesem Fall immer scheitern. Bzw, du könntest das dann mit XPath 2 lösen, wo du auch RegEx verwenden kannst, aber wie gesagt eine Implementierung muss dafür vorhanden sein.

        du kennst diese fernsehshow, wo der moderator eine beschreibung der lösung nennt, und die kandidaten die frage erraten und als solche formulieren müssen?

        Was ist Jeopardy? ;)

        Grüße
        Thomas

        1. Hallo,

          Das wird dann mit XPath nicht gehen, weil es dafür keine JavaScript implementierung gibt.

          Neuere Mozilla-Browser kennen das Objekt XPathEvaluator.

          An sich eine interessante Technik, siehe SVG-Test (fuer FF 1.5), gegenwaertig aber nicht Browser-uebergreifend nutzbar. Mit klassischen DOM-Techniken und regulaeren Ausdruecken kommt man auch zum Ziel.

          MfG, Thomas

          1. Hallo Thomas,

            Das wird dann mit XPath nicht gehen, weil es dafür keine JavaScript implementierung gibt.

            Neuere Mozilla-Browser kennen das Objekt XPathEvaluator.

            Ah, danke für die Info!

            Mit klassischen DOM-Techniken und regulaeren Ausdruecken kommt man auch zum Ziel.

            Das war auch mein Gedanke.

            Grüße
            Thomas

          2. Hallo, Thomas!

            Neuere Mozilla-Browser kennen das Objekt XPathEvaluator.

            hab ich mir angeschaut, hilft mir aber nicht weiter, wenn ich nichts übersehen habe.

            An sich eine interessante Technik, siehe SVG-Test (fuer FF 1.5), gegenwaertig aber nicht Browser-uebergreifend nutzbar. Mit klassischen DOM-Techniken und regulaeren Ausdruecken kommt man auch zum Ziel.

            auch dein beispiel macht nicht das, was ich brauche.
            was ich machen möchte, würde prinzipellin etwa so aussehen:
            gegeben ist eine url
            http://forum.de.selfhtml.org/cgi-bin/user/fo_post?fupto=118311%2C758489&a=answer
            und gesucht wird dazu in einer xml-datei

              
            <?xml version="1.0" encoding="ISO-8859-1"?>  
              
            <query>  
              <xpath value="http://forum.de.selfhtml.org/cgi-bin/user/fo_post?_*_&a=answer">  
              <xpath value="https://freemail_*_.web.de/online/msg/edit.htm?si=_*_&rv_mid=_*_&rv_mail_action=remsg&_*_">  
              <xpath value="http://www.firefox-browser.de/forum/posting.php?mode=reply&t=_*_">  
            </query>  
            
            

            der passende "suchausdruck", also die gleiche adresse, in der aber "fupto=118311%2C758489" z.b. duch "_*_" ersetzt wurde, damit dieser "suchausdruck" auf die "antwort verfassen"-seite vom selfforum unabhängig vom topic ("fupto=118311%2C758489") passt.

            ich wüsste nicht mal, wie ich das mit regex machen sollte, ohne jeden einzelnen eintrag in der xml-datei gegen die url prüfen zu müssen. das würde ja bei mysql bedeuten, ganzen inhalt der datenbank auszulesen, und _jeden_ _einzelnen_ eintrag gegen die url zu prüfen.

            freundl. Grüsse aus Berlin, Raik

            --
            Der IE ist wichtig. Man benötigt ihn, um sich einen Browser zu besorgen.
            Resizeable Textarea 0.1a