paul@681 | 1 | <?xml version="1.0" encoding="utf-8"?> |
paul@681 | 2 | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
paul@681 | 3 | version="1.0"> |
paul@681 | 4 | |
paul@681 | 5 | <!-- Restructure questions. --> |
paul@681 | 6 | |
paul@681 | 7 | <xsl:template match="question"> |
paul@681 | 8 | <xsl:copy> |
paul@681 | 9 | <xsl:if test="@selected"> |
paul@681 | 10 | <xsl:element name="response"> |
paul@681 | 11 | <xsl:apply-templates select="@selected"/> |
paul@681 | 12 | <xsl:for-each select="choice[position() = number(current()/@selected)]"> |
paul@681 | 13 | <xsl:if test="not(response-type/@value = 'choice')"> |
paul@681 | 14 | <xsl:apply-templates select="@response-text"/> |
paul@681 | 15 | </xsl:if> |
paul@681 | 16 | </xsl:for-each> |
paul@681 | 17 | </xsl:element> |
paul@681 | 18 | </xsl:if> |
paul@681 | 19 | <xsl:apply-templates select="choice"/> |
paul@681 | 20 | </xsl:copy> |
paul@681 | 21 | </xsl:template> |
paul@681 | 22 | |
paul@681 | 23 | <xsl:template match="choice"> |
paul@681 | 24 | <xsl:if test="@selected = 'true' or response-type/@value='text'"> |
paul@681 | 25 | <xsl:element name="response"> |
paul@681 | 26 | <xsl:attribute name="selected"><xsl:value-of select="position()"/></xsl:attribute> |
paul@681 | 27 | <xsl:if test="not(response-type/@value = 'choice')"> |
paul@681 | 28 | <xsl:apply-templates select="@response-text"/> |
paul@681 | 29 | </xsl:if> |
paul@681 | 30 | </xsl:element> |
paul@681 | 31 | </xsl:if> |
paul@681 | 32 | </xsl:template> |
paul@681 | 33 | |
paul@681 | 34 | |
paul@681 | 35 | |
paul@681 | 36 | <!-- Replicate unknown elements. --> |
paul@681 | 37 | |
paul@681 | 38 | <xsl:template match="@*|node()"> |
paul@681 | 39 | <xsl:copy> |
paul@681 | 40 | <xsl:apply-templates select="@*|node()"/> |
paul@681 | 41 | </xsl:copy> |
paul@681 | 42 | </xsl:template> |
paul@681 | 43 | |
paul@681 | 44 | </xsl:stylesheet> |