diff --git a/en/gallery/gallery-entry.xsl b/en/gallery/gallery-entry.xsl
new file mode 100644
index 0000000000..4d4d36331b
--- /dev/null
+++ b/en/gallery/gallery-entry.xsl
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+  <xsl:import href="../includes.xsl"/>
+
+  <!-- Should be set on the command line, specifies the type of entries to
+       include in the output.  One of "commercial", "nonprofit", or 
+       "personal" -->
+  <xsl:param name="type"/>
+
+  <xsl:variable name="base" select="'..'"/>
+  
+  <xsl:variable name="date" select="'$FreeBSD$'"/>
+
+  <xsl:output type="html" encoding="iso-8859-1"/>
+
+  <xsl:variable name="title">
+    <xsl:choose>
+      <xsl:when test="$type = 'commercial'">Gallery - Commercial</xsl:when>
+      <xsl:when test="$type = 'nonprofit'">Gallery - Non-profit</xsl:when>
+      <xsl:when test="$type = 'personal'">Gallery - Personal pages</xsl:when>
+      <xsl:otherwise>
+	Unknown value for $type: <xsl:value-of select="$type"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <xsl:variable name="commercial-intro">
+    <p>FreeBSD is powering innovative Internet applications and services all
+      over the world.  This gallery is a showcase of commercial organisations
+      who have put FreeBSD to work for them.  Browse and find out more about
+      what FreeBSD can do for <b>you</b>.</p>
+  </xsl:variable>
+
+  <xsl:variable name="nonprofit-intro">
+    <p>FreeBSD is powering innovative Internet applications and services all
+      over the world.  This gallery is a showcase of non-profit organisations
+      who have put FreeBSD to work for them.  Browse and find out more about
+      what FreeBSD can do for <b>you</b>.</p>
+  </xsl:variable>
+
+  <xsl:variable name="personal-intro">
+    <p>FreeBSD is powering innovative Internet applications and services all
+      over the world.  This gallery is a showcase of sites from users who have
+      put FreeBSD to work for them.  Browse and find out more about what 
+      FreeBSD can do for <b>you</b>.</p>
+  </xsl:variable>
+
+  <xsl:template match="gallery">
+    <html>
+      <xsl:copy-of select="$header1"/>
+      <body xsl:use-attribute-sets="att.body">
+	<xsl:copy-of select="$header2"/>
+
+	<xsl:choose>
+	  <xsl:when test="$type = 'commercial'">
+	    <xsl:copy-of select="$commercial-intro"/>
+	  </xsl:when>
+	  <xsl:when test="$type = 'nonprofit'">
+	    <xsl:copy-of select="$nonprofit-intro"/>
+	  </xsl:when>
+	  <xsl:when test="$type = 'personal'">
+	    <xsl:copy-of select="personal-intro"/>
+	  </xsl:when>
+	  <xsl:otherwise>
+	    <p>No clue what to put here for $type = 
+	      <xsl:value-of select="$type">.</xsl:value-of></p>
+	  </xsl:otherwise>
+	</xsl:choose>
+
+	<ul>
+	  <!-- Select all entries of the correct type, doing a case
+               insensitive sort -->
+	  <xsl:apply-templates select="entry[@type = $type]">
+	    <xsl:sort select="translate(string(./name),
+		      'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
+		      'abcdefghijklmnopqrstuvwxyz')"/>
+	  </xsl:apply-templates>
+	</ul>
+
+	<xsl:copy-of select="$footer"/>
+      </body>
+    </html>
+  </xsl:template>
+
+  <xsl:template match="entry">
+    <xsl:variable name="url"><xsl:value-of select="url"/></xsl:variable>
+    <li><a href="{$url}"><b><xsl:value-of select="name"/></b></a> --
+      <xsl:value-of select="descr"/></li>
+  </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file