File:  [Repository] / kupu / make-jspx.xsl
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Thu Sep 15 13:06:00 2005 UTC (18 years, 9 months ago) by dwinter
Branches: first, MAIN
CVS tags: dwinter, HEAD
modifizierter kupu fuer webpages des instituts

    1: <?xml version="1.0" encoding="utf-8"?>
    2: <!--
    3: ##############################################################################
    4: #
    5: # Copyright (c) 2003-2005 Kupu Contributors. All rights reserved.
    6: #
    7: # This software is distributed under the terms of the Kupu
    8: # License. See LICENSE.txt for license text. For a list of Kupu
    9: # Contributors see CREDITS.txt.
   10: #
   11: ##############################################################################
   12: 
   13: Generate an JSPX template from Kupu distribution files
   14: 
   15: The main difference from make.xsl itself, is that this creates fmt:message tags for the i18n part.
   16: 
   17: This means that also the fmt-tags must be available, so your html.kupu must specificy something like:
   18:   <kupu:part name="html">
   19:     <html xmlns="http://www.w3.org/1999/xhtml"
   20:           xmlns:jsp="http://java.sun.com/JSP/Page" 
   21:           xmlns:fmt="http://java.sun.com/jsp/jstl/fmt">
   22:       <jsp:output doctype-root-element="html"
   23:                   doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
   24:                   doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
   25:       <fmt:bundle basename="org.oscom.kupu.Messages">
   26:          <kupu:define-slot name="html" />
   27:       </fmt:bundle>
   28:     </html>
   29:   </kupu:part>
   30: 
   31: See also: common/kupu.pox.jspx (which can be used by i18n.js)
   32: -->
   33: <xsl:stylesheet
   34:    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   35:    xmlns:kupu="http://kupu.oscom.org/namespaces/dist"
   36:    xmlns:i18n="http://xml.zope.org/namespaces/i18n" 
   37:    xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
   38:    xmlns:html="http://www.w3.org/1999/xhtml"
   39:    xmlns:jsp="http://java.sun.com/JSP/Page"
   40:    exclude-result-prefixes="kupu"
   41:    version="1.0"
   42:    >
   43:   <xsl:import href="make.xsl" />  
   44: 
   45: 
   46:   <xsl:template match="html:*" mode="expand">
   47:     <xsl:choose>
   48:       <xsl:when test="@i18n:translate">
   49:         <xsl:element name="{name()}">
   50:           <xsl:copy-of select="@html:*" />
   51:           <fmt:message>
   52:             <xsl:attribute name="key">
   53:               <xsl:choose>
   54:                 <xsl:when test="@i18n:translate = ''">
   55:                   <xsl:apply-templates select="text()" mode="expand-i18n" />
   56:                 </xsl:when>
   57:                 <xsl:otherwise>
   58:                   <xsl:value-of select="@i18n:translate" />
   59:                 </xsl:otherwise>
   60:               </xsl:choose>
   61:             </xsl:attribute>
   62:           </fmt:message>
   63:         </xsl:element>
   64:       </xsl:when>
   65:       <xsl:when test="@i18n:attributes">
   66:         <xsl:variable name="attributes"><xsl:value-of select="@i18n:attributes" /></xsl:variable>
   67:         <fmt:message var="_">
   68:           <xsl:attribute name="key">
   69:             <xsl:value-of select="@title" /><!-- should be @$attributes, but that doesn't work -->
   70:           </xsl:attribute>
   71:         </fmt:message>
   72:         <xsl:element name="{name()}">
   73:           <xsl:copy-of select="@html:*" />
   74:           <xsl:attribute name="{$attributes}">${_}</xsl:attribute>
   75:           <xsl:apply-templates  mode="expand" />
   76:         </xsl:element>
   77:       </xsl:when>
   78:       <xsl:otherwise>
   79:         <xsl:element name="{name()}">
   80:           <xsl:copy-of select="@html:*" />
   81:           <xsl:apply-templates  mode="expand" />
   82:         </xsl:element>
   83:       </xsl:otherwise>
   84:     </xsl:choose>
   85:   </xsl:template>
   86: 
   87:   <xsl:template match="html:html" mode="expand"> <!-- to preserve the namespaces-->
   88:     <xsl:copy>
   89:       <xsl:copy-of select="@*" />
   90:       <xsl:apply-templates mode="expand" />
   91:     </xsl:copy>
   92:   </xsl:template>
   93: 
   94:   <xsl:template match="html:select" mode="expand">
   95:     <!-- in some toolboxes an empty select appears, add jsp:text to avoid that it collapses away, which browsers cannot handle -->
   96:     <xsl:copy>
   97:       <xsl:copy-of select="@*" />
   98:       <jsp:text> </jsp:text>
   99:       <xsl:apply-templates mode="expand" />
  100:     </xsl:copy>
  101:   </xsl:template>
  102:   
  103:   <xsl:template match="text()" mode="expand-i18n">
  104:     <!-- this should probably be trim() rather then normalize-space (but that functions does not natively exist) -->
  105:     <xsl:value-of select="normalize-space(.)" />
  106:   </xsl:template>
  107: 
  108: </xsl:stylesheet>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>