2002/ws/desc/test-suite/messages ws-i.xsl,NONE,1.1

Update of /sources/public/2002/ws/desc/test-suite/messages
In directory hutz:/tmp/cvs-serv11839

Added Files:
	ws-i.xsl 
Log Message:
New

--- NEW FILE: ws-i.xsl ---
<?xml version="1.0" encoding="UTF-8"?>
<!--

    $Header: /sources/public/2002/ws/desc/test-suite/messages/ws-i.xsl,v 1.1 2006/10/19 14:41:40 plehegar Exp $

    Convert WS-I Monitor file into WS-Addressing Log file

-->
<xsl:stylesheet version="1.0" xmlns:l="http://www.w3.org/2002/ws/addressing/logs/" xmlns:http="http://www.w3.org/2002/ws/addressing/logs/http" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:wsi-log303="http://www.ws-i.org/testing/2003/03/log/" xmlns:wsi-log407="http://www.ws-i.org/testing/2004/07/log/">
	<xsl:output method="xml" indent="yes"/>
	<xsl:variable name="bom">&lt;?xml</xsl:variable>
	<xsl:variable name="gone">&lt;?_xml</xsl:variable>
	<xsl:template match="wsi-log303:log">
		<l:log xmlns:l="http://www.w3.org/2002/ws/addressing/logs/">
			<xsl:for-each select="//wsi-log303:messageEntry">
				<xsl:variable name="content">
				  <xsl:choose>
				    <xsl:when test='contains(wsi-log407:httpHeaders, "Content-Type: text/xml")
						    or contains(wsi-log407:httpHeaders, "Content-Type: application/soap+xml")'>
					<xsl:call-template name="replaceContent">
						<xsl:with-param name="text" select="wsi-log303:messageContent"/>
						<xsl:with-param name="replace" select="$bom"/>
						<xsl:with-param name="with" select="$gone"/>
						<xsl:with-param name="disable-output-escaping" select="yes"/>
					</xsl:call-template>
				    </xsl:when>
				    <xsl:otherwise>
				      <xsl:value-of select="wsi-log407:messageContent"/>
				    </xsl:otherwise>
				  </xsl:choose>
				</xsl:variable>
				<l:message timestamp="{@timestamp}" conversation="{@conversationID}" wsi-log303:ID="{@ID}" type="{@type}">
					<xsl:copy-of select="wsi-log303:senderHostAndPort"/>
					<xsl:copy-of select="wsi-log303:receiverHostAndPort"/>
					<l:httpHeaders>
					  <xsl:call-template name='replaceHeaders'>
					    <xsl:with-param name="text" select="wsi-log303:httpHeaders"/>
					  </xsl:call-template>
 					</l:httpHeaders>
					<l:content>
						<xsl:value-of select="$content" disable-output-escaping="yes"/>
					</l:content>
				</l:message>
			</xsl:for-each>
		</l:log>
	</xsl:template>
	<xsl:template match="wsi-log407:log">
		<l:log>
			<xsl:for-each select="//wsi-log407:messageEntry">
				<xsl:variable name="content">
				  <xsl:choose>
				    <xsl:when test='contains(wsi-log407:httpHeaders, "Content-Type: text/xml")
						    or contains(wsi-log407:httpHeaders, "Content-Type: application/soap+xml")'>
					<xsl:call-template name="replaceContent">
						<xsl:with-param name="text" select="wsi-log407:messageContent"/>
						<xsl:with-param name="replace" select="$bom"/>
						<xsl:with-param name="with" select="$gone"/>
						<xsl:with-param name="disable-output-escaping" select="yes"/>
					</xsl:call-template>
				    </xsl:when>
				    <xsl:otherwise>
				      <xsl:value-of select="wsi-log407:messageContent"/>
				    </xsl:otherwise>
				  </xsl:choose>
				</xsl:variable>
				<l:message timestamp="{@timestamp}" conversation="{@conversationID}" wsi-log407:ID="{@ID}" type="{@type}">
					<xsl:copy-of select="wsi-log407:senderHostAndPort"/>
					<xsl:copy-of select="wsi-log407:receiverHostAndPort"/>
					<l:httpHeaders>
					  <xsl:call-template name='replaceHeaders'>
					    <xsl:with-param name="text" select="wsi-log407:httpHeaders"/>
					  </xsl:call-template>
 					</l:httpHeaders>
					<l:content>
						<xsl:value-of select="$content" disable-output-escaping="yes"/>
					</l:content>
				</l:message>
			</xsl:for-each>
		</l:log>
	</xsl:template>

	<xsl:template name="replaceHeaders">
	  <xsl:param name='text'/>

	  <xsl:choose>
	    <xsl:when test='contains($text, "&#xD;")'>
	      <xsl:call-template name='replaceHeaders'>
		<xsl:with-param name='text' select='substring-before($text, "&#xD;")'/>
	      </xsl:call-template>
	      <xsl:call-template name='replaceHeaders'>
		<xsl:with-param name='text' select='substring-after($text, "&#xD;")'/>
	      </xsl:call-template>
	    </xsl:when>
	    <xsl:when test='starts-with($text, "HTTP/1.")'>
	      <xsl:choose>
		<xsl:when test='contains($text, " 200 OK")'>
		  <http:code value="200"><xsl:value-of select='$text'/></http:code>
		</xsl:when>
		<xsl:otherwise>
		  <http:code><xsl:value-of select='$text'/></http:code>
		</xsl:otherwise>
	      </xsl:choose>
	    </xsl:when>
	    <xsl:when test='starts-with($text, "POST ")'>
	      <http:method value="POST"><xsl:value-of select='substring-before(substring-after($text, "POST "), " HTTP")'/></http:method>
	    </xsl:when>
	    <xsl:when test='starts-with($text, "GET ")'>
	      <http:method value="GET"><xsl:value-of select='substring-before(substring-after($text, "POST "), " HTTP")'/></http:method>
	    </xsl:when>
	    <xsl:when test='starts-with($text, "DELETE ")'>
	      <http:method value="DELETE"><xsl:value-of select='substring-before(substring-after($text, "POST "), " HTTP")'/></http:method>
	    </xsl:when>
	    <xsl:when test='contains($text, ": ")'>
	      <xsl:variable name='name'>
		<xsl:value-of select='substring-before(normalize-space($text), ": ")'/>
	      </xsl:variable>
	      <http:header value='{$name}'>
		<xsl:value-of select='substring-after($text, ": ")'/>
	      </http:header>
	    </xsl:when>
	    <xsl:otherwise>
	      <xsl:value-of select='$text' disable-output-escaping="yes"/>
	    </xsl:otherwise>
	  </xsl:choose>

	</xsl:template>

	<!-- http://xsltsl.sourceforge.net/ -->
	<xsl:template name="replaceContent">
		<xsl:param name="text"/>
		<xsl:param name="replace"/>
		<xsl:param name="with"/>
		<xsl:param name="disable-output-escaping">no</xsl:param>
		<xsl:choose>
			<xsl:when test="string-length($replace) = 0 and $disable-output-escaping = 'yes'">
				<xsl:value-of select="$text" disable-output-escaping="yes"/>
			</xsl:when>
			<xsl:when test="string-length($replace) = 0">
				<xsl:value-of select="$text"/>
			</xsl:when>
			<xsl:when test="contains($text, $replace)">
				<xsl:variable name="before" select="substring-before($text, $replace)"/>
				<xsl:variable name="after" select="substring-after($text, $replace)"/>
				<xsl:choose>
					<xsl:when test='$disable-output-escaping = "yes"'>
						<xsl:value-of select="$before" disable-output-escaping="yes"/>
						<xsl:value-of select="$with" disable-output-escaping="yes"/>
					</xsl:when>
					<xsl:otherwise>
						<xsl:value-of select="$before"/>
						<xsl:value-of select="$with"/>
					</xsl:otherwise>
				</xsl:choose>
				<xsl:call-template name="replaceContent">
					<xsl:with-param name="text" select="$after"/>
					<xsl:with-param name="replace" select="$replace"/>
					<xsl:with-param name="with" select="$with"/>
					<xsl:with-param name="disable-output-escaping" select="$disable-output-escaping"/>
				</xsl:call-template>
			</xsl:when>
			<xsl:when test='$disable-output-escaping = "yes"'>
				<xsl:value-of select="$text" disable-output-escaping="yes"/>
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="$text"/>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
</xsl:stylesheet>

Received on Thursday, 19 October 2006 14:42:14 UTC