2014-12-16 3 views
6

Gibt es eine Möglichkeit, interaktiv nach einem Knoten zu suchen, der einem bestimmten xpath-Ausdruck in Emacs entspricht?Wie Elemente, die mit einem Xpath-Ausdruck übereinstimmen, in Emacs nxml-mode gesucht werden?

würde ich etwas ähnliches wie re-forward-search mögen, aber stattdessen einen regulären Ausdruck verwenden würde ich einen XPath-Ausdruck geben.

+0

Ich auch! Wenn ich Zeit hätte, würde ich versuchen zu sehen, welchen nxml-Code es gibt, wenn XPath-Matches ausgewählt werden. Wenn ein solcher Code existiert, würde ich eine [** Icicles ** Suche] kodieren (http: //www.emacswiki.org/emacs/Eiszapfen _-_ Search_Commands% 2c_Overview) [multi-command] (http://www.emacswiki.org/Icicles_-_Multi-Commands/) zum Suchen solcher Regionen. – Drew

+0

@Drew Greping für Xpath in NXML-Code gibt keine Ergebnisse. Es gibt eine [xpath.el-Implementierung] (http://www.emacswiki.org/emacs/xpath.el), aber ich hatte nicht die Zeit, sie zu testen. Es erfordert dom.el zu arbeiten. – manu

+0

Ja, genau das habe ich gefunden, als ich zuletzt in Emacs nach XPath und XQuery-Unterstützung gesucht habe. Schade. Eine gute Unterstützung für solche Dinge wäre zweifellos nicht trivial, aber es könnte wirklich nützlich sein, IMO. (Auch wenn es ein DOM erfordert.) Und vielleicht existiert es (ich sah die gleiche Referenz), aber ich habe auch nicht die Zeit, es wirklich zu überprüfen. – Drew

Antwort

0

Ich habe eine Antwort WRT XPath-Abfragen nicht; Es tut uns leid. Aber Sie könnten versuchen, Icicles search Suchschlüssel M-s M-s x und M-s M-s X (Befehle icicle-search-xml-element und icicle-search-xml-element-text-node).

Hier können Sie den Inhalt und die text()-Knoten von XML-Elementen der obersten Ebene durchsuchen, deren Namen mit einer von Ihnen bereitgestellten regulären Ausgabe übereinstimmen.

Für icicle-search-xml-element kann jeder dieser Formen haben:

  • <ELEMENTNAME>...</ELEMENTNAME>
  • <ELEMENTNAME ATTRIBUTE1="..."...>...</ELEMENTNAME>
  • <ELEMENTNAME/>
  • <ELEMENTNAME ATTRIBUTE1="...".../>

können Sie alternativ suchen wählen, nicht die Suche Kontexte als von dem Element-Namen regexp definiert, aber die Nicht-Zusammenhänge, das heißt der Puffer Text, der außerhalb dieser Elemente sind. Verwenden Sie dazu während der Fertigstellung `C-M- ~ ' . (Dies ist ein Umschalter und wirkt sich nur auf zukünftige Suchbefehle aus, nicht auf den aktuellen.)

Für icicle-search-xml-element-text-node dürfen die übereinstimmenden Elemente der obersten Ebene keine Attribute haben. Nur die obersten Elemente des Formulars <ELEMENTNAME>...</ELEMENTNAME> sind zugeordnet.

HTH.

+1

Ich teste gerade einen langen xpath Ausdruck gegen ein XML. Also gibt es keinen Weg. Ich muss diesen xpath testen, damit ich ihn in meinen Code einfügen kann. Im Speziellen schreibe ich eine Erweiterung zu einer OpenERP-Ansicht (die über XML erfolgt) und die Art und Weise, wie sie Orte, die Sie ändern wollen, an Orte anpassen, geschieht über Xpath. Ich muss also meine Ausdrücke testen. – manu

+0

Ich verstehe. Es gibt wirklich keinen Ersatz für XPath (und XQuery) -Matching. (Sicherlich nicht regulär.) – Drew

0

Ich habe so etwas wie die vor langer Zeit. Ich kann Ihnen jetzt keine Einzelheiten nennen, aber ich werde Ihnen einen Überblick über meine Vorgehensweise geben.

Ich habe einige Emacs-Funktionen mit (Query) eine native XML-Datenbank zu interagieren. Ich habe es einmal mit einem Mark Logic Server und einmal mit einer Berkley DB XML Datenbank gemacht. Eine dieser Funktionen fragt einfach die Datenbank ab. Eine andere der Funktionen würde eine XQuery-Abfrage senden, die einen Emacs-Puffer oder eine Pufferauswahl enthielt.

Der native XML-Datenbankserver würde die Abfrage verarbeiten, die Ergebnisse zurückgeben, und meine Emacs-Funktionen würden das Ergebnis in einem Ergebnis-Puffer rendern.

Dieser Ansatz erlaubt mir die XML mit XPath und XQuery abgefragt werden, die eine viel mächtiger Abfragesprache, die XPath beinhaltet ist. (Ich schrieb über XQuery vor langer Zeit, hier: https://www.ibm.com/developerworks/library/x-xqueryxpath/)

So schwierig dies alles auch klingen mag, es stellte sich heraus, überraschend einfach zu sein.

Verwandte Themen