git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@114576 13f79535-47bb-0310-9956-ffa450edef68
454 lines
17 KiB
XML
454 lines
17 KiB
XML
<?xml version="1.0"?>
|
|
<!-- stylesheet to be used -->
|
|
<jsl:stylesheet select="$doc"
|
|
xmlns:define="jelly:define"
|
|
xmlns:j="jelly:core"
|
|
xmlns:jsl="jelly:jsl"
|
|
xmlns:log="jelly:log"
|
|
xmlns:util="jelly:util"
|
|
xmlns:x="jelly:xml"
|
|
xmlns:doc="doc"
|
|
xmlns:maven="jelly:maven"
|
|
xmlns="dummy"
|
|
trim="false">
|
|
<jsl:template match="document" trim="false">
|
|
<j:useBean var="navbean" class="org.apache.maven.NavBean"/>
|
|
<j:set var="location" value="${outFile.substring(destdir.length())}"/>
|
|
<util:replace var="location" oldChar="\" newChar="/" value="${location}"/>
|
|
<!-- Stores location for publish date / version -->
|
|
<j:set var="date">${maven.xdoc.date}</j:set>
|
|
<j:setProperties object="${navbean}" document="${doc}" location="${location}"/>
|
|
|
|
<x:doctype name="html" publicId="-//W3C//DTD XHTML 1.0 Transitional//EN" systemId="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
|
|
<html>
|
|
<head>
|
|
<script type="text/javascript" src="${relativePath}/style/xc.js"></script>
|
|
|
|
<j:set var="docTitle"><x:expr select="./properties/title"/></j:set>
|
|
<x:if select="$nav/title">
|
|
<title><x:expr select="$nav/title"/> - ${docTitle}</title>
|
|
</x:if>
|
|
<x:if select="not($nav/title)">
|
|
<title>${pom.name} - ${docTitle}</title>
|
|
</x:if>
|
|
|
|
<style type="text/css"><![CDATA[
|
|
@import url("${relativePath}/style/maven-base.css");
|
|
]]></style>
|
|
|
|
<j:set var="themeUrl" value="${maven.xdoc.theme.url}x"/>
|
|
<j:if test="${themeUrl != 'x'}">
|
|
<style type="text/css"><![CDATA[
|
|
@import url("${maven.xdoc.theme.url}");
|
|
]]></style>
|
|
</j:if>
|
|
|
|
<j:if test="${themeUrl == 'x'}">
|
|
<style type="text/css"><![CDATA[
|
|
@import url("${relativePath}/style/maven-theme.css");
|
|
]]></style>
|
|
</j:if>
|
|
|
|
<util:file var="projectCssFile" name="${maven.docs.src}/style/project.css"/>
|
|
<j:if test="${projectCssFile.exists()}">
|
|
<style type="text/css"><![CDATA[
|
|
@import url("${relativePath}/style/project.css");
|
|
]]></style>
|
|
</j:if>
|
|
|
|
<link rel="stylesheet" type="text/css" href="${relativePath}/style/print.css" media="print"/>
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=${outputencoding}"/>
|
|
<x:forEach var="author" select="./properties/author">
|
|
<meta name="author" content="${author.text}"/>
|
|
<meta name="email" content="${author.attribute('email').value}"/>
|
|
</x:forEach>
|
|
|
|
<jsl:applyTemplates select="$doc/document/head/*"/>
|
|
|
|
</head>
|
|
|
|
<x:element name="body"><j:whitespace trim="true">
|
|
<x:attribute name="class">composite</x:attribute>
|
|
<x:forEach var="attr" select="$doc/document/body/@*">
|
|
<x:attribute name="${attr.name}">${attr.value}</x:attribute>
|
|
</x:forEach>
|
|
</j:whitespace>
|
|
|
|
<div id="banner">
|
|
<table border="0" cellspacing="0" cellpadding="8" width="100%">
|
|
<tr>
|
|
<!-- organization logo -->
|
|
<td>
|
|
<j:set var="logo" value="${pom.organization.logo}"/>
|
|
<j:if test="${!empty(logo)}">
|
|
<!-- set url to org or project url -->
|
|
<j:set var="url" value="${pom.organization.url}"/>
|
|
<j:if test="${!empty(url)}">
|
|
<j:set var="home" value="${pom.organization.url}"/>
|
|
</j:if>
|
|
<j:if test="${empty(url)}">
|
|
<j:set var="home" value="${pom.url}"/>
|
|
</j:if>
|
|
<!-- set image to relative or complete -->
|
|
<j:set var="image" value="${pom.organization.logo}"/>
|
|
<j:if test="${!image.startsWith('http://')}">
|
|
<j:set var="image" value="${relativePath}${image}"/>
|
|
</j:if>
|
|
<a href="${home}">
|
|
<img src="${image}" align="left" alt="${pom.organization.name}" border="0" id="orgLogo"/>
|
|
</a>
|
|
</j:if>
|
|
</td>
|
|
|
|
<!-- project logo and link -->
|
|
<td>
|
|
<div align="right" id="login">
|
|
<j:set var="logo" value="${pom.logo}"/>
|
|
<j:if test="${logo != null and logo != ''}">
|
|
<!-- set image to relative or complete -->
|
|
<j:set var="image" value="${pom.logo}"/>
|
|
<j:if test="${!image.startsWith('http://')}">
|
|
<j:set var="image" value="${relativePath}${image}"/>
|
|
</j:if>
|
|
|
|
<a href="${pom.url}">
|
|
<img src="${image}" align="right" alt="${pom.name}" border="0" id="projectLogo"/>
|
|
</a>
|
|
</j:if>
|
|
<j:if test="${logo == null or logo == ''}">
|
|
<a href="${pom.url}">
|
|
<div id="projectLogo">${pom.name}</div>
|
|
</a>
|
|
</j:if>
|
|
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div id="breadcrumbs">
|
|
<table border="0" cellspacing="0" cellpadding="4" width="100%">
|
|
<tr>
|
|
<j:if test="${date == 'left'}">
|
|
<maven:property var="version" name="maven.xdoc.version" defaultValue="${pom.currentVersion}"/>
|
|
<td>Last published: ${build.date}
|
|
<j:if test="${!empty(version)}">| Doc for ${version}</j:if>
|
|
</td>
|
|
</j:if>
|
|
<td>
|
|
<div align="right">
|
|
<j:if test="${date == 'right'}">
|
|
Last published: ${build.date}
|
|
<x:if select="$nav/body/links">|</x:if>
|
|
</j:if>
|
|
<!-- render links -->
|
|
<x:if select="$nav/body/links">
|
|
<jsl:applyTemplates select="$nav/body/links"/>
|
|
</x:if>
|
|
<x:if select="not($nav/body/links)">
|
|
<!-- FIXME -->
|
|
</x:if>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<!-- Body of the page -->
|
|
<table border="0" cellspacing="0" cellpadding="8" width="100%" id="layout">
|
|
<tr valign="top">
|
|
<td id="leftColumn">
|
|
<div id="navBox">
|
|
<j:if test="${date == 'navigation-top'}">
|
|
<div id="lastPublished">
|
|
Last published: ${build.date}
|
|
</div>
|
|
</j:if>
|
|
|
|
<x:if select="$nav">
|
|
<jsl:applyTemplates select="$nav/body/menu[not(@type) | @type='header'] | $nav/body/search"/>
|
|
</x:if>
|
|
|
|
<jsl:applyTemplates select="$projectNav/body/menu"/>
|
|
|
|
<!-- Standard Maven Navigation -->
|
|
<j:set var="fileName">${file}</j:set>
|
|
|
|
<j:set var="poweredbyimage">${maven.xdoc.poweredby.image}</j:set>
|
|
<j:set var="poweredbytitle">${maven.xdoc.poweredby.title}</j:set>
|
|
<j:set var="poweredbyurl">${maven.xdoc.poweredby.url}</j:set>
|
|
<j:if test="${!empty(poweredbyimage)}">
|
|
<div style="margin-top: 20px; width: 100%; text-align: center;">
|
|
<a href="${poweredbyurl}" title="${poweredbytitle}"><img id="poweredBy" alt="${maven.xdoc.poweredby.title}" src="${relativePath}/images/logos/${poweredbyimage}"/></a>
|
|
</div>
|
|
</j:if>
|
|
|
|
<j:if test="${date == 'navigation-bottom'}">
|
|
<div id="lastPublished">
|
|
Last published: ${build.date}
|
|
</div>
|
|
</j:if>
|
|
</div>
|
|
</td>
|
|
<td rowspan="2">
|
|
<div id="bodyColumn">
|
|
<!-- Insert MAIN body here -->
|
|
<div class="contentBox">
|
|
<!-- FIXME really shouldn't use $doc, but jelly loses it's context again -->
|
|
<jsl:applyTemplates select="$doc/document/body/section"/>
|
|
<jsl:applyTemplates select="$doc/document/body/release" />
|
|
<jsl:applyTemplates select="$doc/document/body/goals" />
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<div id="footer">
|
|
<table style='width:100%' border="0" cellspacing="0" cellpadding="4">
|
|
<jsl:applyTemplates select="$nav/body/footer"/>
|
|
<tr>
|
|
<td>
|
|
<j:if test="${!empty(pom.organization.name)}">
|
|
<j:if test="${!empty(pom.inceptionYear)}">
|
|
<j:if test="${pom.inceptionYear == mavenCurrentYear}">
|
|
© ${mavenCurrentYear}, ${pom.organization.name}
|
|
</j:if>
|
|
<j:if test="${pom.inceptionYear != mavenCurrentYear}">
|
|
© ${pom.inceptionYear}-${mavenCurrentYear}, ${pom.organization.name}
|
|
</j:if>
|
|
</j:if>
|
|
<j:if test="${empty(pom.inceptionYear)}">
|
|
© ${mavenCurrentYear}, ${pom.organization.name}
|
|
</j:if>
|
|
</j:if>
|
|
|
|
<j:if test="${date == 'bottom'}">
|
|
- Last published: ${build.date}
|
|
</j:if>
|
|
</td>
|
|
<j:if test="${date == 'bottom-right'}">
|
|
<td style='width: auto; text-align:right'>Last published: ${build.date}</td>
|
|
</j:if>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</x:element>
|
|
</html>
|
|
</jsl:template>
|
|
|
|
<!-- process the properties of the doc -->
|
|
<jsl:template match="properties" trim="false">
|
|
<!-- stick head block here later -->
|
|
</jsl:template>
|
|
|
|
<!-- Process a menu for the navigation bar -->
|
|
<jsl:template match="menu" trim="false">
|
|
<div class="navSection">
|
|
<div class="navSectionHead"><x:expr select="@name"/></div>
|
|
<jsl:applyTemplates select="item"/>
|
|
</div>
|
|
</jsl:template>
|
|
|
|
<jsl:template match="item" trim="false">
|
|
<x:set var="item" select="."/>
|
|
<x:set var="_name" select="string(@name)"/>
|
|
<x:set var="_link" select="string(@href)"/>
|
|
<x:set var="_img" select="string(@img)"/>
|
|
<x:set var="_childCount" select="count(./item)"/>
|
|
<j:set var="_isCollapsed" value="${navbean.isCollapsed(item.get(0))}"/>
|
|
<j:set var="_state" value="none"/>
|
|
|
|
<j:if test="${_childCount.intValue() gt 0}">
|
|
<j:if test="${!_isCollapsed}">
|
|
<j:set var="_state" value="expanded"/>
|
|
</j:if>
|
|
<j:if test="${_isCollapsed}">
|
|
<j:set var="_state" value="collapsed"/>
|
|
</j:if>
|
|
</j:if>
|
|
|
|
|
|
<div class="navLink">
|
|
<small>
|
|
<j:if test="${navbean.isSelected(item.get(0))}">
|
|
<b><doc:itemLink name="${_name}" link="${_link}" img="${_img}" state="${_state}"/></b>
|
|
</j:if>
|
|
<j:if test="${!navbean.isSelected(item.get(0))}">
|
|
<doc:itemLink name="${_name}" link="${_link}" img="${_img}" state="${_state}"/>
|
|
</j:if>
|
|
</small>
|
|
<j:if test="${!navbean.isCollapsed(item.get(0))}">
|
|
<jsl:applyTemplates select="item"/>
|
|
</j:if>
|
|
</div>
|
|
</jsl:template>
|
|
|
|
<!-- Process the breadcrumb navbar -->
|
|
<jsl:template match="links" trim="false">
|
|
<j:set var="linkCount" value="1"/>
|
|
<x:forEach var="link" select="item">
|
|
<j:if test="${linkCount != 1}">${maven.xdoc.crumb.separator}</j:if>
|
|
<j:set var="_name"><x:expr select="@name"/></j:set>
|
|
<j:set var="_link"><x:expr select="@href"/></j:set>
|
|
<doc:itemLink name="${_name}" link="${_link}"/>
|
|
<j:set var="linkCount" value="${1+linkCount}"/>
|
|
</x:forEach>
|
|
</jsl:template>
|
|
|
|
<!-- Google site search -->
|
|
<jsl:template match="search" trim="false">
|
|
<!-- Search code: http://www.google.com/searchcode.html -->
|
|
<!-- Google logos: http://www.google.com/stickers.html -->
|
|
<!-- Terms: http://www.google.com./services/terms_free.html -->
|
|
<div>
|
|
<strong>Search ${pom.name}</strong>
|
|
<form method="get" action="http://www.google.com/search">
|
|
<a class="navlink" href="http://www.google.com">
|
|
<img src="http://www.google.com/logos/Logo_25wht.gif"
|
|
alt="Google" border="0" />
|
|
</a><p/>
|
|
<j:set var="siteURL" value="${pom.url}"/>
|
|
<!-- google fails on urls that end with / -->
|
|
<j:if test="${siteURL.endsWith('/')}">
|
|
<j:set var="URLLength" value="${siteURL.length() - 1}"/>
|
|
<j:set var="siteURL" value="${siteURL.substring(0, URLLength.intValue())}"/>
|
|
</j:if>
|
|
<input type="text" size="15" name="q" maxlength="255" value=""/>
|
|
<input type="submit" value="Go" name="btnG"/>
|
|
<input type="hidden" name="domains" value="${siteURL}"/>
|
|
<input type="hidden" id="search" name="sitesearch" value="${siteURL}"/>
|
|
</form>
|
|
</div>
|
|
</jsl:template>
|
|
|
|
<!-- process a documentation section -->
|
|
<jsl:template match="section" trim="false">
|
|
<div class="section">
|
|
<j:set var="_sectionName"><x:expr select="@name"/></j:set>
|
|
<j:if test="${!empty(_sectionName)}">
|
|
<div class="sectionTitle"><a name="${_sectionName}">${_sectionName}</a></div>
|
|
</j:if>
|
|
<jsl:applyTemplates select="*"/>
|
|
</div>
|
|
</jsl:template>
|
|
|
|
<jsl:template match="subsection" trim="false">
|
|
<div class="subsection">
|
|
<j:set var="_sectionName"><x:expr select="@name"/></j:set>
|
|
<j:if test="${!empty(_sectionName)}">
|
|
<div class="subsectionTitle"><a name="${_sectionName}">${_sectionName}</a></div>
|
|
</j:if>
|
|
<jsl:applyTemplates select="*"/>
|
|
</div>
|
|
</jsl:template>
|
|
|
|
<jsl:template match="subsubsection" trim="false">
|
|
<div class="subsubsection">
|
|
<j:set var="_sectionName"><x:expr select="@name"/></j:set>
|
|
<j:if test="${!empty(_sectionName)}">
|
|
<div class="subsubsectionTitle"><a name="${_sectionName}">${_sectionName}</a></div>
|
|
</j:if>
|
|
<jsl:applyTemplates select="*"/>
|
|
</div>
|
|
</jsl:template>
|
|
|
|
<jsl:template match="source" trim="false">
|
|
<div class="source">
|
|
<pre><x:expr select="."/></pre>
|
|
</div>
|
|
</jsl:template>
|
|
|
|
<jsl:template match="footer" trim="false">
|
|
<tr>
|
|
<td>
|
|
<jsl:applyTemplates select="*"/>
|
|
</td>
|
|
</tr>
|
|
</jsl:template>
|
|
|
|
<jsl:template match="table" trim="false">
|
|
<j:set var="rowcount" value="0"/>
|
|
<!--
|
|
<table cellpadding="3" cellspacing="2" border="1" width="100%">
|
|
-->
|
|
<table class="bodyTable">
|
|
<jsl:applyTemplates select="*"/>
|
|
</table>
|
|
</jsl:template>
|
|
|
|
<jsl:template match="tr" trim="false">
|
|
<j:choose>
|
|
<j:when test="${rowMode == 'a'}">
|
|
<j:set var="rowMode" value="b"/>
|
|
</j:when>
|
|
<j:otherwise>
|
|
<j:set var="rowMode" value="a"/>
|
|
</j:otherwise>
|
|
</j:choose>
|
|
|
|
<!-- copy attributes FIXME: Shouldn't this only be colspan|rowspan? -->
|
|
<x:element name="tr"><j:whitespace trim="true">
|
|
<x:attribute name="class">${rowMode}</x:attribute>
|
|
<x:forEach var="attr" select="@*">
|
|
<x:attribute name="${attr.name}">${attr.value}</x:attribute>
|
|
</x:forEach>
|
|
<jsl:applyTemplates select="*"/>
|
|
</j:whitespace></x:element>
|
|
</jsl:template>
|
|
|
|
<!--************************-->
|
|
<!-- goals documentation -->
|
|
<!--************************-->
|
|
<jsl:template match="goals" trim="false">
|
|
<!-- reset row alternation -->
|
|
<j:set var="rowMode" value="" />
|
|
<div class="h3">
|
|
<h3><a name="Goals">Goals</a></h3>
|
|
<table>
|
|
<tr width='100%'><th>Goal</th><th>Description</th></tr>
|
|
<jsl:applyTemplates select="goal"/>
|
|
</table>
|
|
</div>
|
|
</jsl:template>
|
|
|
|
<!-- a goal -->
|
|
<!-- FIXME: this is copied from tr - there must be a way of
|
|
calling templates in jsl? -->
|
|
<jsl:template match="goal" trim="false">
|
|
<j:choose>
|
|
<j:when test="${rowMode == 'a'}">
|
|
<j:set var="rowMode" value="b"/>
|
|
</j:when>
|
|
<j:otherwise>
|
|
<j:set var="rowMode" value="a"/>
|
|
</j:otherwise>
|
|
</j:choose>
|
|
|
|
<x:element name="tr"><j:whitespace trim="true">
|
|
<x:attribute name="class">${rowMode}</x:attribute>
|
|
<j:set var="_goalName"><x:expr select="./name" /></j:set>
|
|
<td width='20%'><a name="${_goalName}">${_goalName}</a></td>
|
|
<td width='80%'><jsl:applyTemplates select="description" /></td>
|
|
</j:whitespace></x:element>
|
|
</jsl:template>
|
|
|
|
<jsl:template match="description">
|
|
<jsl:copy trim="false">
|
|
<jsl:applyTemplates trim="false"/>
|
|
</jsl:copy>
|
|
</jsl:template>
|
|
|
|
<!-- remove the space at the end of parsed "a" anchors -->
|
|
<jsl:template match="a" trim="false"><jsl:copy trim="true"><jsl:applyTemplates trim="true"/></jsl:copy></jsl:template>
|
|
|
|
<!-- copy any other elements through -->
|
|
<jsl:template match="*" trim="false"><jsl:copy trim="false"><jsl:applyTemplates trim="false"/></jsl:copy></jsl:template>
|
|
|
|
<!-- element values don't pass through as text -->
|
|
<jsl:template match="@*"/>
|
|
|
|
<!-- CDATA and text nodes pass-thru -->
|
|
<jsl:template match="text()"><x:expr select="."/></jsl:template>
|
|
|
|
</jsl:stylesheet>
|