Mercurial > public > ssdtant
view src/org/ssdt_ohio/tools/ant/wsd2html.xsl @ 7:418ba4cfc553 tip
USASR-644: preserve dependencies in replaced target
author | smith@nwoca.org |
---|---|
date | Wed, 12 Oct 2011 18:12:17 -0400 |
parents | 09f9f3d5c507 |
children |
line wrap: on
line source
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:x="http://ssdt.nwoca.org/xml/wsdl2html" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsl:output method="html" omit-xml-declaration="yes"/> <xsl:variable name="wsd2htmlVersion" select="'ssdt wsd2html 0.2-0'"/> <xsl:variable name="defaultNamespace"> <xsl:for-each select="wsdl:definitions/namespace::*"> <xsl:if test="not(name())"> <xsl:value-of select="."/> </xsl:if> </xsl:for-each> </xsl:variable> <xsl:variable name="targetNamespace" select="wsdl:definitions/@targetNamespace"/> <xsl:template match="/"> <HTML> <HEAD> <TITLE>Web Service Description: <xsl:value-of select="wsdl:definitions/wsdl:service/@name"/> </TITLE> <META HTTP-EQUIV="content-type" content="text/html" charset="UTF-8"/> <STYLE TYPE="text/css"> BODY { margin-left: 5%; margin-right: 5%; } H1 { background-color: lightgrey; } H2 { background-color: lightgrey; } H3 { background-color: #00CCCC; text-indent: .5em; border: thin solid black; width: 95%; } P { } TABLE { border: thin solid black; left-margin: 20em; width: 80%; } TD { border: thin solid black; padding: .2em; } .xml { border: thin dotted blue; padding: .5em; width: 70%; margin-left: 5%; } .xml UL LI { list-style-image: none; list-style-type: none; } .attrValue { color: rgb(153, 51, 51); font-weight: bold; } .attrName { color: rgb(0, 0, 102); } .xmlElement { color: black; font-weight: bold; } </STYLE> </HEAD> <BODY> <H1>Web Service Description: <xsl:value-of select="wsdl:definitions/wsdl:service/@name"/> </H1> <h2>Contents</h2> <ul> <li> <a href="#operations">Operations</a> </li> <li> <a href="#messages">Messages</a> </li> <li> <a href="#elements">Elements</a> </li> <li> <a href="#types">Types</a> </li> </ul> <hr/> <xsl:call-template name="getDoc"> <xsl:with-param name="doc" select="wsdl:definitions/wsdl:documentation"/> </xsl:call-template> <HR/> <xsl:apply-templates select="wsdl:definitions/wsdl:service"/> <hr/> <h2>Namespaces:</h2> <table> <tr> <th>Prefix</th> <th>Namespace</th> </tr> <xsl:for-each select="wsdl:definitions/namespace::*"> <xsl:sort select="name()"/> <tr> <td> <xsl:choose> <xsl:when test="name()"> <xsl:value-of select="name()"/> </xsl:when> <xsl:otherwise> <xsl:text>[Default]</xsl:text> </xsl:otherwise> </xsl:choose> </td> <td> <xsl:value-of select="."/> </td> </tr> </xsl:for-each> </table> <h2>Imported Schemas</h2> <table> <tr> <th>Namespace</th> <th>Location</th> </tr> <xsl:for-each select="wsdl:definitions/wsdl:types/xsd:schema/xsd:import"> <tr> <td> <xsl:value-of select="@namespace"/> </td> <td> <xsl:value-of select="@schemaLocation"/> </td> </tr> </xsl:for-each> </table> <HR/> <a name="operations" id="operations"/> <H2>Port Type: <xsl:value-of select="wsdl:definitions/wsdl:portType/@name"/> </H2> <xsl:apply-templates select="wsdl:definitions/wsdl:portType"/> <H2>Operations Detail</H2> <xsl:apply-templates select="wsdl:definitions/wsdl:portType/wsdl:operation"> <xsl:sort select="@name"/> </xsl:apply-templates> <a name="messages" id="messages"/> <H2>Messsages</H2> <table> <tr><th>Message</th><th>Parameter</th></tr> <xsl:apply-templates select="wsdl:definitions/wsdl:message"> <xsl:sort select="@name"/> </xsl:apply-templates> </table> <a name="elements" id="elements"/> <H2>Elements</H2> <ul> <xsl:apply-templates select="wsdl:definitions/wsdl:types/xsd:schema/xsd:element" mode="summary"> <xsl:sort select="@name"/> </xsl:apply-templates> </ul> <xsl:apply-templates select="wsdl:definitions/wsdl:types/xsd:schema/xsd:element" mode="detail"> <xsl:sort select="@name"/> </xsl:apply-templates> <a name="types" id="types"/> <H2>Types</H2> <ul> <xsl:apply-templates select="wsdl:definitions/wsdl:types/xsd:schema/xsd:complexType | wsdl:definitions/wsdl:types/xsd:schema/xsd:simpleType" mode="summary"> <xsl:sort select="@name"/> </xsl:apply-templates> </ul> <hr/> <xsl:apply-templates select="wsdl:definitions/wsdl:types/xsd:schema/xsd:complexType | wsdl:definitions/wsdl:types/xsd:schema/xsd:simpleType" mode="detail"> <xsl:sort select="@name"/> </xsl:apply-templates> <hr/> <i><font size="-1">Generated by <xsl:value-of select="$wsd2htmlVersion"/></font></i> </BODY> </HTML> </xsl:template> <xsl:template match="wsdl:operation"> <a name="o-{@name}" id="o-{@name}"/> <h3>Operation: <xsl:value-of select="@name"/> </h3> <xsl:call-template name="getDoc"> <xsl:with-param name="doc" select="wsdl:documentation"/> </xsl:call-template> <table> <tr> <td>Input</td> <td> <a href="#m-{wsdl:input/@name}"> <xsl:value-of select="wsdl:input/@name"/> </a> </td> </tr> <tr> <td>Output</td> <td> <a href="#m-{wsdl:output/@name}"> <xsl:value-of select="wsdl:output/@name"/> </a> </td> </tr> <xsl:for-each select="wsdl:fault"> <tr> <td>Fault</td> <td> <xsl:variable name="typeName"> <xsl:call-template name="getQname"> <xsl:with-param name="elementName" select="@name"/> </xsl:call-template> </xsl:variable> <xsl:variable name="anchor"> <xsl:call-template name="getAnchor"> <xsl:with-param name="anchorText" select="$typeName"/> </xsl:call-template> </xsl:variable> <a href="#ty-{$anchor}"> <xsl:value-of select="@name"/> </a> </td> <td> <xsl:call-template name="getDoc"> <xsl:with-param name="doc" select="wsdl:documentation"/> </xsl:call-template> </td> </tr> </xsl:for-each> </table> </xsl:template> <xsl:template match="wsdl:message"> <tr><td> <a name="m-{@name}" id="m-{@name}"/> <xsl:value-of select="@name"/> </td><td> <xsl:variable name="typeName"> <xsl:call-template name="getQname"> <xsl:with-param name="elementName" select="wsdl:part/@element"/> </xsl:call-template> </xsl:variable> <xsl:variable name="anchor"> <xsl:call-template name="getAnchor"> <xsl:with-param name="anchorText" select="$typeName"/> </xsl:call-template> </xsl:variable> <a href="#e-{$anchor}"> <xsl:value-of select="$typeName"/> </a> </td></tr> </xsl:template> <xsl:template name="getAnchor"> <xsl:param name="anchorText"/> <xsl:value-of select="translate(normalize-space($anchorText),':/.[]', '_____')"/> </xsl:template> <xsl:template name="getQname"> <xsl:param name="elementName"/> <xsl:choose> <xsl:when test="contains($elementName,':')"> [<xsl:value-of select="/wsdl:definitions/namespace::*[name()=substring-before($elementName,':')]"/>]:<xsl:value-of select="substring-after($elementName,':')"/> </xsl:when> <xsl:otherwise> [<xsl:value-of select="$defaultNamespace"/>]:<xsl:value-of select="$elementName"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="xsd:element" mode="summary"> <xsl:variable name="typeName"> <xsl:call-template name="getQname"> <xsl:with-param name="elementName" select="@name"/> </xsl:call-template> </xsl:variable> <xsl:variable name="anchor"> <xsl:call-template name="getAnchor"> <xsl:with-param name="anchorText" select="$typeName"/> </xsl:call-template> </xsl:variable> <li><a href="#e-{$anchor}"><xsl:value-of select="@name"/></a></li> </xsl:template> <xsl:template match="xsd:element" mode="detail"> <xsl:variable name="typeName"> <xsl:call-template name="getQname"> <xsl:with-param name="elementName" select="@name"/> </xsl:call-template> </xsl:variable> <xsl:variable name="anchor"> <xsl:call-template name="getAnchor"> <xsl:with-param name="anchorText" select="$typeName"/> </xsl:call-template> </xsl:variable> <a name="e-{$anchor}" id="e-{$anchor}"/> <h3> <xsl:value-of select="$typeName"/> </h3> <div class="xml"> <xsl:call-template name="codeXml"/> </div> </xsl:template> <xsl:template match="xsd:complexType | xsd:simpleType" mode="summary"> <xsl:variable name="typeName"> <xsl:call-template name="getQname"> <xsl:with-param name="elementName" select="@name"/> </xsl:call-template> </xsl:variable> <xsl:variable name="anchor"> <xsl:call-template name="getAnchor"> <xsl:with-param name="anchorText" select="$typeName"/> </xsl:call-template> </xsl:variable> <li><a href="#ty-{$anchor}"><xsl:value-of select="@name"/></a></li> </xsl:template> <xsl:template match="xsd:complexType | xsd:simpleType" mode="detail"> <xsl:variable name="typeName"> <xsl:call-template name="getQname"> <xsl:with-param name="elementName" select="@name"/> </xsl:call-template> </xsl:variable> <xsl:variable name="anchor"> <xsl:call-template name="getAnchor"> <xsl:with-param name="anchorText" select="$typeName"/> </xsl:call-template> </xsl:variable> <a name="ty-{$anchor}" id="ty-{$anchor}"/> <h3> <xsl:value-of select="@name"/> </h3> <div class="xml"> <xsl:call-template name="codeXml"/> </div> </xsl:template> <xsl:template match="wsdl:service"> <h2>Service Summary: Service: <xsl:value-of select="@name"/> </h2> <xsl:for-each select="wsdl:port"> <p>Port name: <xsl:value-of select="@name"/> <br/> Endpoint URL: <xsl:value-of select="*[local-name()='address']/@location"/> <br/> Binding: <xsl:value-of select="@binding"/> </p> </xsl:for-each> </xsl:template> <xsl:template match="wsdl:portType"> Operations: <table> <tr><th>Operation</th> <th>Description</th> </tr> <xsl:for-each select="wsdl:operation"> <xsl:sort select="@name"/> <tr> <td> <a href="#o-{@name}"> <xsl:value-of select="@name"/> </a> </td> <td> <xsl:call-template name="getShortDescription"> <xsl:with-param name="desc" select="wsdl:documentation"/> </xsl:call-template> </td> </tr> </xsl:for-each> </table> </xsl:template> <xsl:template name="getShortDescription"> <xsl:param name="desc"/> <xsl:choose> <xsl:when test="contains($desc,'.')"> <xsl:value-of select="substring-before($desc,'.')"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$desc"/> </xsl:otherwise> </xsl:choose>. </xsl:template> <xsl:template name="codeXml"> <xsl:choose> <xsl:when test="name()='xsd:annotation'"> <UL> <LI> <P> <xsl:call-template name="getDoc"> <xsl:with-param name="doc" select="xsd:documentation"/> </xsl:call-template> </P> </LI> </UL> </xsl:when> <xsl:otherwise> <ul> <li><<span class="xmlElement"><xsl:value-of select="name()"/></span> <xsl:for-each select="@*"><xsl:text> </xsl:text> <span class="attrName"><xsl:value-of select="name()"/></span>="<span class="attrValue"><xsl:value-of select="."/> </span>" </xsl:for-each> <xsl:choose> <xsl:when test="count(*) = 0"> <xsl:text>/></xsl:text> </xsl:when> <xsl:otherwise> > <xsl:for-each select="*"> <xsl:call-template name="codeXml"/> </xsl:for-each> </<span class="xmlElement"><xsl:value-of select="name()"/></span>> </xsl:otherwise> </xsl:choose> </li> </ul> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="getDoc"> <xsl:param name="doc"/> <xsl:choose> <xsl:when test="$doc/*"> <xsl:copy-of select="$doc/*"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$doc/text()"/> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>