christian: darstellung funzt nicht

hi

parse gerade ein xml dokument mit java... die daten kommen aus einer Datenbank und werden als xml-baum generiert. Diesen schicke ich mit einen Transformer(der mit einer xsl datei verbunden ist)in eine xmlDatei. funktioniert auch wunderbar. Nur wenn ich es im Browser öffne sehe ich folgenes:

<?xml version="1.0" encoding="UTF-8" ?>

  • <html xmlns:fo="http://www.w3.org/1999/XSL/Format">
  • <head>
      <title>Wissensdatenbank</title>
      </head>
  • <body>
      <H2>Uebungen</H2>
      Kategorie: unix
      <BR />
      titel: testtitel aufgabe: testaufgabe loesung: testloesung Kategorie: unix
      <BR />
      titel: testtitel aufgabe: testaufgabe loesung: testloesung
      <H2>Befehle</H2>

USW... das heißt das er mir mein html als xml baum darstellt?!
warum?

die xsl teplates funktionieren ja, sie haben mir die Uebungen und befehle aus der Datenbank geholt und an der richtigen Stelle( wie in der xsl datei bechrieben) eingefügt.

bin in xsl noch nit so fit. Vielleicht habe ich ja noch was entscheidenes übersehen nur weiß ich nicht was!

grüße christian

  1. Hallo,

    parse gerade ein xml dokument mit java... die daten kommen aus einer Datenbank und werden als xml-baum generiert. Diesen schicke ich mit einen Transformer(der mit einer xsl datei verbunden ist)in eine xmlDatei. funktioniert auch wunderbar. Nur wenn ich es im Browser öffne sehe ich folgenes:

    Was ist das Ergebnis bei dir? So wie du es hier schreibst ist es eine XML-Datei.

    USW... das heißt das er mir mein html als xml baum darstellt?!
    warum?

    Mir scheint, dass dir eher beim hin und her transformieren was schief geht:

    1. du holst deine Daten  aus der DB
    2. du hast jetzt ein XML-Baum
    3. du sendets diesen Baum an einem XSLT-Prozessor der den Baum mit einem entsprechendem Style Sheet transformiert (zu was?)
    4. und den Egbenisbaum schreibst du in eine XML-Datei ???

    <?xml version="1.0" encoding="UTF-8" ?>

    • <html xmlns:fo="http://www.w3.org/1999/XSL/Format">

    Als was wird deine Datei ausgeliefert (MIME-Type)?
    Mal so aus Neugier: was macht ein xmlns:fo="http://www.w3.org/1999/XSL/Format" in einer HTML-Datei?

    bin in xsl noch nit so fit. Vielleicht habe ich ja noch was entscheidenes übersehen nur weiß ich nicht was!

    Das kann dir keiner sagen, so ohne Code!

    Grüße
    Thomas

    1. hi,

      1. und den Egbenisbaum schreibst du in eine XML-Datei ???

      hmm... ich meinte natürlich "Ergebnisbaum"

      Thomas

    2. hi,

      Mal so aus Neugier: was macht ein xmlns:fo="http://www.w3.org/1999/XSL/Format" in einer HTML-Datei?

      der hat das Transformator-Object (java) hinein geschrieben!

      dachte nur vielleicht kennt jemand diese ausgabe und weiß was vergessen wurde, aber wenn du code willst...:

      hier die xsl datei:

      <?xml version="1.0" encoding="UTF-8" ?>

      <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:fo= "im" "http://www.w3.org/1999/XSL/Format"

      <xsl:output method="xml"/>

      <xsl:template match="eintrag">

      <html>
      <head><title>Wissensdatenbank</title></head>
      <body>
      <H2>Uebungen</H2>
      <xsl:apply-templates select="uebung"/>
      <H2>Befehle</H2>
      <xsl:apply-templates select="befehl"/>
      </body>
      </html>
      </xsl:template>

      <xsl:template match="befehl">
       Kategorie: <xsl:value-of select="@kategorie"/><BR/>
      titel: <xsl:value-of select="titel"/>
      beschreibung: <xsl:value-of select="beschreibung"/>
      syntax: <xsl:value-of select="syntax"/>
      beispiel: <xsl:value-of select="beispiel"/>
      ausgabe: <xsl:value-of select="ausgabe"/>
      </xsl:template>
      <xsl:template match="uebung">
       Kategorie: <xsl:value-of select="@kategorie"/><BR/>
      titel: <xsl:value-of select="titel"/>
      aufgabe: <xsl:value-of select="aufgabe"/>
      loesung: <xsl:value-of select="loesung"/>
      </xsl:template>

      </xsl:stylesheet>

      --------ende xsl datei--------

      hier die xml datei(eigentlich nur als Obejctbaum in java, aber ich habe ihn hier mal in einer datei ausgegeben:

      <?xml version="1.0" encoding="UTF-8" ?>

      • <wissensdb>
      • <eintrag>
      • <uebung id="1" kategorie="java">
          <titel>das ist der titel</titel>
          <aufgabe>aufgabe:</aufgabe>
          <loesung>loesung:</loesung>
          </uebung>
      • <uebung id="2" kategorie="linux">
          <titel>das ist der titel2</titel>
          <aufgabe>aufgabe2:</aufgabe>
          <loesung>loesung2:</loesung>
          </uebung>

      </eintrag>
        </wissensdb>

      --------- ende xml datei gekürzt-------

      hier der Java Transformator:

      TransformerFactory tFactory = TransformerFactory.newInstance( );
          Transformer transformer = tFactory.newTransformer(new StreamSource(this.getClass().getResource(
          "wissendb.xsl").openStream() ));
          transformer.setOutputProperty( OutputKeys.METHOD, "xml" );
          transformer.setOutputProperty( OutputKeys.INDENT, "yes" );
          transformer.setOutputProperty(
          "{http://xml.apache.org/xslt}indent-amount", "2" );
          DOMSource source = new DOMSource( document );
          StreamResult result = new StreamResult( f );
          transformer.transform( source, result );

      ---------ende java-transformator----------
      ich hab auch schon sämtliche properties aus und ein kommentiert aber immer die selbe ausgabe

      grüße christian

      1. hi,

        Mal so aus Neugier: was macht ein xmlns:fo="http://www.w3.org/1999/XSL/Format" in einer HTML-Datei?

        der hat das Transformator-Object (java) hinein geschrieben!

        dachte nur vielleicht kennt jemand diese ausgabe und weiß was vergessen wurde, aber wenn du code willst...:

        hier die xsl datei:

        <?xml version="1.0" encoding="UTF-8" ?>

        <xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:fo= "im" "http://www.w3.org/1999/XSL/Format"

        das "im" muss weg das gehört nicht dazu...

        grüße christian

      2. Hi Christian,

        Dein Problem scheint ja zu sein, dass bei Dir XML ausgegeben wird und nicht HTML. Da hätt ich einen Hauptverdächtigen anzubieten:

        <xsl:output method="xml"/>

        Einfach mal ersatzlos streichen und schauen ob's was bringt.

        Grüße,

        Utz

        1. Hi Christian,

          <xsl:output method="xml"/>

          Einfach mal ersatzlos streichen und schauen ob's was bringt.

          leidee genau wie vorher

          Grüße,

          christian

      3. Hallo,
        ich habe mal versucht
        -------------xml-------------
        <?xml version="1.0" encoding="UTF-8" ?>
        <wissensdb>
        <eintrag>
        <uebung id="1" kategorie="java">
        <titel>das ist der titel</titel>
        <aufgabe>aufgabe:</aufgabe>
        <loesung>loesung:</loesung>
        </uebung>
        <uebung id="2" kategorie="linux">
        <titel>das ist der titel2</titel>
        <aufgabe>aufgabe2:</aufgabe>
        <loesung>loesung2:</loesung>
        </uebung>
         </eintrag>
         </wissensdb>
        -----------------------------

        ------------------xsl ------------------
        <?xml version="1.0" encoding="UTF-8" ?>
        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="html" indent="yes"/>

        <xsl:template match="/">
        xsl:apply-templates/
        </xsl:template>

        <xsl:template match="eintrag">
        <html>
        <head><title>Wissensdatenbank</title></head>
        <body>
        <H2>Uebungen</H2>
        <xsl:apply-templates select="uebung"/>
        <H2>Befehle</H2>
        <xsl:apply-templates select="befehl"/>
        </body>
        </html>
        </xsl:template>

        <xsl:template match="befehl">
         Kategorie: <xsl:value-of select="@kategorie"/><BR/>
        titel: <xsl:value-of select="titel"/>
        beschreibung: <xsl:value-of select="beschreibung"/>
        syntax: <xsl:value-of select="syntax"/>
        beispiel: <xsl:value-of select="beispiel"/>
        ausgabe: <xsl:value-of select="ausgabe"/>
        </xsl:template>
        <xsl:template match="uebung">
         Kategorie: <xsl:value-of select="@kategorie"/><BR/>
        titel: <xsl:value-of select="titel"/>
        aufgabe: <xsl:value-of select="aufgabe"/>
        loesung: <xsl:value-of select="loesung"/>
        </xsl:template>

        </xsl:stylesheet>

        ------------------------------------

        --------html vom saxon ---------------

        <html>
           <head>
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

        <title>Wissensdatenbank</title>
           </head>
           <body>
              <H2>Uebungen</H2>
              Kategorie: java<BR>
              titel: das ist der titel
              aufgabe: aufgabe:
              loesung: loesung:
              Kategorie: linux<BR>
              titel: das ist der titel2
              aufgabe: aufgabe2:
              loesung: loesung2:
              <H2>Befehle</H2>
           </body>
        </html>
        -----------------------------------

        hier der Java Transformator:

        Java ist nicht meins.

        transformer.setOutputProperty( OutputKeys.METHOD, "xml" );
            transformer.setOutputProperty( OutputKeys.INDENT, "yes" );

        mir scheint, dass du hier den Output als XML festlegst.
        Sollte das da nicht "html" sein? (und nicht vergesen, <xsl:output method="html" indent="yes"/> im Stylesheet! )

        Grüße
        Thomas

  2. Hi

    parse gerade ein xml dokument mit java... die daten kommen aus einer Datenbank und werden als xml-baum generiert. Diesen schicke ich mit einen Transformer(der mit einer xsl datei verbunden ist)in eine xmlDatei. funktioniert auch wunderbar. Nur wenn ich es im Browser öffne sehe ich folgenes:

    <?xml version="1.0" encoding="UTF-8" ?>

    • <html xmlns:fo="http://www.w3.org/1999/XSL/Format">
    • <head>
        <title>Wissensdatenbank</title>
        </head>
    • <body>

    Welcher Mime-Type kommt beim Browser an?
    Was sagt ein http-fähiger Browser dazu (z.B. Mozilla)?

    Andreas

    1. hi

      hab den fehler gefunden... ich habe die mit java erstellte datei einfach in html umbenannt und schon ging es! Sie hieß vorher wissendb.xml nun: wissendb.html

      grüße christian