| <?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. |
| --> |
| |
| <!-- Content Stylesheet for "jmeter-site" --> |
| |
| <!DOCTYPE xsl:stylesheet [ |
| <!ENTITY copy "©"> |
| <!ENTITY nbsp " "> |
| <!ENTITY ndash "–"> |
| <!ENTITY para "¶"> |
| <!ENTITY rarr "→"> |
| <!ENTITY trade "™"> |
| ]> |
| <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
| version="3.0" |
| > |
| |
| <!-- Defined parameters (overrideable) --> |
| <xsl:param name="relative-path" select="'.'" /> |
| <xsl:param name="subdir" select="''" /> |
| <xsl:param name="imgdir" select="concat($relative-path, '/images')" /> |
| <xsl:param name="sshotdir" select="concat($imgdir, '/screenshots')" /> |
| <xsl:param name="cssdir" select="concat($relative-path, '/css')" /> |
| <xsl:param name="apidir" select="concat($relative-path, '/api')" /> |
| <xsl:param name="jakarta-site" select="'https://jakarta.apache.org'" /> |
| <xsl:param name="year" select="'2023'" /> |
| <xsl:param name="max-img-width" select="'600'" /> |
| |
| <!-- Output method --> |
| <xsl:output method="html" html-version="5.0" encoding="iso-8859-15" |
| indent="yes" doctype-system="about:legacy-compat" /> |
| |
| <xsl:template match="document"> |
| <xsl:variable name="project" select="document('project.xml')/project" /> |
| <html lang="en"> |
| <head> |
| <title> |
| <xsl:value-of select="$project/title" /> |
| - |
| <xsl:value-of select="properties/title" /> |
| </title> |
| <xsl:for-each select="properties/author"> |
| <xsl:variable name="name"> |
| <xsl:value-of select="." /> |
| </xsl:variable> |
| <xsl:variable name="email"> |
| <xsl:value-of select="@email" /> |
| </xsl:variable> |
| <meta name="author" value="{$name}" /> |
| <meta name="email" value="{$email}" /> |
| </xsl:for-each> |
| <!-- VIEWPORT --> |
| <meta name="viewport" content="width=device-width, initial-scale=1" /> |
| <link |
| href='https://fonts.googleapis.com/css?family=Merriweather:400normal' |
| rel='stylesheet' type='text/css' |
| ></link> |
| <link |
| href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" |
| rel="stylesheet" type='text/css' |
| ></link> |
| <link rel="stylesheet" type="text/css" |
| href="{concat($cssdir, '/new-style.css')}" |
| ></link> |
| <link rel="apple-touch-icon-precomposed" href="{$imgdir}/apple-touch-icon.png"></link> |
| <link rel="icon" href="{$imgdir}/favicon.png"></link> |
| <meta name="msapplication-TileColor" content="#ffffff" /> |
| <meta name="msapplication-TileImage" content="{$imgdir}/mstile-144x144.png" /> |
| <meta name="theme-color" content="#ffffff" /> |
| </head> |
| <body role="document"> |
| <a href="#content" class="hidden" >Main content</a> |
| <div class="header"> |
| <xsl:comment> |
| APACHE LOGO |
| </xsl:comment> |
| <div> |
| <a href="https://www.apache.org"> |
| <img title="Apache Software Foundation" class="asf-logo logo" |
| src="{$imgdir}/asf-logo.svg" alt="Logo ASF" /> |
| </a> |
| </div> |
| <xsl:if test="$project/logo"> |
| <xsl:variable name="alt"> |
| <xsl:value-of select="$project/logo" /> |
| </xsl:variable> |
| <xsl:variable name="home"> |
| <xsl:value-of select="$project/@href" /> |
| </xsl:variable> |
| <xsl:variable name="src"> |
| <xsl:value-of |
| select="concat($relative-path, $project/logo/@href)" /> |
| </xsl:variable> |
| <xsl:comment> |
| PROJECT LOGO |
| </xsl:comment> |
| <div> |
| <a href="{$home}"> |
| <img class="logo" src="{$src}" alt="{$alt}"/> |
| </a> |
| </div> |
| </xsl:if> |
| <div class="banner"> |
| <a href="https://www.apache.org/events/current-event.html"> |
| <img src="https://www.apache.org/events/current-event-234x60.png" alt="Current Apache event teaser" /> |
| </a> |
| <div class="clear"></div> |
| </div> |
| </div> |
| <div class="nav"> |
| <xsl:apply-templates select="$project/body/menu" /> |
| </div> |
| <div class="main" id="content"> |
| <xsl:call-template name="social-media-links" /> |
| <xsl:call-template name="pagelinks" /> |
| <xsl:if test="@index"> |
| <xsl:call-template name="section-index" /> |
| </xsl:if> |
| <xsl:apply-templates select="body/section"></xsl:apply-templates> |
| <xsl:call-template name="pagelinks" /> |
| <xsl:call-template name="share-links" /> |
| <a href="#top" id="topButton">Go to top</a> |
| </div> |
| <div class="footer"> |
| <div class="copyright"> |
| Copyright © |
| 1999 – |
| <xsl:value-of select="$year" /> |
| , Apache Software Foundation |
| </div> |
| <div class="trademarks">Apache, Apache JMeter, JMeter, the Apache |
| feather, and the Apache JMeter logo are |
| trademarks of the |
| Apache Software Foundation. |
| </div> |
| </div> |
| <script><![CDATA[(function(){ |
| "use strict"; |
| // enable 'go to top' button functionality |
| document.addEventListener('scroll', function() { |
| if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) { |
| document.getElementById("topButton").style.display = "block"; |
| } else { |
| document.getElementById("topButton").style.display = "none"; |
| } |
| }); |
| // fill in the current location into social links on this page. |
| var as = document.getElementsByTagName('a'); |
| var loc = document.location.href; |
| if (!loc.toLowerCase().startsWith('http')) { |
| return; |
| } |
| for (var i=0; i<as.length; i++) { |
| var href = as[i].getAttribute('data-social-url'); |
| if (href !== null) { |
| as[i].href = href + encodeURIComponent(loc); |
| } |
| } |
| })();]]></script> |
| </body> |
| </html> |
| </xsl:template> |
| |
| <xsl:template name="social-media-links"> |
| <div class="social-media"> |
| <ul class="social-media-links"> |
| <li class="twitter"><a href="https://twitter.com/ApacheJMeter" title="Follow us on Twitter"><i class="fa fa-twitter" aria-hidden="true"></i>Twitter</a></li> |
| <li class="github"><a href="https://github.com/apache/jmeter" title="Fork us on github"><i class="fa fa-github" aria-hidden="true"></i>github</a></li> |
| </ul> |
| </div> |
| </xsl:template> |
| |
| <xsl:template name="share-links"> |
| <div class="share-links"> |
| Share this page: |
| <ul> |
| <li class="fb"><a data-social-url="https://facebook.com/sharer/sharer.php?u=" title="Share on facebook"><i class="fa fa-facebook" aria-hidden="true"></i>share</a></li> |
| <li class="twitter"><a data-social-url="https://twitter.com/intent/tweet?url=" title="Tweet on twitter"><i class="fa fa-twitter" aria-hidden="true"></i>tweet</a></li> |
| </ul> |
| </div> |
| </xsl:template> |
| |
| <xsl:template name="pagelinks"> |
| <xsl:if test="@prev or @next"> |
| <ul class="pagelinks"> |
| <xsl:if test="@prev"> |
| <li> |
| <a href="{@prev}">< Prev</a> |
| </li> |
| </xsl:if> |
| <li> |
| <a href="{concat($relative-path, '/index.html')}">Index</a> |
| </li> |
| <xsl:if test="@next"> |
| <li> |
| <a href="{@next}">Next ></a> |
| </li> |
| </xsl:if> |
| </ul> |
| </xsl:if> |
| </xsl:template> |
| |
| <xsl:template name="section-index"> |
| <ul class="section-index"> |
| <xsl:for-each select="body/section"> |
| <li> |
| <a href="#{@anchor}"> |
| <xsl:value-of select="@name" /> |
| </a> |
| <ul> |
| <xsl:for-each select="component"> |
| <li> |
| <a href="#{translate(normalize-space(@name), ' ', '_')}"> |
| <xsl:value-of select="@name" /> |
| <xsl:if test="@was"> |
| (was: |
| <xsl:value-of select="@was" /> |
| ) |
| </xsl:if> |
| </a> |
| </li> |
| </xsl:for-each> |
| </ul> |
| </li> |
| </xsl:for-each> |
| </ul> |
| </xsl:template> |
| |
| <xsl:template name="image"> |
| <xsl:param name="srcdir" /> |
| <xsl:param name="image" /> |
| <xsl:param name="width" /> |
| <xsl:param name="height" /> |
| <xsl:param name="alt" /> |
| <xsl:variable name="name" select="concat($srcdir, '/', $image)" /> |
| <a href="{$name}"><img src="{$name}" width="{$width}" height="{$height}" alt="{$alt}" /></a> |
| </xsl:template> |
| |
| <!-- Process a menu for the navigation bar --> |
| <xsl:template match="menu"> |
| <ul class="menu"> |
| <li onClick="return true"> |
| <div class="menu-title"> |
| <xsl:value-of select="@name" /> |
| </div> |
| <ul> |
| <xsl:apply-templates select="item" /> |
| </ul> |
| </li> |
| </ul> |
| </xsl:template> |
| |
| <!-- Process a menu item for the navigation bar --> |
| <xsl:template match="item"> |
| <xsl:variable name="href"> |
| <xsl:choose> |
| <xsl:when test="starts-with(@href, 'http')"> |
| <xsl:value-of select="@href" /> |
| </xsl:when> |
| <xsl:when test="starts-with(@href, '/site')"> |
| <xsl:value-of select="concat($jakarta-site, @href)" /> |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:value-of select="concat($relative-path, @href)" /> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:variable> |
| <li> |
| <a href="{$href}"> |
| <xsl:value-of select="@name" /> |
| <xsl:if test="@icon"> |
| <img src="{concat($imgdir, '/', @icon)}" alt="{concat('Icon for ', @name)}"/> |
| </xsl:if> |
| </a> |
| </li> |
| </xsl:template> |
| |
| <xsl:template match="section"> |
| <div class="section"> |
| <h1> |
| <xsl:if test="@anchor"> |
| <xsl:attribute name="id"> |
| <xsl:value-of select="translate(normalize-space(@anchor), ' ', '_')" /> |
| </xsl:attribute> |
| </xsl:if> |
| <xsl:value-of select="@name" /> |
| <xsl:if test="@anchor"> |
| <xsl:call-template name="sectionlink"> |
| <xsl:with-param name="anchor" select="@anchor" /> |
| </xsl:call-template> |
| </xsl:if> |
| </h1> |
| <xsl:apply-templates /> |
| </div> |
| </xsl:template> |
| |
| <xsl:template match="ch_section"> |
| <h2 class="ch_section" id="{.}"> |
| <xsl:apply-templates /> |
| </h2> |
| </xsl:template> |
| |
| <xsl:template match="ch_title"> |
| <h3 class="ch_title"> |
| <xsl:apply-templates /> |
| </h3> |
| </xsl:template> |
| |
| <xsl:template match="ch_category"> |
| <h2 class="ch_category"> |
| <xsl:apply-templates /> |
| </h2> |
| </xsl:template> |
| |
| <xsl:template match="subsection"> |
| <div class="subsection"> |
| <h2> |
| <xsl:if test="@anchor"> |
| <xsl:attribute name="id"> |
| <xsl:value-of select="translate(normalize-space(@anchor), ' ' , '_')" /> |
| </xsl:attribute> |
| </xsl:if> |
| <xsl:value-of select="@name" /> |
| <xsl:if test="@anchor"> |
| <xsl:call-template name="sectionlink"> |
| <xsl:with-param name="anchor" select="@anchor" /> |
| </xsl:call-template> |
| </xsl:if> |
| </h2> |
| <xsl:apply-templates /> |
| </div> |
| </xsl:template> |
| |
| <xsl:template match="source"> |
| <pre class="source"> |
| <xsl:apply-templates /> |
| </pre> |
| </xsl:template> |
| |
| <xsl:template match="code"> |
| <span class="code"> |
| <xsl:apply-templates /> |
| </span> |
| </xsl:template> |
| |
| <xsl:template match="description"> |
| <div class="description"> |
| <xsl:apply-templates /> |
| </div> |
| </xsl:template> |
| |
| <xsl:template match="component"> |
| <div class="component"> |
| <h2 id="{translate(@name, ' ', '_')}"> |
| <xsl:value-of select="@name" /> |
| <xsl:if test="@was"> |
| <a name="{translate(normalize-space(@was), ' ', '_')}"> |
| (was: |
| <xsl:value-of select="@was" /> |
| ) |
| </a> |
| </xsl:if> |
| <xsl:call-template name="sectionlink"> |
| <xsl:with-param name="anchor" select="@name" /> |
| </xsl:call-template> |
| </h2> |
| <xsl:if test="@useinstead"> |
| <div class="deprecated"> |
| *** This element is deprecated. Use |
| <a |
| href="{concat($relative-path, '/usermanual/component_reference.html#', translate(normalize-space(@useinstead), ' ', '_'))}" |
| > |
| <xsl:value-of select="@useinstead" /> |
| </a> |
| instead *** |
| </div> |
| </xsl:if> |
| <xsl:apply-templates select="description" /> |
| <xsl:if test="@screenshot != ''"> |
| <div class="screenshot"> |
| <figure> |
| <xsl:call-template name="image"> |
| <xsl:with-param name="srcdir" select="$sshotdir" /> |
| <xsl:with-param name="image" select="@screenshot" /> |
| <xsl:with-param name="width" select="@width" /> |
| <xsl:with-param name="height" select="@height" /> |
| <xsl:with-param name="alt" select="concat('Screenshot for Control-Panel of ', @name)" /> |
| </xsl:call-template> |
| <figcaption>Screenshot of Control-Panel of <xsl:value-of select="@name"/></figcaption> |
| </figure> |
| </div> |
| </xsl:if> |
| <xsl:apply-templates select="*[not(self::description)]" /> |
| <div class="go-top"> |
| <a href="#">^</a> |
| </div> |
| </div> |
| </xsl:template> |
| |
| <xsl:template name="sectionlink"> |
| <xsl:param name="anchor" /> |
| <a class="sectionlink" href="#{translate(normalize-space($anchor), ' ', '_')}" |
| title="Link to here" |
| >¶</a> |
| </xsl:template> |
| |
| <xsl:template match="properties"> |
| <xsl:variable name="prop-count" select="count(preceding-sibling::properties) + 1" /> |
| <div class="properties"> |
| <h3> |
| <xsl:if test="name(..) = 'component'"> |
| <xsl:attribute name="id"> |
| <xsl:value-of select="concat(translate(normalize-space(../@name), ' ', '_'), '_parms', $prop-count)" /> |
| </xsl:attribute> |
| </xsl:if> |
| Parameters |
| <xsl:if test="name(..) = 'component'"> |
| <xsl:call-template name="sectionlink"> |
| <xsl:with-param name="anchor" |
| select="concat(translate(normalize-space(../@name), ' ', '_'), '_parms', $prop-count)" /> |
| </xsl:call-template> |
| </xsl:if> |
| </h3> |
| <div class="property title"> |
| <div class="name title">Attribute</div> |
| <div class="description title">Description</div> |
| <div class="required title">Required</div> |
| </div> |
| <xsl:apply-templates /> |
| </div> |
| </xsl:template> |
| |
| <xsl:template match="property"> |
| <div class="property"> |
| <div |
| class="name req-{contains('yYtT', substring(normalize-space(@required), 1, 1))}" |
| > |
| <xsl:value-of select="@name" /> |
| </div> |
| <div |
| class="description req-{contains('yYtT', substring(normalize-space(@required), 1, 1))}" |
| > |
| <xsl:apply-templates /> |
| </div> |
| <div |
| class="required req-{contains('yYtT', substring(normalize-space(@required), 1, 1))}" |
| > |
| <xsl:choose> |
| <xsl:when test="@required"> |
| <xsl:value-of select="@required" /> |
| </xsl:when> |
| <xsl:otherwise> |
| No |
| </xsl:otherwise> |
| </xsl:choose> |
| </div> |
| </div> |
| </xsl:template> |
| |
| <xsl:template match="note"> |
| <div class="clear"></div> |
| <div class="note"> |
| <xsl:apply-templates /> |
| </div> |
| <div class="clear"></div> |
| </xsl:template> |
| |
| <xsl:template name="apilink"> |
| <xsl:param name="href" /> |
| <a |
| href="{concat($apidir, '/', @href)}" |
| > |
| <xsl:value-of select="." /> |
| </a> |
| </xsl:template> |
| |
| <xsl:template match="apilink"> |
| <xsl:call-template name="apilink"> |
| <xsl:with-param name="name" select="@href" /> |
| </xsl:call-template> |
| </xsl:template> |
| |
| <xsl:template name="complink"> |
| <xsl:param name="name" /> |
| <a |
| href="{concat($relative-path, '/usermanual/component_reference.html#', translate(@name, ' ', '_'))}" |
| > |
| <xsl:value-of select="@name" /> |
| </a> |
| </xsl:template> |
| |
| <xsl:template match="complink"> |
| <xsl:call-template name="complink"> |
| <xsl:with-param name="name" select="@name" /> |
| </xsl:call-template> |
| </xsl:template> |
| |
| <xsl:template name="funclink"> |
| <xsl:param name="name" /> |
| <a |
| href="{concat($relative-path, '/usermanual/functions.html#', translate(@name, ' ()', '_'))}" |
| > |
| <xsl:value-of select="@name" /> |
| </a> |
| </xsl:template> |
| |
| <xsl:template match="funclink"> |
| <xsl:call-template name="funclink"> |
| <xsl:with-param name="name" select="@name" /> |
| </xsl:call-template> |
| </xsl:template> |
| |
| <xsl:template match="figure"> |
| <figure> |
| <xsl:call-template name="image"> |
| <xsl:with-param name="srcdir" select="$sshotdir" /> |
| <xsl:with-param name="image" select="@image" /> |
| <xsl:with-param name="width" select="@width" /> |
| <xsl:with-param name="height" select="@height" /> |
| <xsl:with-param name="alt" select="text()"/> |
| </xsl:call-template> |
| <figcaption> |
| <xsl:apply-templates /> |
| </figcaption> |
| </figure> |
| </xsl:template> |
| |
| <xsl:template match="bugzilla"> |
| <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id={./text()}"> |
| Bug |
| <xsl:value-of select="./text()" /> |
| </a> |
| </xsl:template> |
| |
| <xsl:template match="bug"> |
| <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id={./text()}"> |
| Bug |
| <xsl:value-of select="./text()" /> |
| </a> |
| <xsl:call-template name="issue_separator"/> |
| </xsl:template> |
| |
| <xsl:template match="rfc"> |
| <xsl:choose> |
| <xsl:when test="./text()"> |
| <a href="https://tools.ietf.org/html/{@link}"><xsl:value-of select="./text()" /></a> |
| </xsl:when> |
| <xsl:otherwise> |
| <a href="https://tools.ietf.org/html/{@link}">RFC <xsl:value-of select="@link" /></a> |
| </xsl:otherwise> |
| </xsl:choose> |
| </xsl:template> |
| |
| <xsl:template match="pr"> |
| <a href="https://github.com/apache/jmeter/pull/{./text()}"> |
| PR#<xsl:value-of select="./text()" /> |
| </a> |
| <xsl:call-template name="issue_separator"/> |
| </xsl:template> |
| |
| <xsl:template match="issue"> |
| <a href="https://github.com/apache/jmeter/issues/{./text()}"> |
| Issue#<xsl:value-of select="./text()" /> |
| </a> |
| <xsl:call-template name="issue_separator"/> |
| </xsl:template> |
| |
| <xsl:template name="issue_separator"> |
| <xsl:choose> |
| <xsl:when test="following-sibling::issue or following-sibling::pr or following-sibling::bug">, </xsl:when> |
| <!-- If preceding element is text, then avoid adding "," or "-". It looks like inline reference to an issue, PR --> |
| <xsl:when test="preceding-sibling::text()[normalize-space() != '']"/> |
| <xsl:otherwise> – </xsl:otherwise> |
| </xsl:choose> |
| </xsl:template> |
| |
| <xsl:template match="links"> |
| <div class="links"> |
| <div class="title">See also:</div> |
| <ul class="links"> |
| <xsl:for-each select="link|complink"> |
| <li> |
| <xsl:choose> |
| <xsl:when test="name(.) = 'link'"> |
| <a href="{@href}"> |
| <xsl:apply-templates /> |
| </a> |
| </xsl:when> |
| <xsl:when test="name(.) = 'complink'"> |
| <xsl:call-template name="complink"> |
| <xsl:with-param name="name" select="@name" /> |
| </xsl:call-template> |
| </xsl:when> |
| </xsl:choose> |
| </li> |
| </xsl:for-each> |
| </ul> |
| </div> |
| </xsl:template> |
| |
| <xsl:template match="link"> |
| <li> |
| <a href="{@href}"> |
| <xsl:apply-templates /> |
| </a> |
| </li> |
| </xsl:template> |
| |
| <xsl:template match="example"> |
| <div class="example"> |
| <div class="title"> |
| <xsl:value-of select="@title" /> |
| <xsl:if test="@anchor"> |
| <xsl:attribute name="id"> |
| <xsl:value-of select="translate(normalize-space(@anchor), ' ', '_')" /> |
| </xsl:attribute> |
| <xsl:call-template name="sectionlink"> |
| <xsl:with-param name="anchor" select="@anchor" /> |
| </xsl:call-template> |
| </xsl:if> |
| </div> |
| <xsl:apply-templates /> |
| </div> |
| </xsl:template> |
| |
| <xsl:template match="table"> |
| <table> |
| <xsl:apply-templates /> |
| </table> |
| </xsl:template> |
| |
| <xsl:template |
| match="abbr|h1|h2|h3|h4|h5|p|b|em|ul|ol|li|a|i|pre|br|tt|tr|th|td|dl|dt|dd|sup|span|u|strong|thead|tbody|form|select|option|input|font|center|img|body|style|div|hr" |
| > |
| <xsl:copy> |
| <xsl:apply-templates select="@*|*|text()" /> |
| </xsl:copy> |
| </xsl:template> |
| |
| |
| <!-- Process everything else by just passing it through --> |
| <xsl:template match="*"> |
| <div class="nostyle"> |
| <xsl:copy> |
| <xsl:apply-templates select="@*|*|text()" /> |
| </xsl:copy> |
| </div> |
| </xsl:template> |
| |
| <xsl:template match="@*"> |
| <xsl:copy> |
| <xsl:apply-templates select="@*|*|text()" /> |
| </xsl:copy> |
| </xsl:template> |
| |
| <xsl:template match="guimenuitem"> |
| <span class="guimenuitem"><xsl:apply-templates /></span> |
| <xsl:if test="following-sibling::guimenuitem"> → </xsl:if> |
| </xsl:template> |
| |
| <xsl:template match="keysym"> |
| <span class="keysym"><xsl:apply-templates /></span> |
| <xsl:if test="following-sibling::keysym and parent::keycombo"> + </xsl:if> |
| </xsl:template> |
| |
| <xsl:template match="keycombo"> |
| <span class="keycombo"><xsl:apply-templates select="keysym" /></span> |
| </xsl:template> |
| |
| <xsl:template match="shortcut"> |
| (<xsl:apply-templates select="keycombo"/>) |
| </xsl:template> |
| |
| <xsl:template match="menuchoice"> |
| <span class="menuchoice"> |
| <xsl:apply-templates select="guimenuitem"/> |
| <xsl:apply-templates select="shortcut"/> |
| </span> |
| </xsl:template> |
| |
| </xsl:stylesheet> |