Česky
Kamil Dudka

Web components

File detail

Name:DownloadQmTemplateBuilder.xsl [Download]
Location: src > page
Size:1.5 KB
Last modification:2007-12-11 16:09

Source code

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output
             method="xml"
             version="1.0"
             encoding="utf-8"
             indent="yes"
             doctype-system="http://dudka.cz/dtd/QuickMenu.dtd"
             />
  <xsl:strip-space elements="*"/>
  <!--<xsl:preserve-space elements="pre"/>
-->
 
  <xsl:template match="/">
    <xsl:apply-templates mode="init"/>
  </xsl:template>
 
  <!-- match root element -->
  <xsl:template match="/page" mode="init">
    <QuickMenu>
      <xsl:comment>Generated by XSLT processor using QmTemplateBuiler.xsl template</xsl:comment>
      <xsl:apply-templates/>
    </QuickMenu>
  </xsl:template>
 
  <!-- parse subpage recursively -->
  <!-- TODO: avoid loops? -->
  <xsl:template match="subpage/text()">
    <xsl:for-each select="document(concat(self::text(),'.xml'))">
      <xsl:apply-templates/>
    </xsl:for-each>
  </xsl:template>
 
  <!-- Add item to menu -->
  <xsl:template match="page">
    <qmItem href="{@id}">
      <xsl:apply-templates/>
    </qmItem>
  </xsl:template>
 
  <!-- Add item text (and l10n texts) to menu -->
  <xsl:template match="name[child::text()]">
    <xsl:element name="qmText">
      <xsl:if test="@lang">
        <xsl:attribute name="lang">
          <xsl:value-of select="@lang"/>
        </xsl:attribute>
      </xsl:if>
      <xsl:value-of select="child::text()" />
    </xsl:element>
  </xsl:template>
 
  <!-- Do not copy page content -->
  <xsl:template match="MainPage" />
 
</xsl:stylesheet>