Skip to content

Instantly share code, notes, and snippets.

@greystate
Created April 15, 2011 23:09
Show Gist options
  • Select an option

  • Save greystate/922629 to your computer and use it in GitHub Desktop.

Select an option

Save greystate/922629 to your computer and use it in GitHub Desktop.
Code listings (new XML Schema) for "An intro to using match templates in Umbraco" (Pimp My XSLT article)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxml="urn:schemas-microsoft-com:xslt"
xmlns:umbraco.library="urn:umbraco.library"
exclude-result-prefixes="msxml umbraco.library">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<xsl:param name="currentPage"/>
<xsl:template match="/">
<!-- The fun starts here -->
<ul>
<xsl:for-each select="$currentPage/* [@isDoc and string(umbracoNaviHide) != '1']">
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
</li>
</xsl:for-each>
</ul>
</xsl:template>
</xsl:stylesheet>
<xsl:template match="/">
<ul>
<xsl:apply-templates select="$currentPage/*[@isDoc and string(umbracoNaviHide) != '1']" />
</ul>
</xsl:template>
<xsl:template match="*[@isDoc]">
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName" />
</a>
</li>
</xsl:template>
<xsl:template match="/">
<ul>
<xsl:apply-templates select="$currentPage/*[@isDoc]" />
</ul>
</xsl:template>
<xsl:template match="*[@isDoc]">
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName" />
</a>
</li>
</xsl:template>
<xsl:template match="*[umbracoNaviHide = 1]" />
<xsl:template match="/">
<xsl:apply-templates select="$currentPage" />
</xsl:template>
<xsl:template match="News | Events">
<h2>
<xsl:value-of select="name()" />
</h2>
<ul>
<xsl:apply-templates select="NewsItem | Event" />
</ul>
</xsl:template>
<xsl:template match="NewsItem | Event">
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName" />
</a>
</li>
</xsl:template>
<xsl:template match="*[umbracoNaviHide = 1]" />
<xsl:template match="/">
<xsl:apply-templates select="$currentPage/ancestor-or-self::*[self::News | self::Events]" />
</xsl:template>
<xsl:template match="News | Events">
<h2>
<xsl:value-of select="name()" />
</h2>
<ul id="{translate(name(), 'NE', 'ne')}">
<xsl:apply-templates select="NewsItem | Event" />
</ul>
</xsl:template>
<xsl:template match="NewsItem | Event">
<li>
<xsl:if test="@id = $currentPage/@id"><xsl:attribute name="class">selected</xsl:attribute></xsl:if>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName" />
</a>
</li>
</xsl:template>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:umbraco.library="urn:umbraco.library"
exclude-result-prefixes="umbraco.library">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes" />
<xsl:param name="currentPage" />
<xsl:template match="/">
<xsl:apply-templates select="$currentPage/ancestor-or-self::*[self::News | self::Events]" />
</xsl:template>
<xsl:template match="News | Events">
<h2>
<xsl:value-of select="name()" />
</h2>
<ul id="{translate(name(), 'NE', 'ne')}">
<xsl:apply-templates select="NewsItem | Event" />
</ul>
</xsl:template>
<xsl:template match="NewsItem | Event">
<li>
<xsl:if test="@id = $currentPage/@id"><xsl:attribute name="class">selected</xsl:attribute></xsl:if>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName" />
</a>
</li>
</xsl:template>
<xsl:template match="*[umbracoNaviHide = 1]" />
</xsl:stylesheet>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment