Stefan: Suchfunktion in XSL einbinden mit JAVASCRIPT

Beitrag lesen

Hallo,

na gut, vielleicht habe ich mich nicht so genau ausgedrückt!

Ein wenig ;-)

Ok, ich bin ja auch noch ein kleiner Azubi, vielleicht ändert sich das ja mal mit den Jahren :-)

Also ich habe ein XML-Dokument und mit einem XSL-Stylesheet parse ich es um in HTML!

Ich weiss ich bin pingelig: es heißt transformieren; parsen bedeutet nur das einlesen der Quelldokument in dem RAM und und die Überprüfung der XML-Regel für Wohlgeformtheit.

<?xml version="1.0" encoding="ISO-8859-1"?>                Festgelegtes Encoding von W3, muss bei jedem XML-->

Es muss nicht sein, die XML-Deklaration ist optional,

<xsl:template match="Hauptknoten">

Ich würde entweder einen Template für den Wurzelknoten schreiben:
<xsl:template match="/">
  <html>
   <head> ...
   <body>
     <xsl:apply-templates />
   </body
  </html>
</xsl:template>

oder es so machen:
<xsl:template match="/Hauptknoten">

<xsl:template match="Blockstart">
<div style="margin-left:20px; margin-right:20px; padding-left:10px;">

<p style="font-weight:bold; font-size:80%">
   <xsl:attribute name="onClick">                                  doMenu('block<xsl:number level="any" />')                         </xsl:attribute>

Es wäre besser, wenn du hier nicht <p> nehmen würdest sondern <div>
Tipp: du könntest hier auch die Funktion generate-id() verwenden.

<spanstyle="display:none">
       ^^^^^^
Tippfehler? <span style="display:none">
                                           <!-- Blöcke werden auf unsichtbar gesetzt-->

Wenn es Blöcke sein sollten, wärst du mit <div> besser dran.

<xsl:attribute name="id">block<xsl:number level="any" /></xsl:attribute>   <!-- Alle Blöcke bekommem eine ID, damit sie verschachtelt dargestellt werden-->

Tipp: du könntest hier auch die Funktion generate-id() verwenden.
<span id="{generate-id()}"> ...

<xsl:apply-templates select="./*" />                                       <!--An dieser Stelle wird der Inhalt des aktuellen Tags eingesetzt,der Punkt ist ein Kürzel für den aktuellen "Standort". -->

Nicht ganz!
Was du hier machst ist folgendes:
<xsl:apply-templates select="self::node()/child::*" /> !

  1. Der Punkt ist die Abkürzung für self::node().
  2. Also du ruft die Templates nicht für den aktuellen Element (für Tags gibt es so oder so keinen Template) sonder für jedes Kindelemt in deinem gegenwärtigen Knoten.
    War / ist das dein Absicht?

Ja das ist Absich.

Es fehlt noch dein XML um mehr dazu sagen zu können.

Ok, Thomas oder wer es sonst noch liest, das XSL was ich habe funktioniert bereits schon, aber trotzdem danke für die Hilfe.
Mein Problem ist ja wie schon gesagt, dass ich eine Suchfunktion haben will und die ich mittel Javascript, was ich nicht kann, in das XSL einbinden will, damit ich dann "einfach" ein Textfeld habe, da denn Text eingebe und ich nur noch auf den Button drücken muss und dann mein XML durchsucht wird, welches ich vorher mit dem XSL-Stylesheet transformiere, auch wenn die Knoten auf unsichtbar stehen!

Hier noch ein kleiner Auszug aus dem XML, bevor ich es mittels XSL transformiert habe:

  • <Hauptknoten>
  • <Blockstart ID="0">
      <line qualifier="000001:0">0</line>
      <line qualifier="000100">1015</line>
      <line qualifier="000101">1</line>
      <line qualifier="000102">0</line>
      <line qualifier="000103">45</line>
      <line qualifier="000104">12:29:39</line>
      <line qualifier="000105">2003-03-03</line>
      <line qualifier="000106">2003-03-03 12:29:39</line>
      <line qualifier="000107">ANSI</line>
      <line qualifier="000112">TEst.exe</line>
      <line qualifier="000113">Rel56</line>
  • <Blockstart ID="21">
      <line qualifier="000001:21">21</line>
  • <Blockstart ID="15">

Und so sieht es dann das XML mit dem XSL aus
Hauptknoten-Start

Blockstart-Beginn

Start File: 0
Text1: 1015
Text2: 1
Text3 0
Text4: 45
Text5: 12:29:39
Text6: 2003-03-03
Text7: 2003-03-03 12:29:39
Text8: ANSI
Text9: TEst.exe
Text10: Rel56

Blockstart-Beginn

Text11: 21

So geht das noch lange weiter!
Wenn ich nun mit dem IE nach 1015 zum Beispiel suche findet er es nicht, weil ja mein Knoten nicht aufgeklappt ist, d.h. er ist unsichtbar, wegen dem XSL.
Vielleicht versteht man mich jetzt besser!

Gruß Stefan