diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bfe27afdf030c54f86e26e86250b6911499fb844..46472df6aacd0850d4b467be8f0ea5c3ae729553 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -17,6 +17,7 @@ pages: stage: deploy script: - mkdocs build --strict --verbose + - cp -r org.framed.updatesite/* public/site artifacts: paths: - public diff --git a/mkdocs.yml b/mkdocs.yml index 588b328ffddbacef068e537e93a1433a045f0966..d03991fa9f61fede8767c59a08c06110fd19e2a7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,4 +1,2 @@ site_name: FRAmED -site_url: https://pages.gitlab.io/mkdocs -site_dir: public theme: readthedocs diff --git a/org.framed.feature/.project b/org.framed.feature/.project new file mode 100644 index 0000000000000000000000000000000000000000..e68283e8c8be6abc7276e29237878f835156608d --- /dev/null +++ b/org.framed.feature/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.framed.feature</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.pde.FeatureBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.FeatureNature</nature> + </natures> +</projectDescription> diff --git a/org.framed.feature/build.properties b/org.framed.feature/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..64f93a9f0b7328eb563aa5ad6cec7f828020e124 --- /dev/null +++ b/org.framed.feature/build.properties @@ -0,0 +1 @@ +bin.includes = feature.xml diff --git a/org.framed.feature/feature.xml b/org.framed.feature/feature.xml new file mode 100644 index 0000000000000000000000000000000000000000..8d2a0a59073edfb0ea1ab220b63569f65ea8ccb2 --- /dev/null +++ b/org.framed.feature/feature.xml @@ -0,0 +1,117 @@ +<?xml version="1.0" encoding="UTF-8"?> +<feature + id="org.framed.feature" + label="Feature" + version="1.0.0"> + + <description url="http://www.example.com/description"> + [Enter Feature Description here.] + </description> + + <copyright url="http://www.example.com/copyright"> + [Enter Copyright Description here.] + </copyright> + + <license url="http://www.example.com/license"> + [Enter License Description here.] + </license> + + <plugin + id="org.framed.iorm.model" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.framed.iorm.featuremodel" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.rosi.crom.metamodel.editor" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.framed.iorm.transformation.test" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.framed.iorm.editpolicymodel" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.rosi.crom.toformal.cli" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.framed.iorm.model.edit" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.framed.iorm.editpolicymodel.tests" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.rosi.crom.toformal" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.rosi.crom.metamodel.tests" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.framed.iorm.ui" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.rosi.crom.metamodel" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.rosi.crom.metamodel.edit" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.framed.iorm.transformation" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + +</feature> diff --git a/org.framed.iorm.ui/framed.product b/org.framed.iorm.ui/framed.product index 59a0aa0f2b48892065ed69b1cc2bc89ad93c03a9..055cef782b4d786d6be585d4075adfda4b646485 100644 --- a/org.framed.iorm.ui/framed.product +++ b/org.framed.iorm.ui/framed.product @@ -505,6 +505,10 @@ version(s), and exceptions or additional permissions here}." <plugin id="org.framed.iorm.ui" autoStart="true" startLevel="3" /> </configurations> + <repositories> + <repository location="http://https://rosi.pages.st.inf.tu-dresden.de/framed/site" enabled="true" /> + </repositories> + <preferencesInfo> <targetfile overwrite="false"/> </preferencesInfo> diff --git a/org.framed.updatesite/.project b/org.framed.updatesite/.project new file mode 100644 index 0000000000000000000000000000000000000000..f2631ef24a250e1f6c2419eccc226bfc46c588df --- /dev/null +++ b/org.framed.updatesite/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.framed.updatesite</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> diff --git a/org.framed.updatesite/artifacts.jar b/org.framed.updatesite/artifacts.jar new file mode 100644 index 0000000000000000000000000000000000000000..0dba0c2d8b32fafaa6aa1c047088f61b1508b993 Binary files /dev/null and b/org.framed.updatesite/artifacts.jar differ diff --git a/org.framed.updatesite/content.jar b/org.framed.updatesite/content.jar new file mode 100644 index 0000000000000000000000000000000000000000..5d3c53d84ff83658098b73c2e60144b91e3fba89 Binary files /dev/null and b/org.framed.updatesite/content.jar differ diff --git a/org.framed.updatesite/features/org.framed.feature_1.0.0.jar b/org.framed.updatesite/features/org.framed.feature_1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..f1387d94bc8db2b659fff36d623d4bb89f5ba287 Binary files /dev/null and b/org.framed.updatesite/features/org.framed.feature_1.0.0.jar differ diff --git a/org.framed.updatesite/index.html b/org.framed.updatesite/index.html new file mode 100644 index 0000000000000000000000000000000000000000..f21f914cd00ace3c312c758f5f5b01ccefa5703a --- /dev/null +++ b/org.framed.updatesite/index.html @@ -0,0 +1,60 @@ +<html> +<head> +<title>org.framed.updatesite</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> diff --git a/org.framed.updatesite/plugins/org.framed.iorm.editpolicymodel.tests_1.0.0.202010011735.jar b/org.framed.updatesite/plugins/org.framed.iorm.editpolicymodel.tests_1.0.0.202010011735.jar new file mode 100644 index 0000000000000000000000000000000000000000..f4ab20465546aca3a5ecda5cc2882f7c29b42b59 Binary files /dev/null and b/org.framed.updatesite/plugins/org.framed.iorm.editpolicymodel.tests_1.0.0.202010011735.jar differ diff --git a/org.framed.updatesite/plugins/org.framed.iorm.editpolicymodel_1.0.0.jar b/org.framed.updatesite/plugins/org.framed.iorm.editpolicymodel_1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..912a4b1c9661a5059e417c89f660ebd6c87336c3 Binary files /dev/null and b/org.framed.updatesite/plugins/org.framed.iorm.editpolicymodel_1.0.0.jar differ diff --git a/org.framed.updatesite/plugins/org.framed.iorm.featuremodel_1.0.0.202010011735.jar b/org.framed.updatesite/plugins/org.framed.iorm.featuremodel_1.0.0.202010011735.jar new file mode 100644 index 0000000000000000000000000000000000000000..bb1e65465a96d17e5bd05fcfe1dd8d2c5d9ca453 Binary files /dev/null and b/org.framed.updatesite/plugins/org.framed.iorm.featuremodel_1.0.0.202010011735.jar differ diff --git a/org.framed.updatesite/plugins/org.framed.iorm.model.edit_2.2.0.202010011735.jar b/org.framed.updatesite/plugins/org.framed.iorm.model.edit_2.2.0.202010011735.jar new file mode 100644 index 0000000000000000000000000000000000000000..9e5c789132da0961ae6e2a77d12a7d86ff13b4af Binary files /dev/null and b/org.framed.updatesite/plugins/org.framed.iorm.model.edit_2.2.0.202010011735.jar differ diff --git a/org.framed.updatesite/plugins/org.framed.iorm.model_2.2.0.202010011735.jar b/org.framed.updatesite/plugins/org.framed.iorm.model_2.2.0.202010011735.jar new file mode 100644 index 0000000000000000000000000000000000000000..c6927d52aeaa8e4b82552192d2bd6c852bf9d3b2 Binary files /dev/null and b/org.framed.updatesite/plugins/org.framed.iorm.model_2.2.0.202010011735.jar differ diff --git a/org.framed.updatesite/plugins/org.framed.iorm.transformation.test_2.2.3.jar b/org.framed.updatesite/plugins/org.framed.iorm.transformation.test_2.2.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..09b3ebc4b0a7f998d8f2c30e27d0fa354e553665 Binary files /dev/null and b/org.framed.updatesite/plugins/org.framed.iorm.transformation.test_2.2.3.jar differ diff --git a/org.framed.updatesite/plugins/org.framed.iorm.transformation_2.2.0.jar b/org.framed.updatesite/plugins/org.framed.iorm.transformation_2.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..9dd8049b75b85e0ee56803ba72f3a78bf619caeb Binary files /dev/null and b/org.framed.updatesite/plugins/org.framed.iorm.transformation_2.2.0.jar differ diff --git a/org.framed.updatesite/plugins/org.framed.iorm.ui_2.2.0.202010011735.jar b/org.framed.updatesite/plugins/org.framed.iorm.ui_2.2.0.202010011735.jar new file mode 100644 index 0000000000000000000000000000000000000000..3dfb915db413d7d6aefda1c9129eaaa343e00cb0 Binary files /dev/null and b/org.framed.updatesite/plugins/org.framed.iorm.ui_2.2.0.202010011735.jar differ diff --git a/org.framed.updatesite/plugins/org.rosi.crom.metamodel.edit_1.0.0.202010011735.jar b/org.framed.updatesite/plugins/org.rosi.crom.metamodel.edit_1.0.0.202010011735.jar new file mode 100644 index 0000000000000000000000000000000000000000..c4e4766f2120579ffedaac43c193cd79b5b277db Binary files /dev/null and b/org.framed.updatesite/plugins/org.rosi.crom.metamodel.edit_1.0.0.202010011735.jar differ diff --git a/org.framed.updatesite/plugins/org.rosi.crom.metamodel.editor_1.0.0.202010011735.jar b/org.framed.updatesite/plugins/org.rosi.crom.metamodel.editor_1.0.0.202010011735.jar new file mode 100644 index 0000000000000000000000000000000000000000..94f26688ad3f17816bc1b594641aa8efc820eb14 Binary files /dev/null and b/org.framed.updatesite/plugins/org.rosi.crom.metamodel.editor_1.0.0.202010011735.jar differ diff --git a/org.framed.updatesite/plugins/org.rosi.crom.metamodel.tests_1.0.0.202010011735.jar b/org.framed.updatesite/plugins/org.rosi.crom.metamodel.tests_1.0.0.202010011735.jar new file mode 100644 index 0000000000000000000000000000000000000000..b91aee897e7cff80bac373c677bae394d5906604 Binary files /dev/null and b/org.framed.updatesite/plugins/org.rosi.crom.metamodel.tests_1.0.0.202010011735.jar differ diff --git a/org.framed.updatesite/plugins/org.rosi.crom.metamodel_1.0.0.jar b/org.framed.updatesite/plugins/org.rosi.crom.metamodel_1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..0c842057c931f7d62176b44fcf9ab5693ee3f2d6 Binary files /dev/null and b/org.framed.updatesite/plugins/org.rosi.crom.metamodel_1.0.0.jar differ diff --git a/org.framed.updatesite/plugins/org.rosi.crom.toformal.cli_1.0.2.jar b/org.framed.updatesite/plugins/org.rosi.crom.toformal.cli_1.0.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..c85348abd60473b191104fbf08752a61e50b9ecf Binary files /dev/null and b/org.framed.updatesite/plugins/org.rosi.crom.toformal.cli_1.0.2.jar differ diff --git a/org.framed.updatesite/plugins/org.rosi.crom.toformal_1.0.1.jar b/org.framed.updatesite/plugins/org.rosi.crom.toformal_1.0.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..9c2f5114def2d6eb53ec0f595850f11e88aeb02c Binary files /dev/null and b/org.framed.updatesite/plugins/org.rosi.crom.toformal_1.0.1.jar differ diff --git a/org.framed.updatesite/site.xml b/org.framed.updatesite/site.xml new file mode 100644 index 0000000000000000000000000000000000000000..b0c26de17618eec8410cbf5ae98c776e5c0f5385 --- /dev/null +++ b/org.framed.updatesite/site.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<site> + <feature url="features/org.framed.feature_1.0.0.jar" id="org.framed.feature" version="1.0.0"/> +</site> diff --git a/org.framed.updatesite/web/site.css b/org.framed.updatesite/web/site.css new file mode 100644 index 0000000000000000000000000000000000000000..62c6f9ffa4472e7893b59ccfdb9665254a6a07b2 --- /dev/null +++ b/org.framed.updatesite/web/site.css @@ -0,0 +1,12 @@ +<STYLE type="text/css"> +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> diff --git a/org.framed.updatesite/web/site.xsl b/org.framed.updatesite/web/site.xsl new file mode 100644 index 0000000000000000000000000000000000000000..f22ab309a030b221e21cc7cf5bb351eb2bb3238e --- /dev/null +++ b/org.framed.updatesite/web/site.xsl @@ -0,0 +1,214 @@ +<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"/> +<xsl:key name="cat" match="category" use="@name"/> +<xsl:template match="/"> +<xsl:for-each select="site"> + <html> + <head> + <title>org.framed.updatesite</title> + <style>@import url("web/site.css");</style> + </head> + <body> + <h1 class="title">org.framed.updatesite</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) > 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>