1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/examples/Common/VerySimple/Resources/structure_multivalue_types.xsl Wed Jul 20 22:46:04 2005 +0000
1.3 @@ -0,0 +1,59 @@
1.4 +<?xml version="1.0" encoding="utf-8"?>
1.5 +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
1.6 + xmlns:template="http://www.boddie.org.uk/ns/xmltools/template"
1.7 + version="1.0">
1.8 +
1.9 + <xsl:param name="types"/>
1.10 +
1.11 + <!-- Add or process type elements inside item elements. -->
1.12 +
1.13 + <xsl:template match="item">
1.14 + <!-- Copy the element and its contents. -->
1.15 + <xsl:copy>
1.16 + <xsl:apply-templates select="@*"/>
1.17 + <!-- Look for a types element. -->
1.18 + <xsl:call-template name="types"/>
1.19 + <xsl:apply-templates select="*[local-name() != 'types']"/>
1.20 + </xsl:copy>
1.21 + </xsl:template>
1.22 +
1.23 + <!-- Investigate types elements. -->
1.24 +
1.25 + <xsl:template name="types">
1.26 + <!-- Make the elements. -->
1.27 + <types>
1.28 + <type>
1.29 + <!-- Look for type element values. -->
1.30 + <xsl:call-template name="type-enum">
1.31 + <!-- Supply the existing type values. -->
1.32 + <xsl:with-param name="values" select="types/type/@value"/>
1.33 + </xsl:call-template>
1.34 + </type>
1.35 + </types>
1.36 + </xsl:template>
1.37 +
1.38 + <!-- Add to type elements the range of acceptable values. -->
1.39 +
1.40 + <xsl:template name="type-enum">
1.41 + <xsl:param name="values"/>
1.42 + <!-- Find all values in the range and add them. -->
1.43 + <xsl:for-each select="$types/types/type-enum">
1.44 + <xsl:copy>
1.45 + <xsl:apply-templates select="@*"/>
1.46 + <!-- Mark those whose value are the same as that found on the element. -->
1.47 + <xsl:if test="$values[string() = current()/@value]">
1.48 + <xsl:attribute name="value-is-set">true</xsl:attribute>
1.49 + </xsl:if>
1.50 + </xsl:copy>
1.51 + </xsl:for-each>
1.52 + </xsl:template>
1.53 +
1.54 + <!-- Replicate unknown elements. -->
1.55 +
1.56 + <xsl:template match="@*|*|node()">
1.57 + <xsl:copy>
1.58 + <xsl:apply-templates select="@*|*|node()"/>
1.59 + </xsl:copy>
1.60 + </xsl:template>
1.61 +
1.62 +</xsl:stylesheet>