changeset 3262:e01f74c3ec1e

Themes: Added XSL transformation to generate a better overview of the themes. flys-artifacts/trunk@4901 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sun, 08 Jul 2012 14:55:03 +0000
parents 8f9d49467c85
children 68320805566a
files flys-artifacts/ChangeLog flys-artifacts/contrib/themes2html.xsl
diffstat 2 files changed, 160 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/flys-artifacts/ChangeLog	Sun Jul 08 10:04:35 2012 +0000
+++ b/flys-artifacts/ChangeLog	Sun Jul 08 14:55:03 2012 +0000
@@ -1,3 +1,15 @@
+2012-07-08	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
+
+	* contrib/themes2html.xsl: New. Transformation to get a better
+	  overview of themes.xml. Usage:
+
+	  $ xsltproc --path doc/conf    \
+	        contrib/themes2html.xsl \
+	        doc/conf/themes.xml     \
+	        > themes.xhtml
+
+	  Use browser to view the resulting file.
+
 2012-07-08	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
 
 	* doc/conf/second-themes.xml: Name the second themegroup 'second'
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-artifacts/contrib/themes2html.xsl	Sun Jul 08 14:55:03 2012 +0000
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet
+  version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:output method="xml" encoding="UTF-8"
+    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+    doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"/>
+
+
+  <xsl:template match="/themes/themegroup" mode="header">
+    <li><a href="#tg-{@name}"><xsl:value-of select="@name"/></a> (<xsl:value-of select="count(theme)"/> themes)</li>
+  </xsl:template>
+
+  <xsl:template match="field" mode="theme-inherits">
+    <tr>
+        <td><i><xsl:value-of select="@name"/></i> (<a
+            href="#theme-{../../../@name}-{../../@name}"><xsl:value-of select="../../@name"/></a>)</td>
+        <td><xsl:value-of select="@display"/></td>
+        <td><xsl:value-of select="@type"/></td>
+        <td><xsl:value-of select="@default"/></td>
+        <td><xsl:value-of select="@hints"/></td>
+    </tr>
+  </xsl:template>
+
+  <xsl:template match="field" mode="theme-fields">
+    <tr>
+        <td><xsl:value-of select="@name"/></td>
+        <td><xsl:value-of select="@display"/></td>
+        <td><xsl:value-of select="@type"/></td>
+        <td><xsl:value-of select="@default"/></td>
+        <td><xsl:value-of select="@hints"/></td>
+    </tr>
+  </xsl:template>
+
+  <xsl:template match="inherit" mode="theme-inherits">
+    <xsl:variable name="target" select="@from"/>
+    <xsl:apply-templates
+        select="../../../theme[@name = $target]/inherits/inherit | /themes/themegroup/theme[@type='virtual' and @name=$target]/inherits/inherit"
+        mode="theme-inherits"/>
+    <xsl:apply-templates
+        select="../../../theme[@name = $target]/fields/field | /themes/themegroup/theme[@type='virtual' and @name=$target]/fields/field"
+        mode="theme-inherits"/>
+  </xsl:template>
+
+  <xsl:template match="theme" mode="theme-groups">
+    <div>
+        <h4>[<a href="#theme-groups">Groups</a>] [<a href="#tg-{../@name}"><xsl:value-of select="../@name"/></a>] <a 
+            name="theme-{../@name}-{@name}">Theme '<xsl:value-of select="@name"/>'<xsl:if
+          test="@type = 'virtual'"> (virtual)</xsl:if></a></h4>
+      <table border="1" cellspacing="0" width="80%" summary="Definition of theme {@name}">
+        <tr>
+          <th>Name</th>
+          <th>Display</th>
+          <th>Type</th>
+          <th>Default</th>
+          <th>Hints</th>
+        </tr>
+        <xsl:apply-templates mode="theme-inherits" select="inherits/inherit"/>
+        <xsl:apply-templates mode="theme-fields" select="fields/field"/>
+      </table>
+    </div>
+    <hr/>
+  </xsl:template>
+
+  <xsl:template match="theme" mode="theme-list">
+    <li><a href="#theme-{../@name}-{@name}"><xsl:value-of select="@name"/></a></li>
+  </xsl:template>
+
+  <xsl:template match="/themes/themegroup" mode="theme-groups">
+    <div>
+        <h2><a name="tg-{@name}">Theme group '<xsl:value-of select="@name"/>'</a></h2>
+        <div>
+          <h3>Theme List</h3>
+          <ul>
+            <xsl:apply-templates mode="theme-list" select="theme"/>
+          </ul>
+        </div>
+        <div>
+          <h3>Theme Definitions</h3>
+          <xsl:apply-templates mode="theme-groups" select="theme"/>
+        </div>
+    </div>
+  </xsl:template>
+
+  <xsl:template match="mapping" mode="mappings">
+    <xsl:variable name="target" select="@to"/>
+    <tr>
+      <td><xsl:value-of select="@from"/></td>
+      <td><a 
+        href="#theme-{/themes/themegroup/theme[@name = $target][1]/../@name}-{$target}"
+      ><xsl:value-of select="@to"/></a></td>
+      <td><xsl:if test="@pattern"><pre><xsl:value-of select="@pattern"/></pre></xsl:if></td>
+      <td><xsl:if test="@masterAttr"><pre><xsl:value-of select="@masterAttr"/></pre></xsl:if></td>
+    </tr>
+  </xsl:template>
+
+  <xsl:template match="mappings" mode="mappings">
+    <div>
+      <h3><a name="mappings">Mappings</a></h3>
+      <table width="80%" border="1" cellspacing="0" summary="Mappings from facets to themes">
+      <tr>
+        <th>From</th>
+        <th>To</th>
+        <th>Pattern</th>
+        <th>Condition</th>
+      </tr>
+      <xsl:apply-templates select="mapping" mode="mappings"/>
+      </table>
+    </div>
+  </xsl:template>
+
+  <xsl:template match="/">
+    <html>
+    <head>
+        <title>FLYS3 - Themes</title>
+    </head>
+    <body>
+        <h1>FLYS3 - Themes</h1>
+        <div>
+        <h2><a name="theme-groups">Theme groups</a> (<xsl:value-of select="count(/themes/themegroup)"/> groups)</h2>
+        <ul>
+          <xsl:apply-templates mode="header" select="/themes/themegroup[@name != 'virtual']"/>
+          <xsl:apply-templates mode="header" select="/themes/themegroup[@name = 'virtual']"/>
+        </ul>
+        </div>
+        <div>
+          <h2><a href="#mappings">Mappings</a> (<xsl:value-of select="count(/themes/mappings/mapping)"/> mappings)</h2>
+        </div>
+        <hr/>
+        <div>
+          <xsl:apply-templates mode="theme-groups" select="/themes/themegroup[@name != 'virtual']"/>
+          <xsl:apply-templates mode="theme-groups" select="/themes/themegroup[@name = 'virtual']"/>
+        </div>
+        <xsl:apply-templates mode="mappings" select="/themes/mappings"/>
+    </body>
+    </html>
+  </xsl:template>
+
+  <xsl:template match="text()"/>
+  <xsl:template match="text()" mode="header"/>
+  <xsl:template match="text()" mode="theme-groups"/>
+  <xsl:template match="text()" mode="theme-list"/>
+  <xsl:template match="text()" mode="theme-fields"/>
+  <xsl:template match="text()" mode="theme-inherits"/>
+  <xsl:template match="text()" mode="mappings"/>
+
+</xsl:stylesheet>

http://dive4elements.wald.intevation.org