Thomas J.S.: Suchfunktion in XSL einbinden mit JAVASCRIPT

Beitrag lesen

Hallo,

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

Ein wenig ;-)

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?

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

Grüße
Thomas