<?xml version="1.0" encoding="ISO-8859-1"?>

<!--
	Beispiel-Stylesheet, das die XML-Version der PAS 1068,
	mit der Bildungsangebote beschrieben werden, als HTML-Seite darstellt.
	August 2006
	Barbara Hildebrandt, Universität Duisburg-Essen,
	ICB - Wirtschaftsinformatik der Produktionsunternehmen
-->

<xsl:stylesheet version="2.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	>
	<xsl:output method="html" indent="yes"/>
		
	<xsl:template match="/">
		<html>
		<head><title>Bildungsangebote beschreiben mit der PAS Transparenz</title></head>
		<body>
		<h1 align="center">HTML-Version: Bildungsangebote beschreiben mit der PAS "Transparenz"</h1>
		<p align="center">  </p>
		
		<!-- hier sollen die einzelnen Kategorien/Elemente eines Bildungsangebotes verarbeitet werden: -->
		<xsl:apply-templates/>
		
		</body>
		</html>
	</xsl:template>
	
	
	<!-- ========================================================================================== -->
	<!-- Templateregeln für die einzelnen Elemente eines Bildungsangebots gemäß PAS_Transparenz-XML -->
	<!-- ========================================================================================== -->
	
	<!-- ====================================================== -->
	<!-- 1. Templateregel für das Rootelement <Bildungsangebot> -->
	<!-- ====================================================== -->
	<!-- dieses Template gibt einen einleitenden HTML-Text aus und ruft zur weiteren Verarbeitung auf -->
	<xsl:template match="Bildungsangebot">
		<p align="center"><b>
		<xsl:text>Im Folgenden werden die Kategorien und Elemente der PAS Transparenz beschrieben:</xsl:text>
		</b><br/>
		</p> 
		<xsl:apply-templates/>
	</xsl:template>
	

	<!-- ====================================================================== -->
	<!-- 2. Templateregel für jedes Element <Kategorie>                         -->
	<!-- (jedes Bildungsangebot wird durch verschiedene Kategorien beschrieben, -->
	<!--  wobei jede Kategorie wiederum Unterkategorien haben und/oder          -->
	<!--  kein, ein oder mehrere Elemente enthalten kann)                       -->
	<!-- ====================================================================== -->	
	<xsl:template match="Kategorie">
				
		<!-- ruft template Bezeichnung auf -->
		<xsl:call-template name ="Inhalt" />
	</xsl:template>
	
	
	<!-- ======================================================================= -->
	<!-- 3. Templateregel für den Inhalt jedes Knotens vom Typ Kategorie/Element -->
	<!-- ======================================================================= -->	
	<xsl:template name="Inhalt">
				
		<div style="width:90%;align:center; margin:1cm; border:thin solid gray; text-align:left; padding-left:20px"><b><xsl:value-of select="ID"/>
		<xsl:text>: </xsl:text>
		<xsl:value-of select="Bezeichnung"/></b>

		<!-- hier müssen dann die Kindknoten verarbeitet werden (Pre-Order Durchlauf des Baums?): -->
		<!-- falls der nächste Knoten ein Element ist, rufe Template Element auf -->
		<!-- falls der nächste Knoten eine Kategorie ist, rufe Template Kategorie auf -->	
		
		<xsl:for-each select ="PAS_Element|Kategorie">
			<xsl:if test="name(.) ='Kategorie'">
				<!-- aktueller Knoten ist Kategorie -->
				<xsl:call-template name ="Inhalt" />
			</xsl:if>
			<xsl:if test="name(.) ='PAS_Element'">
				<!-- aktueller Knoten ist Element -->
				<xsl:call-template name="PAS_Element"/>
			</xsl:if>
		</xsl:for-each>
		
		<br/><br/>
		</div>
	</xsl:template>
	

	<!-- ================================================================== -->
	<!-- 4. Templateregel für den Inhalt jedes Elements                     -->
	<!-- ================================================================== -->		
	<xsl:template name="PAS_Element">
		
		<div style="width:90%; align:center; margin:1cm; text-align:left; border:thin solid gray; padding-left:20px">
			<b><xsl:value-of select="ID"/>
			<xsl:text>: </xsl:text>
			<xsl:value-of select="Bezeichnung"/></b><br/>
			<xsl:text>Klasse: </xsl:text>
			<xsl:value-of select="Klasse"/><br/>
			
			<xsl:apply-templates select="Darstellung" /> <!-- Template zur Verarbeitung von <Darstellung> aufrufen -->
				
			<xsl:apply-templates select="Kommentar" />	 <!-- Template zur Verarbeitung von <Kommentar> aufrufen -->

			<xsl:apply-templates select="match" />  	 <!-- Template zur Verarbeitung von <match> aufrufen -->
					
		</div>
	</xsl:template>
	
	
	<!-- ================================================================== -->
	<!-- Templateregel für das Element <Darstellung>                        -->
	<!-- ================================================================== -->	
	
	<xsl:template match="Darstellung">
		<xsl:text>Angabetyp: </xsl:text>
		<xsl:value-of select="./AngabeTyp"/>
		<br/>
		<xsl:apply-templates select="Wert"/>
	</xsl:template>
	
	<xsl:template match="Wert">
	<!-- wenn ein Wert angegeben wurde, diesen ausgeben -->
	<xsl:if test="text()">
		<xsl:text>Wert: </xsl:text>
		<xsl:value-of select="text()"/>
		<br/>
	</xsl:if>
	</xsl:template>

	
	<!-- ================================================================== -->
	<!-- Templateregel für das Element <Kommentar>                          -->
	<!-- ================================================================== -->	
	<xsl:template match="Kommentar">
		<xsl:text>Ausfüllhinweis: </xsl:text> 
		<!-- wenn ein Ausfüllhinweise vorhanden ist, diesen ausgeben -->
		<xsl:choose>
			<xsl:when test="./Ausfuellhinweis/text()">
				<xsl:value-of select="./Ausfuellhinweis"/>
				<br/>
			</xsl:when>
			<xsl:otherwise>
				<xsl:text>Kein Hinweis vorhanden.</xsl:text>
				<br/>
			</xsl:otherwise>
		</xsl:choose>
		<xsl:text>Wertebereich/Beispiele: </xsl:text>
		<xsl:value-of select="./Wertebereich"/>
		<xsl:value-of select="./Beispiele"/>
		<br/>
	</xsl:template>


	<!-- ================================================================== -->
	<!-- Templateregel für das Element <match>                              -->
	<!-- ================================================================== -->	
	<xsl:template match="match">
	<!-- hier müsste eigentlich noch eine Abfrage hin, die ermittelt, wie viele Matchings es gibt -->
	<!-- damit man dann die Formulierung an die Anzahl anpassen könnte... -->
		<xsl:if test="./Schema/text()">
			<xsl:text>Dieses PAS-Element entspricht dem Element </xsl:text>
			<i><xsl:value-of select="./Element"/></i>
			<xsl:text> aus </xsl:text>
			<i><xsl:value-of select="./Schema"/></i>.
		</xsl:if>
	</xsl:template>

</xsl:stylesheet>

	
