Announcement

Collapse
No announcement yet.

XSLT-Sheet

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XSLT-Sheet

    Hallo zusammen!
    Soweit funkioniert das Darstellen der daten im xml file mit xslt file optimal!
    Jetzt hab ich nur ne frage ob es ne möglichkeit gibt das file zu vereinfachen! habe einige sachen doppelt drin und meine das es gehen müsste, aber mit meinen versuchen hat es bisher nicht geklappt!
    Bin dankbar für anregungen wo ich mein file verbessern kann!

    Code:
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output encoding="ISO-8859-1"/>
    <xsl:template match="/">
    	<html xml:lang="fi" xmlns="http://www.w3.org/1999/xhtml">
    	<head >
    	<p align="center" style="font-family:Tahoma; font-size:32px;color:red"><b> Die Firma sepp.med gmbh</b></p>
    	</head>
    	<body>
    		<xsl:for-each select="firma">
    			<ul>
    			<li>
    			<span style="font-size:130%;"><b>sepp.med</b></span>
    						<ul><li><b>Geschäftsführung</b></li>
    								<xsl:for-each select="mitarbeiter">
    								<xsl:sort select="name" order="ascending"/>	
    									<xsl:if test="position='Geschäftsleitung  ' or position='Mitglied der Geschäftsführung  ' "> 
    									<ul>
    										<li>
    											<xsl:apply-templates select="name"/>
    											<xsl:apply-templates select="position"/>
    										</li>
    									</ul>
    									</xsl:if>
    								</xsl:for-each>
    						</ul>
    						<ul><li><b>Abteilungsleiter</b></li>
    								<xsl:for-each select="mitarbeiter">	
    								<xsl:sort select="name" order="ascending"/>	
    									<xsl:if test="position='Abteilungsleiter  ' "> 
    									<ul>
    										<li>
    											<xsl:apply-templates select="name"/>
    											<xsl:apply-templates select="position"/>
    										</li>
    									</ul>
    									</xsl:if>
    								</xsl:for-each>
    						</ul>
    					</li>
    				</ul>
    				</xsl:for-each>
    			 </body>
    		</html>
    	</xsl:template>
    	
    <xsl:template match="name">
    <xsl:value-of select="."/>
    <span>, </span>
    </xsl:template>
    <xsl:template match="position">
    <xsl:value-of select="."/>
    </xsl:template>
    
    </xsl:stylesheet>
    Danke

  • #2
    Ich nehme den Code jetzt nicht komplett auseinander, aber auffällig sind die xsl:for-each-Konstrukte, die auch noch zu separaten xsl:template-Blöcken nebst xsl:apply-templates-Aufrufen umgeformt werden können.

    Es lassen sich auch solche Templates formulieren: <xsl:template match="mitarbeiter[position='whatever']">...</xsl:template>.

    Bei relativ flachen Strukturen ist xsl:for-each auch durchaus passabel, erst bei höherer Komplexität sind die Vorteile von strukturierterem XSLT-Code offensichtlich (bessere Wartbarkeit, Wiederverwendbarkeit durch Modularisierung, ...).

    Comment

    Working...
    X