Markus studiert!
Relationemodelle mit XSL erzeugen
Für unser Datenbank-Projekt habe ich ein XML-Stylesheet geschrieben, dass aus einer einfachen XML-Datei ein schönes Relationenmodell erzeugt.
XML
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="relationenmodell.xsl"?>
<relationmodel>
<relation>
<name>Relation</name></p>
<property primary="true">Primärschlüssel</property>
<property foreign="true">Fremdschlüssel</property>
<property>Datenfeld</property>
</relation>
</relationmodel>
XSL
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" />
<xsl:template match="/relationmodel">
<html>
<head>
<title>Relationenmodell Auktionsdatenbank 2010db02</title>
<link rel="stylesheet" type="text/css"
href="http://yui.yahooapis.com/3.2.0/build/cssreset/reset-min.css" />
<link rel="stylesheet" type="text/css"
href="http://yui.yahooapis.com/3.2.0/build/cssbase/base-min.css" />
<link rel="stylesheet" type="text/css"
href="http://yui.yahooapis.com/3.2.0/build/cssfonts/fonts-min.css" />
<link rel="stylesheet" type="text/css" href="relationenmodell.css" />
</head>
<body>
<h1>Relationenmodell Auktionsdatenbank 2010db02</h1>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="relation">
<table>
<tbody>
<tr>
<th>
<xsl:value-of select="name"></xsl:value-of>
</th>
<xsl:for-each select="property">
<xsl:element name="td">
<xsl:attribute name="class">
<xsl:if test="@primary">primary</xsl:if>
<xsl:if test="@foreign">foreign</xsl:if>
</xsl:attribute>
<xsl:value-of select="."></xsl:value-of>
</xsl:element>
</xsl:for-each>
</tr>
</tbody>
</table>
</xsl:template>
</xsl:stylesheet>
Und damit es hübsch aussieht, dazu noch ein CSS-File:
body { margin: 1em 2em; }
th { background-color: #ccc; font-weight: bold; min-width: 15em; }
td { min-width: 8em; }
.primary { text-decoration: underline; }
.foreign { font-style: italic; }
< 31. December 2010, 14:40 Uhr
Tags: #XML #Datenbanksysteme