Lothar: Druck und Bildschirmdarstellung via XML/XSL

Hallo Gemeinde,

ich möchte aus meiner XML zwei unterschiedliche Darstellungen ermöglichen. Für normale Darstellung und für Ausgabe auf den Drucker. In CSS ist dies möglich. Wenn ich jedoch die Einstellung in der XML so bzw. ähnlich verwende wird immer die erste Zeile verwendet. Kenn dabei jemand abhilfe?

In der XSL:

<link rel="stylesheet" type="text/css" media="screen" href="../../common/css/screen.css"/>
<link rel="stylesheet" type="text/css" media="print" href="../../common/css/print.css"/>

In der XML:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl' media="print" href='../print.xsl'?>
<?xml-stylesheet type='text/xsl' media="screen" href='../show.xsl'?>

Vielen Dank im voraus.

Lothar

  1. Hallo Lothar,

    ich möchte aus meiner XML zwei unterschiedliche Darstellungen ermöglichen. Für normale Darstellung und für Ausgabe auf den Drucker.

    Dann müssten wir erst einmal wissen, wie Du die XML-Datei transformierst:

    a) Im Browser

    Im Prinzip sollte es so funktionieren, wie Du es Dir vorgestellt hast, der Standard sagt das nämlich aus. Dummerweise funktioniert's nicht - zumindest nicht im Firefox (IE habe ich jetzt nicht getestet).

    Dann ist die einzige sinnvolle Möglichkeit, einfach direkt verschiedene CSS mit unterschiedlichen media-Angaben auszugeben, d.h. die XSLT-Logik bleibt die gleiche, Du kannst jedoch ganz normal wie bei HTML-Seiten auch unterschiedliche CSS anbieten. Andere XSLT-Logik auszuführen geht m.W. nicht.

    Eventuell könnte auch die Transformation via Javascript etwa für Dich sein, dort kannst Du nämlich per setParameter() Parameter setzen, die Du im XSLT auslesen kannst. Ob JavaScript jedoch auch in der Druckansicht ausgeführt wird, weiß ich nicht - und ich weiß auch nicht, ob JavaScript den aktuellen Mediatype herausbekommt.

    b) Über einen serverseitigen Prozessor

    Dann kannst Du ja z.B. sowas wie ?print=1 oder ähnliches an die URL ranhängen, wenn das Dokument gedruckt werden soll - die normale Version sollte dann halt einen Link auf "Druckversion" haben. Die serverseitige Logik, die den XSLT-Prozessor aufruft, könnte dann den URL-Parameter auslesen und dem XSLT-Prozessor dann einen Parameter setzen, den Du dann im XSLT auslesen kannst (oder von vorne herein ein andere Stylesheet zur Transformation verwenden).

    Viele Grüße,
    Christian

    1. Hallo,

      Im Prinzip sollte es so funktionieren, wie Du es Dir vorgestellt hast, der Standard sagt das nämlich aus. Dummerweise funktioniert's nicht - zumindest nicht im Firefox (IE habe ich jetzt nicht getestet).

      Es ist übrigens den Entwicklern bekannt, dass es im Firefox nicht geht...

      Viele Grüße,
      Christian