Annotation of kupuMPIWG/make-jspx.xsl, revision 1.1
1.1 ! dwinter 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>