132 lines
4.3 KiB
HTML
Executable file
132 lines
4.3 KiB
HTML
Executable file
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<xsl:stylesheet version="1.0"
|
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
xmlns="http://cygnets.co.uk/schemas/adl-1.2"
|
|
xmlns:a="http://cygnets.co.uk/schemas/adl-1.2"
|
|
exclude-result-prefixes="a">
|
|
<!--
|
|
Application Description Framework
|
|
adl2adl.xsl
|
|
|
|
(c) 2008 Cygnet Solutions Ltd
|
|
|
|
Transform ADL to Verbose (or canonical) ADL
|
|
Most defaults are replaced with their actual values.
|
|
|
|
$Author: af $
|
|
$Revision: 1.1 $
|
|
-->
|
|
<xsl:import href="types.xslt"/>
|
|
|
|
<xsl:output indent="yes" method="xml" encoding="utf-8"/>
|
|
|
|
<xsl:template match="a:application">
|
|
<xsl:copy>
|
|
<xsl:apply-templates select="@*" />
|
|
<xsl:comment>
|
|
***************************************************************************
|
|
*
|
|
* ©2007 Cygnet Solutions Ltd
|
|
*
|
|
* THIS FILE IS AUTOMATICALLY GENERATED AND SHOULD NOT
|
|
* BE MANUALLY EDITED.
|
|
*
|
|
* Generated using adl2adl.xsl revision <xsl:value-of select="substring('$Revision: 1.1 $', 12)"/>
|
|
*
|
|
***************************************************************************
|
|
</xsl:comment>
|
|
<xsl:apply-templates select="a:type | a:typedef | a:entity | comment()"/>
|
|
</xsl:copy>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="a:entity">
|
|
<xsl:copy>
|
|
<xsl:apply-templates select="@*"/>
|
|
<xsl:if test="not(a:key)">
|
|
<xsl:if test=".//a:property[@name='Id']">
|
|
<xsl:message terminate="yes">Class "<xsl:value-of select="@name"/>" has an 'Id' field, but no key. This is not allowed.</xsl:message>
|
|
</xsl:if>
|
|
<key>
|
|
<property name="Id" type="Integer-32" access="field.pascalcase-underscore">
|
|
<generator class="identity"/>
|
|
</property>
|
|
</key>
|
|
</xsl:if>
|
|
<xsl:apply-templates select="*"/>
|
|
</xsl:copy>
|
|
</xsl:template>
|
|
|
|
<!-- Expand any 'default' forms -->
|
|
<xsl:template match="a:form[not(@properties)]">
|
|
<form properties="listed">
|
|
<xsl:apply-templates select="@*" />
|
|
<xsl:for-each select="../a:key/a:property|../a:property">
|
|
<field>
|
|
<xsl:attribute name="property">
|
|
<xsl:value-of select="@name"/>
|
|
</xsl:attribute>
|
|
</field>
|
|
</xsl:for-each>
|
|
</form>
|
|
</xsl:template>
|
|
|
|
<!-- Expand any 'default' lists -->
|
|
<xsl:template match="a:list[not(@properties)]">
|
|
<list properties="listed">
|
|
<xsl:apply-templates select="@*" />
|
|
<pragma name="with-pagination-control" value="true"/>
|
|
<pragma name="with-can-add" value="true"/>
|
|
<xsl:for-each select="../a:key/a:property|../a:property">
|
|
<field>
|
|
<xsl:attribute name="property">
|
|
<xsl:value-of select="@name"/>
|
|
</xsl:attribute>
|
|
</field>
|
|
</xsl:for-each>
|
|
</list>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="a:property">
|
|
<property>
|
|
<xsl:choose>
|
|
<xsl:when test="@type='entity' or @type='list' or @type='link'">
|
|
<xsl:attribute name="type"><xsl:value-of select="@type" /></xsl:attribute>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:variable name="typename">
|
|
<xsl:call-template name="type-name" />
|
|
</xsl:variable>
|
|
<xsl:if test="$typename">
|
|
<xsl:attribute name="type">
|
|
<xsl:value-of select="$typename"/>
|
|
</xsl:attribute>
|
|
</xsl:if>
|
|
<!--xsl:call-template name="add-type-attr-if-avail">
|
|
<xsl:with-param name="attr" select="'name'" />
|
|
</xsl:call-template-->
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<xsl:apply-templates select="@*[name()!='type']|*" />
|
|
</property>
|
|
</xsl:template>
|
|
|
|
<xsl:template name="add-type-attr-if-avail">
|
|
<xsl:param name="attr"/>
|
|
<xsl:variable name="val">
|
|
<xsl:call-template name="type-attr">
|
|
<xsl:with-param name="attr" select="$attr" />
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
<xsl:if test="$val">
|
|
<xsl:attribute name="{$attr}">
|
|
<xsl:value-of select="$val"/>
|
|
</xsl:attribute>
|
|
</xsl:if>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="@*|node()">
|
|
<xsl:copy>
|
|
<xsl:apply-templates select="@*|node()"/>
|
|
</xsl:copy>
|
|
</xsl:template>
|
|
</xsl:stylesheet> |