You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2007/08/23 17:05:38 UTC

svn commit: r569033 - in /incubator/uima/uimaj/trunk/uimaj-eclipse-update-site: .project build.xml features/ index.html plugins/ site.xml web/ web/site.css web/site.xsl

Author: schor
Date: Thu Aug 23 08:05:37 2007
New Revision: 569033

URL: http://svn.apache.org/viewvc?rev=569033&view=rev
Log:
[UIMA-74] initial import

Added:
    incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/.project
    incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/build.xml
    incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/features/
    incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/index.html
    incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/plugins/
    incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/site.xml
    incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/web/
    incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/web/site.css
    incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/web/site.xsl

Added: incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/.project
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/.project?rev=569033&view=auto
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/.project (added)
+++ incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/.project Thu Aug 23 08:05:37 2007
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>uimaj-eclipse-update-site</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.UpdateSiteBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.UpdateSiteNature</nature>
+	</natures>
+</projectDescription>

Added: incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/build.xml
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/build.xml?rev=569033&view=auto
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/build.xml (added)
+++ incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/build.xml Thu Aug 23 08:05:37 2007
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.    
+-->
+
+<!-- set the basedir value to point to the top level of the project -->
+
+<project name="build update site" default="all" basedir=".">
+  
+  <target name="all" depends="init, build-runtime, build-tools"/>
+	
+  <target name="init">
+  	<!-- this next line needs to be updated with each release. 
+  	     We cannot use the pom's version string, because that pom is the
+  	     uimaj-distr's pom and that version string ends in
+  	     -incubating  whereas, we need it to end in .incubating   
+  	   TODO change the whole project to use the . form, if possible, and then
+  	     pass in the value from the pom -->
+  	<property name="project.version" value="2.2.0.incubating"/>
+  	<delete dir="target"/>
+  	<delete dir="work"/>
+  	<mkdir dir="work"/>
+  	<mkdir dir="target"/>
+  	<mkdir dir="target/features"/>
+  	<mkdir dir="target/plugins"/>
+  	<copy  todir="target/web">
+  		<fileset dir="web"/>
+    </copy>
+    <copy  todir="target" file="index.html"/>
+    <copy  todir="target" file="site.xml"/>
+  </target>	
+	
+  <target name="build-runtime">
+  	<copy todir="../uimaj-eclipse-feature-runtime/META-INF">
+  		<fileset dir="../uimaj-distr/src/main/readme"
+  	           includes="LICENSE NOTICE DISCLAIMER"/>
+  	</copy>
+  	<jar destfile="target/features/org.apache.uima.runtime_${project.version}.jar"
+  	  basedir="../uimaj-eclipse-feature-runtime"
+  		includes="feature.xml META-INF/*"/>
+  	<unzip dest="work" 
+  		     src="../uimaj-ep-runtime/target/org.apache.uima.runtime_${project.version}.zip" />
+  	<copy todir="work/org.apache.uima.runtime_${project.version}/META-INF">
+  		<fileset dir="../uimaj-distr/src/main/readme"
+  	           includes="LICENSE NOTICE DISCLAIMER"/>
+  	</copy>
+  	<jar destfile="target/plugins/org.apache.uima.runtime_${project.version}.jar"
+  		   basedir="work/org.apache.uima.runtime_${project.version}"
+  	     manifest="work/org.apache.uima.runtime_${project.version}/META-INF/MANIFEST.MF"/>
+  </target>
+
+  <target name="build-tools">
+  	<copy todir="../uimaj-eclipse-feature-tools/META-INF">
+  		<fileset dir="../uimaj-distr/src/main/readme"
+  	           includes="LICENSE NOTICE DISCLAIMER"/>
+  	</copy>
+  	<jar destfile="target/features/org.apache.uima.tools_${project.version}.jar"
+      basedir="../uimaj-eclipse-feature-tools"
+	    includes="feature.xml META-INF/*"/>
+   	<unzip dest="work" 
+    		     src="../uimaj-ep-configurator/target/org.apache.uima.desceditor_${project.version}.zip" />
+  	<copy todir="work/org.apache.uima.desceditor_${project.version}/META-INF">
+  		<fileset dir="../uimaj-distr/src/main/readme"
+  	           includes="LICENSE NOTICE DISCLAIMER"/>
+  	</copy>  	
+  	<jar destfile="target/plugins/org.apache.uima.desceditor_${project.version}.jar"
+    		   basedir="work/org.apache.uima.desceditor_${project.version}"
+ 	        manifest="work/org.apache.uima.desceditor_${project.version}/META-INF/MANIFEST.MF"/>
+   	<unzip dest="work" 
+    		     src="../uimaj-ep-jcasgen/target/org.apache.uima.jcas.jcasgenp_${project.version}.zip" />
+  	<copy todir="work/org.apache.uima.jcas.jcasgenp_${project.version}/META-INF">
+  		<fileset dir="../uimaj-distr/src/main/readme"
+  	           includes="LICENSE NOTICE DISCLAIMER"/>
+  	</copy>  	
+   	<jar destfile="target/plugins/org.apache.uima.jcas.jcasgenp_${project.version}.jar"
+    		   basedir="work/org.apache.uima.jcas.jcasgenp_${project.version}"
+          manifest="work/org.apache.uima.jcas.jcasgenp_${project.version}/META-INF/MANIFEST.MF"/>
+  	<unzip dest="work" 
+    		     src="../uimaj-ep-debug/target/org.apache.uima.debug_${project.version}.zip" />
+  	<copy todir="work/org.apache.uima.debug_${project.version}/META-INF">
+  		<fileset dir="../uimaj-distr/src/main/readme"
+  	           includes="LICENSE NOTICE DISCLAIMER"/>
+  	</copy>
+    <jar destfile="target/plugins/org.apache.uima.debug_${project.version}.jar"
+    		   basedir="work/org.apache.uima.debug_${project.version}"
+          manifest="work/org.apache.uima.debug_${project.version}/META-INF/MANIFEST.MF"/>  	
+   	<unzip dest="work" 
+    		     src="../uimaj-ep-pear-packager/target/org.apache.uima.pear_${project.version}.zip" />
+  	<copy todir="work/org.apache.uima.pear_${project.version}/META-INF">
+  		<fileset dir="../uimaj-distr/src/main/readme"
+  	           includes="LICENSE NOTICE DISCLAIMER"/>
+  	</copy>
+    <jar destfile="target/plugins/org.apache.uima.pear_${project.version}.jar"
+    		   basedir="work/org.apache.uima.pear_${project.version}"
+          manifest="work/org.apache.uima.pear_${project.version}/META-INF/MANIFEST.MF"/>
+  </target>
+
+</project>

Added: incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/index.html
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/index.html?rev=569033&view=auto
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/index.html (added)
+++ incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/index.html Thu Aug 23 08:05:37 2007
@@ -0,0 +1,78 @@
+<html>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.    
+-->
+<head>
+<title>uima-ep-update-site</title>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<style>@import url("web/site.css");</style>
+<script type="text/javascript">
+	var returnval = 0;
+	var stylesheet, xmlFile, cache, doc;
+	function init(){
+		// NSCP 7.1+ / Mozilla 1.4.1+ / Safari
+		// Use the standard DOM Level 2 technique, if it is supported
+		if (document.implementation && document.implementation.createDocument) {
+			xmlFile = document.implementation.createDocument("", "", null);
+			stylesheet = document.implementation.createDocument("", "", null);
+			if (xmlFile.load){
+				xmlFile.load("site.xml");
+				stylesheet.load("web/site.xsl");
+			} else {
+				alert("Document could not be loaded by browser.");
+			}
+			xmlFile.addEventListener("load", transform, false);
+			stylesheet.addEventListener("load", transform, false);
+		}
+		//IE 6.0+ solution
+		else if (window.ActiveXObject) {
+			xmlFile = new ActiveXObject("msxml2.DOMDocument.3.0");
+			xmlFile.async = false;
+			xmlFile.load("site.xml");
+			stylesheet = new ActiveXObject("msxml2.FreeThreadedDOMDocument.3.0");
+			stylesheet.async = false;
+			stylesheet.load("web/site.xsl");
+			cache = new ActiveXObject("msxml2.XSLTemplate.3.0");
+			cache.stylesheet = stylesheet;
+			transformData();
+		}
+	}
+	// separate transformation function for IE 6.0+
+	function transformData(){
+		var processor = cache.createProcessor();
+		processor.input = xmlFile;
+		processor.transform();
+		data.innerHTML = processor.output;
+	}
+	// separate transformation function for NSCP 7.1+ and Mozilla 1.4.1+ 
+	function transform(){
+		returnval+=1;
+		if (returnval==2){
+			var processor = new XSLTProcessor();
+			processor.importStylesheet(stylesheet); 
+			doc = processor.transformToDocument(xmlFile);
+			document.getElementById("data").innerHTML = doc.documentElement.innerHTML;
+		}
+	}
+</script>
+</head>
+<body onload="init();">
+<!--[insert static HTML here]-->
+<div id="data"><!-- this is where the transformed data goes --></div>
+</body>
+</html>

Added: incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/site.xml
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/site.xml?rev=569033&view=auto
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/site.xml (added)
+++ incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/site.xml Thu Aug 23 08:05:37 2007
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.    
+-->
+<site>
+   <description url="http://incubator.apache.org/uima/downloads/eclipse-update-site">
+      Eclipse update site for Apache UIMA.  To install these plugins, point your Eclipse Update Manager at this site.
+   </description>
+   <feature url="features/org.apache.uima.tools_2.2.0.incubating.jar" id="org.apache.uima.tools" version="2.2.0.incubating">
+      <category name="UIMA-2.2.0.incubating"/>
+   </feature>
+   <feature url="features/org.apache.uima.runtime_2.2.0.incubating.jar" id="org.apache.uima.runtime" version="2.2.0.incubating">
+      <category name="UIMA-2.2.0.incubating"/>
+   </feature>
+   <category-def name="UIMA-2.2.0.incubating" label="Apache UIMA Eclipse tooling and runtime support"/>
+</site>

Added: incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/web/site.css
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/web/site.css?rev=569033&view=auto
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/web/site.css (added)
+++ incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/web/site.css Thu Aug 23 08:05:37 2007
@@ -0,0 +1,30 @@
+<STYLE type="text/css">
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+td.spacer {padding-bottom: 10px; padding-top: 10px;}
+.title { font-family: sans-serif; color: #99AACC;}
+.bodyText { font-family: sans-serif; font-size: 9pt; color:#000000;  }
+.sub-header { font-family: sans-serif; font-style: normal; font-weight: bold; font-size: 9pt; color: white;}
+.log-text {font-family: sans-serif; font-style: normal; font-weight: lighter; font-size: 8pt; color:black;}
+.big-header { font-family: sans-serif; font-style: normal; font-weight: bold; font-size: 9pt; color: white; border-top:10px solid white;}
+.light-row {background:#FFFFFF}
+.dark-row {background:#EEEEFF}
+.header {background:#99AADD}
+#indent {word-wrap : break-word;width :300px;text-indent:10px;}
+</STYLE>

Added: incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/web/site.xsl
URL: http://svn.apache.org/viewvc/incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/web/site.xsl?rev=569033&view=auto
==============================================================================
--- incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/web/site.xsl (added)
+++ incubator/uima/uimaj/trunk/uimaj-eclipse-update-site/web/site.xsl Thu Aug 23 08:05:37 2007
@@ -0,0 +1,232 @@
+<xsl:stylesheet version = '1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msxsl="urn:schemas-microsoft-com:xslt">
+<xsl:output method="html" encoding="UTF-8"/>
+  <!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.    
+-->
+<xsl:key name="cat" match="category" use="@name"/>
+<xsl:template match="/">
+<xsl:for-each select="site">
+	<html>
+	<head>
+	<title>uima-ep-update-site</title>
+	<style>@import url("web/site.css");</style>
+	</head>
+	<body>
+	<h1 class="title">uima-ep-update-site</h1>
+	<p class="bodyText"><xsl:value-of select="description"/></p>
+	<table width="100%" border="0" cellspacing="1" cellpadding="2">
+	<xsl:for-each select="category-def">
+		<xsl:sort select="@label" order="ascending" case-order="upper-first"/>
+		<xsl:sort select="@name" order="ascending" case-order="upper-first"/>
+	<xsl:if test="count(key('cat',@name)) != 0">
+			<tr class="header">
+				<td class="sub-header" width="30%">
+					<xsl:value-of select="@name"/>
+				</td>
+				<td class="sub-header" width="70%">
+					<xsl:value-of select="@label"/>
+				</td>
+			</tr>
+			<xsl:for-each select="key('cat',@name)">
+			<xsl:sort select="ancestor::feature//@version" order="ascending"/>
+			<xsl:sort select="ancestor::feature//@id" order="ascending" case-order="upper-first"/>
+			<tr>
+				<xsl:choose>
+				<xsl:when test="(position() mod 2 = 1)">
+					<xsl:attribute name="class">dark-row</xsl:attribute>
+				</xsl:when>
+				<xsl:otherwise>
+					<xsl:attribute name="class">light-row</xsl:attribute>
+				</xsl:otherwise>
+				</xsl:choose>
+				<td class="log-text" id="indent">
+						<xsl:choose>
+						<xsl:when test="ancestor::feature//@label">
+							<a href="{ancestor::feature//@url}"><xsl:value-of select="ancestor::feature//@label"/></a>
+							<br/>
+							<div id="indent">
+							(<xsl:value-of select="ancestor::feature//@id"/> - <xsl:value-of select="ancestor::feature//@version"/>)
+							</div>
+						</xsl:when>
+						<xsl:otherwise>
+						<a href="{ancestor::feature//@url}"><xsl:value-of select="ancestor::feature//@id"/> - <xsl:value-of select="ancestor::feature//@version"/></a>
+						</xsl:otherwise>
+						</xsl:choose>
+						<br />
+				</td>
+				<td>
+					<table>
+						<xsl:if test="ancestor::feature//@os">
+							<tr><td class="log-text" id="indent">Operating Systems:</td>
+							<td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@os"/></td>
+							</tr>
+						</xsl:if>
+						<xsl:if test="ancestor::feature//@ws">
+							<tr><td class="log-text" id="indent">Windows Systems:</td>
+							<td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@ws"/></td>
+							</tr>
+						</xsl:if>
+						<xsl:if test="ancestor::feature//@nl">
+							<tr><td class="log-text" id="indent">Languages:</td>
+							<td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@nl"/></td>
+							</tr>
+						</xsl:if>
+						<xsl:if test="ancestor::feature//@arch">
+							<tr><td class="log-text" id="indent">Architecture:</td>
+							<td class="log-text" id="indent"><xsl:value-of select="ancestor::feature//@arch"/></td>
+							</tr>
+						</xsl:if>
+					</table>
+				</td>
+			</tr>
+			</xsl:for-each>
+			<tr><td class="spacer"><br/></td><td class="spacer"><br/></td></tr>
+		</xsl:if>
+	</xsl:for-each>
+	<xsl:if test="count(feature)  &gt; count(feature/category)">
+	<tr class="header">
+		<td class="sub-header" colspan="2">
+		Uncategorized
+		</td>
+	</tr>
+	</xsl:if>
+	<xsl:choose>
+	<xsl:when test="function-available('msxsl:node-set')">
+	   <xsl:variable name="rtf-nodes">
+		<xsl:for-each select="feature[not(category)]">
+			<xsl:sort select="@id" order="ascending" case-order="upper-first"/>
+			<xsl:sort select="@version" order="ascending" />
+			<xsl:value-of select="."/>
+			<xsl:copy-of select="." />
+		</xsl:for-each>
+	   </xsl:variable>
+	   <xsl:variable name="myNodeSet" select="msxsl:node-set($rtf-nodes)/*"/>
+	<xsl:for-each select="$myNodeSet">
+	<tr>
+		<xsl:choose>
+		<xsl:when test="position() mod 2 = 1">
+		<xsl:attribute name="class">dark-row</xsl:attribute>
+		</xsl:when>
+		<xsl:otherwise>
+		<xsl:attribute name="class">light-row</xsl:attribute>
+		</xsl:otherwise>
+		</xsl:choose>
+		<td class="log-text" id="indent">
+			<xsl:choose>
+			<xsl:when test="@label">
+				<a href="{@url}"><xsl:value-of select="@label"/></a>
+				<br />
+				<div id="indent">
+				(<xsl:value-of select="@id"/> - <xsl:value-of select="@version"/>)
+				</div>
+			</xsl:when>
+			<xsl:otherwise>
+				<a href="{@url}"><xsl:value-of select="@id"/> - <xsl:value-of select="@version"/></a>
+			</xsl:otherwise>
+			</xsl:choose>
+			<br /><br />
+		</td>
+		<td>
+			<table>
+				<xsl:if test="@os">
+					<tr><td class="log-text" id="indent">Operating Systems:</td>
+					<td class="log-text" id="indent"><xsl:value-of select="@os"/></td>
+					</tr>
+				</xsl:if>
+				<xsl:if test="@ws">
+					<tr><td class="log-text" id="indent">Windows Systems:</td>
+					<td class="log-text" id="indent"><xsl:value-of select="@ws"/></td>
+					</tr>
+				</xsl:if>
+				<xsl:if test="@nl">
+					<tr><td class="log-text" id="indent">Languages:</td>
+					<td class="log-text" id="indent"><xsl:value-of select="@nl"/></td>
+					</tr>
+				</xsl:if>
+				<xsl:if test="@arch">
+					<tr><td class="log-text" id="indent">Architecture:</td>
+					<td class="log-text" id="indent"><xsl:value-of select="@arch"/></td>
+					</tr>
+				</xsl:if>
+			</table>
+		</td>
+	</tr>
+	</xsl:for-each>
+	</xsl:when>
+	<xsl:otherwise>
+	<xsl:for-each select="feature[not(category)]">
+	<xsl:sort select="@id" order="ascending" case-order="upper-first"/>
+	<xsl:sort select="@version" order="ascending" />
+	<tr>
+		<xsl:choose>
+		<xsl:when test="count(preceding-sibling::feature[not(category)]) mod 2 = 1">
+		<xsl:attribute name="class">dark-row</xsl:attribute>
+		</xsl:when>
+		<xsl:otherwise>
+		<xsl:attribute name="class">light-row</xsl:attribute>
+		</xsl:otherwise>
+		</xsl:choose>
+		<td class="log-text" id="indent">
+			<xsl:choose>
+			<xsl:when test="@label">
+				<a href="{@url}"><xsl:value-of select="@label"/></a>
+				<br />
+				<div id="indent">
+				(<xsl:value-of select="@id"/> - <xsl:value-of select="@version"/>)
+				</div>
+			</xsl:when>
+			<xsl:otherwise>
+				<a href="{@url}"><xsl:value-of select="@id"/> - <xsl:value-of select="@version"/></a>
+			</xsl:otherwise>
+			</xsl:choose>
+			<br /><br />
+		</td>
+		<td>
+			<table>
+				<xsl:if test="@os">
+					<tr><td class="log-text" id="indent">Operating Systems:</td>
+					<td class="log-text" id="indent"><xsl:value-of select="@os"/></td>
+					</tr>
+				</xsl:if>
+				<xsl:if test="@ws">
+					<tr><td class="log-text" id="indent">Windows Systems:</td>
+					<td class="log-text" id="indent"><xsl:value-of select="@ws"/></td>
+					</tr>
+				</xsl:if>
+				<xsl:if test="@nl">
+					<tr><td class="log-text" id="indent">Languages:</td>
+					<td class="log-text" id="indent"><xsl:value-of select="@nl"/></td>
+					</tr>
+				</xsl:if>
+				<xsl:if test="@arch">
+					<tr><td class="log-text" id="indent">Architecture:</td>
+					<td class="log-text" id="indent"><xsl:value-of select="@arch"/></td>
+					</tr>
+				</xsl:if>
+			</table>
+		</td>
+	</tr>
+	</xsl:for-each>
+	</xsl:otherwise>
+	</xsl:choose>
+	</table>
+	</body>
+	</html>
+</xsl:for-each>
+</xsl:template>
+</xsl:stylesheet>