<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="recordx"> <xsl:variable name="colon"><xsl:text>:</xsl:text></xsl:variable> <xsl:element name="xsl:stylesheet"> <xsl:attribute name="xmlns{$colon}xsl"> <xsl:text>http://www.w3.org/1999/XSL/Transform</xsl:text> </xsl:attribute> <xsl:attribute name="version"> <xsl:text>1.0</xsl:text> </xsl:attribute> <xsl:element name="xsl:template"> <xsl:attribute name="match"> <xsl:value-of select="summary/project"/><xsl:text>page</xsl:text> </xsl:attribute> <xsl:copy-of select="menu/*"/> <xsl:copy-of select="articles/*"/> </xsl:element> <xsl:element name="xsl:template"> <xsl:attribute name="match"> <xsl:value-of select="summary/project"/><xsl:text>page/inputs</xsl:text> </xsl:attribute> <xsl:element name="div"> <xsl:element name="dl"> <xsl:for-each select="records/fields"> <xsl:if test="c='true'"> <xsl:element name="xsl:apply-templates"> <xsl:attribute name="select"><xsl:copy-of select="field"/></xsl:attribute> </xsl:element> </xsl:if> </xsl:for-each> </xsl:element> </xsl:element> </xsl:element> <xsl:call-template name="inputx" /> </xsl:element> </xsl:template> <xsl:template name="inputx"> <xsl:apply-templates select="records/fields"/> </xsl:template> <xsl:template match="records/fields"> <xsl:if test="c='true'"> <xsl:element name="xsl:template"> <xsl:attribute name="match"><xsl:value-of select="field"/></xsl:attribute> <dt> <xsl:element name="label"> <xsl:attribute name="for"><xsl:text>title</xsl:text></xsl:attribute> <xsl:element name="xsl:value-of"> <xsl:attribute name="select"><xsl:text>@title</xsl:text></xsl:attribute> </xsl:element> </xsl:element> </dt> <dd> <xsl:element name="input"> <xsl:attribute name="type"><xsl:text>text</xsl:text></xsl:attribute> <xsl:attribute name="id"><xsl:text>title</xsl:text></xsl:attribute> <xsl:attribute name="size"><xsl:text>{@size}</xsl:text></xsl:attribute> </xsl:element> </dd> </xsl:element> </xsl:if> </xsl:template> </xsl:stylesheet>
... and here's the XML which is used by the XSL above.
<recordx> <summary><project>books</project><parent_element>book_entry</parent_element></summary> <menu> <div id="gboxes"> <ul> <li><a href="/empsearch/devsearch.xml?id=all">home</a></li> <li><a href="/main/development_blog.xml">development</a></li> </ul> </div> </menu> <articles> <div id="articles"> <h1>www<xsl:value-of select="@title" /></h1> <div> <xsl:apply-templates select="inputs"></xsl:apply-templates> </div> <div> <xsl:apply-templates select="buttons"></xsl:apply-templates> </div> <span id="in1"></span> </div> </articles> <records> <fields id='17647'><field>author</field><c>true</c><r>true</r><u>true</u></fields> <fields id='17675'><field>subject</field><c>true</c><r>true</r><u>false</u></fields> <fields id='17699'><field>rating</field><c/><r/><u/></fields> <fields id='17700'><field>last_modified</field><c/><r/><u/></fields> </records> </recordx>