AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stylesheet für XML Datei

Ein Thema von Luckie · begonnen am 11. Apr 2006 · letzter Beitrag vom 23. Apr 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Stylesheet für XML Datei

  Alt 11. Apr 2006, 16:39
Wie müsste ein Stylesheet oder wie das heißt aussehen, damit eine solche XML-Datei:
XML-Code:
- <importkennungen>
- <zeitraum jahr="2007">
  <ziel kennung="11A13">(#BUNG07)\Lieferschein</ziel>
  <ziel kennung="11A15">(#BUNG07)\Rechnung</ziel>
  <ziel kennung="11A11">(#BUNG07)\Firma2\Lieferschein</ziel>
  </zeitraum>
- <zeitraum jahr="2006">
  <ziel kennung="11A13">(#BUNG06)\Lieferschein</ziel>
  <ziel kennung="11A15">(#BUNG06)\Rechnung</ziel>
  <ziel kennung="11A11">(#BUNG06)\Firma2\Lieferschein</ziel>
  </zeitraum>
- <zeitraum jahr="2005">
  <ziel kennung="11A13">(#BUNG05)\Lieferschein</ziel>
  <ziel kennung="11A15">(#BUNG05)\Rechnung</ziel>
  <ziel kennung="11A11">(#BUNG05)\Firma2\Lieferschein</ziel>
  </zeitraum>
- <zeitraum jahr="2004">
  <ziel kennung="11A13">(#BUNG04)\Lieferschein</ziel>
  <ziel kennung="11A15">(#BUNG04)\Rechnung</ziel>
  <ziel kennung="11A11">(#BUNG04)\Firma2\Lieferschein</ziel>
  </zeitraum>
  </importkennungen>
im Browser gescheit aussieht?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Stylesheet für XML Datei

  Alt 11. Apr 2006, 16:52
Welches Stylesheet?
CSS kann auch auf XML-Elemente angewandt werden, wenn die Struktur der Datei in etwa der Struktur der Anzeige entsprechen soll, tuts eine einfache CSS-Datei. ich hab das noch nicht selbst ausprobiert, aber im Prinzip kannst du ja per CSS das Aussehen sehr frei festlegen, also Borders, Margins, Paddings und ob es ein Block- oder Inline-Element ist.

Wenn dir das nicht reicht, bleibt noch XSLT übrig, damit bist du, was das Ausgabeformat betrifft, quasi unbeschränkt.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#3

Re: Stylesheet für XML Datei

  Alt 11. Apr 2006, 21:08
Dachtest du an so was?
XML-Code:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="importkennungen">
  <html>
  <head>
     <title>Importkennungen</title>
  </head>
  <body>
     <xsl:apply-templates />
  </body>
  </html>
</xsl:template>

<xsl:template match="zeitraum">
   <table>
      <tr><th><xsl:value-of select="@jahr"/></th></tr>
      <xsl:apply-templates/>
   </table>      
</xsl:template>

<xsl:template match="ziel">
   <tr><td><xsl:value-of select="@kennung"/>, <xsl:apply-templates/></td></tr>
</xsl:template>

</xsl:stylesheet>
Lässt sich, wie Chewie schon sagte, noch mit CSS und Co. verschönern. Aber du musst der XML-Datei auch sagen, dass sie ein XSL-Stylesheet hat:
XML-Code:
<?xml-stylesheet href="importkennungen.xsl" type="text/xsl"?>
<importkennungen>
  
</importkennungen>
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Stylesheet für XML Datei

  Alt 11. Apr 2006, 23:13
Ja genau so was. Spitze.

Könnte mir nochjemand das Prinzip an Hand obigen Beispieles erklären?

Noch eine frage, warum sagt er mir das ein "ü" ein ungültiges Zeichen wäre?
Habs: <?xml version="1.0" encoding="ISO-8859-1"?> muss es heißen, dann gehen auch Umlaute.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#5

Re: Stylesheet für XML Datei

  Alt 12. Apr 2006, 17:35
Zitat von Luckie:
Könnte mir nochjemand das Prinzip an Hand obigen Beispieles erklären?
Das ergibt sich eigentlich anhand des XML-Codes. Du musst quasi für jeden Knoten ein Template schreiben und dort den gewünschten HTML-Code unterbringen.

XML-Code:
<xsl:value-of select="?"/>
<xsl:apply-templates />
sind dabei eigentlich spezielle XML-"Befehle", durch die quasi der restliche Code bearbeitet wird. Würdest du das beim <importkennungen>-Template nicht angeben, dann hättest du nur eine leere HTML-Seite ohne Inhalt. Daneben gibt es noch weitere Befehle (u.a. auch eine for-Schleife), mit denen du das Ergebnis noch weiter beeinflussen kannst. Aber die Erklärung würde letztlich zu lange dauern. Da du das PSDK hast, verweise ich dich einfach mal auf die passenden Befehle, die ja dort erläutert werden.

Hier mal ein kleines Beispiel, falls du typische HTML-Befehle in XML-Dateien verwenden willst und diese auch 1:1 umsetzen möchtest. Wie gesagt, XML an sich kann mit <a>, <pre> und Co. ja nichts anfangen. Aber du brauchst nun nicht jedes HTML-Tag bekannt machen, es reicht auch eine Aufzählung
XML-Code:
<xsl:template match="ul|ol|li|img|p|a|b|u|i|br|code|pre|span|iframe|del|small|hr|h1|h2|h3|acronym">
  <xsl:copy>
   <xsl:copy-of select="@*"/>
   <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Stylesheet für XML Datei

  Alt 13. Apr 2006, 15:29
Aha. Ich habe es jetzt mal selber versucht an Hand diser XML Datei:
XML-Code:
<?xml-stylesheet href="appdata/LogFile.xsl" type="text/xsl"?>
<log>
  <Start TS="2006-04-13">LogFile</Start>
  <Info TS="2006-04-13 14:59:13:546">Anzahl kopierter Dateien: 15</Info>
  <Info TS="2006-04-13 14:59:13:546">zu verarbeitende Spooldateien: 15</Info>
  <Info TS="2006-04-13 14:59:13:562">aktuelle Spooldatei: D:\Projekte Datawerk\PMD\Cold\bin\work\01.txt</Info>
  <Task TS="2006-04-13 14:59:13:593">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\01_000.txt</Task>
  <Task TS="2006-04-13 14:59:13:625">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\01_001.txt</Task>
  <Task TS="2006-04-13 14:59:13:640">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\01_002.txt</Task>
  <Info TS="2006-04-13 14:59:13:671">Spooldatei 01.txt gelöscht</Info>
  <Info TS="2006-04-13 14:59:13:687">aktuelle Spooldatei: D:\Projekte Datawerk\PMD\Cold\bin\work\02.txt</Info>
  <Task TS="2006-04-13 14:59:13:703">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\02_000.txt</Task>
  <Task TS="2006-04-13 14:59:13:734">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\02_001.txt</Task>
  <Task TS="2006-04-13 14:59:13:750">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\02_002.txt</Task>
  <Info TS="2006-04-13 14:59:13:781">Spooldatei 02.txt gelöscht</Info>
  <Info TS="2006-04-13 14:59:13:796">aktuelle Spooldatei: D:\Projekte Datawerk\PMD\Cold\bin\work\03.txt</Info>
  <Task TS="2006-04-13 14:59:13:828">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\03_000.txt</Task>
  <Task TS="2006-04-13 14:59:13:843">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\03_001.txt</Task>
  <Task TS="2006-04-13 14:59:13:875">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\03_002.txt</Task>
  <Info TS="2006-04-13 14:59:13:890">Spooldatei 03.txt gelöscht</Info>
  <Info TS="2006-04-13 14:59:14:234">aktuelle Spooldatei: D:\Projekte Datawerk\PMD\Cold\bin\work\08.txt</Info>
  <Task TS="2006-04-13 14:59:14:265">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\08_000.txt</Task>
  <Task TS="2006-04-13 14:59:14:281">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\08_001.txt</Task>
  <Task TS="2006-04-13 14:59:14:312">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\08_002.txt</Task>
  <Info TS="2006-04-13 14:59:14:328">Spooldatei 08.txt gelöscht</Info>
  <Info TS="2006-04-13 14:59:14:343">aktuelle Spooldatei: D:\Projekte Datawerk\PMD\Cold\bin\work\09.txt</Info>
  <Task TS="2006-04-13 14:59:14:390">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\09_000.txt</Task>
  <Task TS="2006-04-13 14:59:14:421">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\09_001.txt</Task>
  <Task TS="2006-04-13 14:59:14:453">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\09_002.txt</Task>
  <Info TS="2006-04-13 14:59:14:468">Spooldatei 09.txt gelöscht</Info>
  <Info TS="2006-04-13 14:59:14:484">aktuelle Spooldatei: D:\Projekte Datawerk\PMD\Cold\bin\work\10.txt</Info>
  <Task TS="2006-04-13 14:59:14:515">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\10_000.txt</Task>
  <Task TS="2006-04-13 14:59:14:546">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\10_001.txt</Task>
  <Task TS="2006-04-13 14:59:14:562">Erstelle Importdokument D:\Projekte Datawerk\PMD\Cold\bin\work\import\10_002.txt</Task>
  <Info TS="2006-04-13 14:59:14:593">Spooldatei 10.txt gelöscht</Info>
  <Ende TS="2006-04-13 14:59:17:250">LogDatei wurde geschlossen.</Ende>
</log>
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="log">
  <html>
  <head>
     <title>LogFile</title>
     <link rel="stylesheet" type="text/css" href="appdata/stylesheet.css"/>
  </head>
  <body>
    <div>
     <h1>LogFile</h1>
     <hr/>
       <xsl:apply-templates />
       


      <hr/>
    </div>
  </body>
  </html>
</xsl:template>

<xsl:template match="Info">
      <xsl:name>


      <xsl:apply-templates/>
</xsl:template>

<!-- <xsl:template match="ziel">
   <tr><td><xsl:value-of select="@kennung"/></td><td><xsl:apply-templates/></td></tr>
</xsl:template> -->

</xsl:stylesheet>
aber da sagt er mir schon gleich am Anfang:
Zitat:
Das Endtag 'xsl:template' stimmt nicht mit dem Starttag 'xsl:name' überein. Fehler beim Bearbeiten der Ressource 'file:///D...

</xsl:template>
--^
Es soll nachher eine Tabelle geben mit den Spalten:
Kategorie, Timestamp, Text
Wobei Kategorie der Name des Elemetes ist, Timestamp das Attribut und Text der Inhalt des Elemetes. Es wäre dann noch schön, wenn man die Spalten entsprechend Färben könnte: Kategorie Info schwarz, Kategorie task blau und Kategorie Error rot oder so.

So:
Code:
<xsl:template match="log">
  <html>
  <head>
     <title>LogFile</title>
     <link rel="stylesheet" type="text/css" href="appdata/stylesheet.css"/>
  </head>
  <body>
     <h1>LogFile</h1>
     <hr/>
       <table>
         <tr><th>Kategorie</th><th>Zeitstempel</th><th>Text</th></tr>
         <tr>
         <xsl:apply-templates />
         </tr>
       </table>
       


      <hr/>
  </body>
  </html>
</xsl:template>

<xsl:template match="Info">
      <td></td><td><xsl:value-of select="@TS"/></td><td></td>
      <xsl:apply-templates />
</xsl:template>

<xsl:template match="Task">
      <td></td><td><xsl:value-of select="@TS"/></td><td></td>
      <xsl:apply-templates />
</xsl:template>

<xsl:template match="Error">
      <td></td><td><xsl:value-of select="@TS"/></td><td></td>
      <xsl:apply-templates />
</xsl:template>
Gibt er mir immer nur den Wert der Eloemete aus, von der Tabelle ist aber nichts zu sehen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#7

Re: Stylesheet für XML Datei

  Alt 13. Apr 2006, 16:42
Nette kleine Übung für mich
XML-Code:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="log">
  <html>
  <head>
     <title>LogFile</title>
     <style type="text/css"><![CDATA[

     .error {
        background-color:red;
        color:black;
     }

    .info {
       background-color:green;
       color:white;
    }

    .task {
       background-color:yellow;
       color:black;
    }

     ]]></style>
  </head>
  <body>
     <h1>LogFile</h1>
     <hr/>
       <table>
         <tr><th>Kategorie</th><th>Zeitstempel</th><th>Text</th></tr>
         <xsl:apply-templates/>
       </table>
       


      <hr/>
  </body>
  </html>
</xsl:template>

<xsl:template match="Info|Task|Error|Start|Ende">
   <tr>
      <xsl:attribute name="class">
         <xsl:choose>
            <xsl:when test="name()='Info'"><xsl:text>info</xsl:text></xsl:when>
            <xsl:when test="name()='Task'"><xsl:text>task</xsl:text></xsl:when>
            <xsl:when test="name()='Error'"><xsl:text>error</xsl:text></xsl:when>
            <xsl:otherwise />
         </xsl:choose>
      </xsl:attribute>
      <td><xsl:value-of select="name()"/></td>
      <td><xsl:value-of select="@TS"/></td>
      <td><xsl:apply-templates /></td>
   </tr>
</xsl:template>

</xsl:stylesheet>
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Stylesheet für XML Datei

  Alt 13. Apr 2006, 16:50
Ui, ich dachte nicht, dass es so komplex wird.

Aber eins noch, er stolpert über das "ö" trotz:
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
Zitat:
Im Textinhalt wurde ein ungültiges Zeichen gefunden. Fehler beim Bearbeiten der Ressource 'file:///D:/Projekte Datawerk/PMD...

<Info TS="2006-04-13 16:47:43:234">Spooldatei 01.txt gel
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#9

Re: Stylesheet für XML Datei

  Alt 13. Apr 2006, 16:54
Zitat von Luckie:
Ui, ich dachte nicht, dass es so komplex wird.
Wieso? Den ganzen Stylesheetkram kannst du doch in die CSS auslagern, wie du es oben gemacht hast. Du musst dich im XSL-Stylesheet nur an gültiges HTML halten (*), wobei du beachten musst, dass es trotzdem eine XML-Datei ist (sprich: schließende Tags müssen sein, usw.).

Zitat:
Aber eins noch, er stolpert über das "ö" [...]
Nicht bei mir, und ich habe einfach nur deine XML-Datei aus der DP in mein Notepad kopiert.


* Ist mir bei deiner Tabelle in deinem Stylesheet aufgefallen. Das war nicht ganz korrektes HTML. Zumindest wäre nicht die 3spaltige Tabelle entstanden, die du wolltest.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Stylesheet für XML Datei

  Alt 13. Apr 2006, 16:56
Dort hatte ich wohl schon die "ö"s durch "oe" ersetzt. Hm, doch nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz