![]() |
Stylesheet für XML Datei
Wie müsste ein Stylesheet oder wie das heißt aussehen, damit eine solche XML-Datei:
XML-Code:
im Browser gescheit aussieht?
- <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> |
Re: Stylesheet für XML Datei
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. |
Re: Stylesheet für XML Datei
Dachtest du an so was?
XML-Code:
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 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>
XML-Code:
<?xml-stylesheet href="importkennungen.xsl" type="text/xsl"?>
<importkennungen> </importkennungen> |
Re: Stylesheet für XML Datei
Ja genau so was. Spitze. :thumb:
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? :gruebel: Habs: <?xml version="1.0" encoding="ISO-8859-1"?> muss es heißen, dann gehen auch Umlaute. ;) |
Re: Stylesheet für XML Datei
Zitat:
XML-Code:
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.
<xsl:value-of select="?"/>
<xsl:apply-templates /> 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:
:stupid:
<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> |
Re: Stylesheet für XML Datei
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:
aber da sagt er mir schon gleich am Anfang:
<?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> Zitat:
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:
Gibt er mir immer nur den Wert der Eloemete aus, von der Tabelle ist aber nichts zu sehen.
<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> |
Re: Stylesheet für XML Datei
Nette kleine Übung für mich :thumb:
XML-Code:
:zwinker:
<?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> |
Re: Stylesheet für XML Datei
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:
|
Re: Stylesheet für XML Datei
Zitat:
Zitat:
* 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. :zwinker: |
Re: Stylesheet für XML Datei
Dort hatte ich wohl schon die "ö"s durch "oe" ersetzt. Hm, doch nicht. :gruebel:
|
Re: Stylesheet für XML Datei
Hi. Vielleicht hab ich's auch völlig falsch verstanden, aber wenn du mit PHP den Header sendest, stellen die Browser (IE + FF auf jedenfall) die Datei gleich strukturiert mit Code-Folding dar:
Code:
<?php
header("Content-type: text/xml"); ?> ![]() |
Re: Stylesheet für XML Datei
Es sind lokale Dateien.
|
Re: Stylesheet für XML Datei
Zitat:
Mit den XSL-Templates kannst du das xml-File als HTML anzeigen lassen; das heisst die Informationen in Tabellen anzeigen, einen Header einfuegen usw. So kannst du es im Browser schoen darstellen, aber immer noch gut maschinell auslesen (und dann wieder anders anzeigen) ;) Greetz alcaeus |
Re: Stylesheet für XML Datei
Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang mal beide Dateien zum Testen.
|
Re: Stylesheet für XML Datei
:roll: Ja, Micha, der IE bemängelt in dem Fall nicht das Stylesheet sondern deine XML-Datei. Wenn du also Umlaute benutzt, dann musst du in der XML-Datei das Encoding setzen. :stupid: Kleine Ursache, große Wirkung, denn nach dem Patch sehe ich deine Tabelle, die du noch suchst. :mrgreen:
|
Re: Stylesheet für XML Datei
Ist es damit auch möglich, ein Bild anzeigen zu lassen, dessen Pfad in der XML-Datei steht ?
gruss |
Re: Stylesheet für XML Datei
Wenn du dem Stylesheet "sagst", wie es bei dem Bild bzw. -pfad reagieren soll, natürlich ... Klar sollte doch sein, dass sich der XML-Parser an sich nicht dafür interessiert, was er da parst. Für ihn sind das alles nur Knoten mit bzw. ohne Inhalt. Den Parser interessiert nur die Syntax der XML-Datei an sich. Wie du die Knoten umwandelst, bestimmst du letztlich selbst.
|
Re: Stylesheet für XML Datei
könntest du mir ein Beispiel posten ?
|
Re: Stylesheet für XML Datei
Hallo Christian,
StyleSheet ist manchmal ein überladener Begriff. Angenommen du hast ein XML-Dokument, welches eine Pfadangabe für ein Bild enthält. Dein XML-Dokument kann direkt mit CSS gerendert werden - und dann würde ich von einem StyleSheet sprechen. Oder es findet zuerst eine Übersetzung von XML nach XHTML via XSL-T statt - da finde ich StyleSheet etwas verwirrend, da es sich eigentlich nicht um eine Layout-Kontrolle handelt, sondern um eine Umformung (von XML nach XHTML), aber das hat einen historischen Hintergrund. In XML selbst kannst du die Semantik in "<bild>Pfadangabe</bild>" nicht rüberbringen. Wenn du mit XSL-T zuerst eine Übersetzung nach [img]Pfadangabe[/img] vornimmst, dann weiß die rendering engine deines Browsers, was zu tun ist. Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz