Kathrin: Formate definieren abhängig von mehreren Attributen

Beitrag lesen

Die zweite Syntax entspringt deiner Phantasie. Die erste sieht fast gut aus.

Stimmt - die zweite Syntax hatte ich mir selbst überlegt, die erste ist mehr so ne Vermutung gewesen, weil ich die Beschreibung immer nur für ein Element gesehen habe. Habe festgestellt, dass es gar nicht unbedingt an den zwei Attributen liegt, dass es nicht funktioniert, sondern dass es generell nicht geht.

Das Problem ist wir haben XML-Dateien, die wir mit einer XSL-Transformation anzeigen. Das Attribute change kommt bei paragraph vor und wird als p umgesetzt - ich kopiere mal einen Teil des scripts hierrein:

<?xml version="1.0" encoding="iso-8859-1"?>  
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">  
  
<xsl:output  
    method="html"  
    doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/loose.dtd"  
	media-type="text/html"  
    encoding="ISO-8859-1"  
    omit-xml-declaration="yes"  
    version="1.0" />  
  <xsl:output method="xml" version="1.0" encoding="iso-8859-1" indent="yes" />  
  
  <xsl:template match="node()">  
    <xsl:value-of select="."/>  
  </xsl:template>  
  
  <xsl:template match="/">  
    <xsl:apply-templates select="*"/>  
  </xsl:template>  
  
  <xsl:template match="dmodule">  
    <html>  
      <head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>  
        <title><xsl:value-of select="normalize-space(//name)"/></title>  
        <style type="text/css">  
          @media print{  
          }  
	  *[change=add]{  
	    background-color:#aaffaa;border-right:4px solid black;margin-right:3px;  
          }  
        </style>  
      </head>  
      <body bgcolor="#ffffff" style="font-family:Arial Unicode MS;">  
        <xsl:apply-templates select="cont"/>  
      </body>  
    </html>  
  </xsl:template>  
  
  <xsl:template match="cont|CONT">  
    <xsl:apply-templates select="descr|DESCR"/>  
  </xsl:template>  
  
  <xsl:template match="descr|DESCR">  
    <xsl:apply-templates select="*"/>  
  </xsl:template>  
  
  <xsl:template match="paragraph">  
    <p><!--  
	  <xsl:attribute name="style">margin-top:6px;margin-bottom:2px;<xsl:choose>  
        <xsl:when test="@change='add' and @mark='1'">background-color:#aaffaa;border-right:4px solid black;margin-right:3px;</xsl:when>  
        <xsl:when test="@change='delete' and @mark='1'">background-color:#aaffaa; text-decoration:line-through;border-right:4px solid black;margin-right:3px;</xsl:when>  
      </xsl:choose></xsl:attribute>-->  
      <xsl:if test="@id"><xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute></xsl:if>  
      <xsl:apply-templates select="*|text()"/>  
    </paragraph>  
  </xsl:template>

Ich habe die Kommentarzeichen unterhalb von paragraph extra mal dringelassen, dass man sieht, wie es vorher umgesetzt war. Wie könnte man @change="add" und @mark="1" unterhalb von <style type="text/css"> umsetzen, so dass es funktioniert? Momentan funktioniert ja nicht mal @change="add", change und mark kommen nämlich bei vielen verschiedenen Elementen im XML vor.

Ich hoffe, dass jemand mir einen Tipp geben kann.

Vielen Dank im Voraus
Viele Grüße
Kathrin