1 <?xml version="1.0" encoding="UTF-8"?> 2 <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 3 xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="fn xs"> 4 5 <!-- XSL-Transformation zur Ausgabe der LAPIS-Planungsdatei im DOS-ASCII-Format by T. Meinike 06/11 … 12/11 --> 6 7 <!-- Ausgabe-Kodierung "IBM437" entspricht dem LAPIS-ASCII-Format --> 8 <xsl:output method="text" encoding="IBM437" media-type="text/plain"/> 9 10 <!-- DOS/Windows-Zeilenumbruch \r\n --> 11 <xsl:variable name="crlf" select="'
'"/> 12 <!-- Matrikel-Trennzeile: true() | false() --> 13 <xsl:variable name="ma_trenner" select="false()"/> 14 15 <xsl:template match="stundenplanung"> 16 <!-- Kopfzeilen --> 17 <xsl:value-of select="fn:concat('L.A.P.I.S 2.5e', $crlf)"/> 18 <xsl:value-of select="fn:concat('DATEN', $crlf)"/> 19 <xsl:variable name="datum" select="fn:format-date(fn:current-date(), '[D01].[M01].[Y0001]')"/> 20 <xsl:variable name="lz" select="fn:string-join((for $i in 1 to 46 - fn:string-length(@info) return ' '), '')"/> 21 <xsl:value-of select="fn:concat(@info, $lz, $datum, $crlf)"/> 22 <!-- matrikel-Verarbeitung --> 23 <xsl:apply-templates select="matrikel"/> 24 </xsl:template> 25 26 <xsl:template match="matrikel"> 27 <!-- planung-Verarbeitung --> 28 <xsl:apply-templates select="planung"/> 29 <!-- Zeilenumbruch am Matrikel-Ende --> 30 <xsl:if test="fn:position() != fn:last() and $ma_trenner"> 31 <xsl:value-of select="$crlf"/> 32 </xsl:if> 33 </xsl:template> 34 35 <xsl:template match="planung"> 36 <!-- nur angebotene Fächer ausgeben --> 37 <xsl:apply-templates select="fach[@ang = 'j']"/> 38 </xsl:template> 39 40 <xsl:template match="fach"> 41 <!-- LV-Nummer --> 42 <xsl:value-of select="fn:concat(ancestor::matrikel/@fb, ancestor::matrikel/@stgnr, ancestor::matrikel/@semester, @plannr)"/> 43 <xsl:text>|</xsl:text> 44 45 <!-- LV-Name --> 46 <xsl:value-of select="fn:concat(art, ' ', planname)"/> 47 <xsl:text>|</xsl:text> 48 49 <!-- Matrikel --> 50 <xsl:value-of select="fn:concat(ancestor::matrikel/@mname, ancestor::matrikel/@semester)"/> 51 <xsl:text>|</xsl:text> 52 53 <!-- Stunden --> 54 <xsl:value-of select="art/@plansws"/> 55 <xsl:text>|</xsl:text> 56 57 <!-- Kopplung --> 58 <xsl:choose> 59 <xsl:when test="kopplung/@mit"><xsl:value-of select="kopplung/@mit"/></xsl:when> 60 <xsl:when test="kopplung/@von"><xsl:text>!!!!!</xsl:text></xsl:when> 61 </xsl:choose> 62 <xsl:text>|</xsl:text> 63 64 <!-- Dozent --> 65 <xsl:value-of select="fn:concat('F', dozent/@fb, ' ', dozent)"/> 66 <xsl:text>|</xsl:text> 67 68 <!-- Tag+Block|Raum --> 69 <xsl:for-each select="termin[@raum != '???/?/???' and @zeit != '??-??' and @tag != '???????']"> 70 <xsl:choose> 71 <xsl:when test="@tag = 'Montag'"><xsl:text>Mo</xsl:text></xsl:when> 72 <xsl:when test="@tag = 'Dienstag'"><xsl:text>Di</xsl:text></xsl:when> 73 <xsl:when test="@tag = 'Mittwoch'"><xsl:text>Mi</xsl:text></xsl:when> 74 <xsl:when test="@tag = 'Donnerstag'"><xsl:text>Do</xsl:text></xsl:when> 75 <xsl:when test="@tag = 'Freitag'"><xsl:text>Fr</xsl:text></xsl:when> 76 <xsl:when test="@tag = 'Samstag'"><xsl:text>Sa</xsl:text></xsl:when> 77 </xsl:choose> 78 <xsl:choose> 79 <xsl:when test="@zeit = '07-09'"><xsl:text>1</xsl:text></xsl:when> 80 <xsl:when test="@zeit = '09-11'"><xsl:text>2</xsl:text></xsl:when> 81 <xsl:when test="@zeit = '11-13'"><xsl:text>3</xsl:text></xsl:when> 82 <xsl:when test="@zeit = '13-15'"><xsl:text>4</xsl:text></xsl:when> 83 <xsl:when test="@zeit = '15-17'"><xsl:text>5</xsl:text></xsl:when> 84 <xsl:when test="@zeit = '17-19'"><xsl:text>6</xsl:text></xsl:when> 85 <xsl:when test="@zeit = '19-21'"><xsl:text>7</xsl:text></xsl:when> 86 </xsl:choose> 87 <xsl:text>|</xsl:text> 88 <!-- <xsl:value-of select="@raum"/> --> 89 <xsl:value-of select="fn:concat(@raum, fn:string-join((for $i in 1 to 9 - fn:string-length(@raum) return ' '), ''))"/> 90 <xsl:text>|</xsl:text> 91 </xsl:for-each> 92 93 <!-- Kommentar --> 94 <xsl:choose> 95 <xsl:when test="fn:string-length(kommentar) gt 0"><xsl:value-of select="fn:concat('\', kommentar)"/></xsl:when> 96 <xsl:otherwise><xsl:text>\</xsl:text></xsl:otherwise> 97 </xsl:choose> 98 <xsl:text>|</xsl:text> 99 100 <!-- Teilnehmerzahl --> 101 <xsl:value-of select="@stud"/> 102 <xsl:text>|</xsl:text> 103 104 <!-- LV-Art --> 105 <xsl:value-of select="art"/> 106 <xsl:text>|</xsl:text> 107 108 <!-- Raumausstattung, praktisch immer leer, @ra ist optional --> 109 <xsl:if test="@ra"> 110 <xsl:value-of select="@ra"/> 111 </xsl:if> 112 <xsl:text>|</xsl:text> 113 114 <!-- Woche: wöchentlich / gerade / ungerade --> 115 <xsl:choose> 116 <xsl:when test="termin[1]/@woche = 'w' or termin[1]/@woche = '?'"><xsl:text>1|1|0|A|65</xsl:text></xsl:when> 117 <xsl:when test="termin[1]/@woche = 'g'"><xsl:text>1|1|2|E|69</xsl:text></xsl:when> 118 <xsl:when test="termin[1]/@woche = 'u'"><xsl:text>1|1|1|I|73</xsl:text></xsl:when> 119 </xsl:choose> 120 121 <!-- Zeilenumbruch am jeweiligen Datensatz-Ende --> 122 <xsl:value-of select="$crlf"/> 123 124 <!-- 125 Beispiel-Ergebniszeile: 126 2250110|VÜ AZ-Spr. I (HTML)|MTRWK1|4|1234567|F2 Meinike|Mo2|124/1/020|Mo3|124/1/020|\Test|25|VÜ||1|1|1|H|73 127 --> 128 129 </xsl:template> 130 131 </xsl:stylesheet>
Code formatiert mit »Highlight 3.5«