Kai: Highlighten von Suchbegriffen

Beitrag lesen

Hallo!

Ich bin dabei eine elektronische technische Dokumentation (xml-Dateien) mit Hilfe eines Webservers (apache), Java Servlets und stylesheets umzusetzen/anzuzeigen. Das funktioniert auch! Jedoch hätte ich gerne, dass bei der Suche die Suchbegriffe hervorgehoben werden. Ich dachte ich könnte dies über javascript lösen, in dem ich vor den Suchbegriff ein "<font style='color:" + textColor + "; background-color:" + bgColor + ";'>" einfüge und nach den Suchbegriff natürlich ein "</font>". Den Text/Stelle des Suchbegriffs bekommt meine Funktion über var bodyText = parent.Text.document.body.innerHTML;

Das XML zeige ich apropos folgendermaßen an:
public void doGet (HttpServletRequest request,HttpServletResponse response){
  PrintWriter out = response.getWriter();
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  Document doc = dbf.newDocumentBuilder().parse(new File("dateiname.xml"));
  Source source = new StreamSource(new File("test.xsl"));
  DOMSource ds = new DOMSource(doc);
  try{
    TransformerFactory tFactory = TransformerFactory.newInstance();
    Transformer transformer     = tFactory.newTransformer(source);
    transformer.transform(ds, new StreamResult(out));
  } catch (TransformerConfigurationException tce) {
    System.out.println("   " + tce.getMessage() );
  } catch (TransformerException te) {
    System.out.println("   " + te.getMessage() );
  }
}
Ich rufe bei der Suche zuerst das Servlet zum Anzeigen der XML-Dateien auf und bisher im Anschluß daran das Highlighten (im javascript). Jedoch entsteht mit dem Servlet ein Ladeproblem. Denn er hebt nichts hervor, baue ich aber vor dem Highlighten ein setTimeout ein funktioniert es. Anscheinend greift er (ohne das Timeout) auf den vorherigen Inhalt (vorheriges XML, nicht das gerade angeklickte) zu und daher wird nichts hervorgehoben. Habe dies mit Hilfe von alerts herausbekommen.

Meine Frage nun:
Hat jemand eine Idee wie ich das Problem anders lösen könnte - ein Timeout möchte ich nicht verwenden. Die einzige Idee, die mir noch kam, ist ein Applet zu verwenden. Hat jemand eine bessere Idee oder ist dies die einzige Möglichkeit?

Wäre super, wenn ihr mir eure Meinung sagen könntet
LG Kai