W3C home > Mailing lists > Public > public-ws-desc-eds@w3.org > March 2006

2002/ws/desc/test-suite/interchange compare-wsdlxml.xslt,NONE,1.1 canonicalize-wsdlxml.xslt,NONE,1.1 wsdlxml.xsd,NONE,1.1

From: Jonathan Marsh via cvs-syncmail <cvsmail@w3.org>
Date: Thu, 30 Mar 2006 18:11:50 +0000
To: public-ws-desc-eds@w3.org
Message-Id: <E1FP1cc-00086J-8I@lionel-hutz.w3.org>

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

Added Files:
	compare-wsdlxml.xslt canonicalize-wsdlxml.xslt wsdlxml.xsd 
Log Message:
Initial check-in.

--- NEW FILE: compare-wsdlxml.xslt ---
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
	<!--
		Stylesheet to compare two WSDL Component Model serialization format (wsdlxml) documents

		Created: March 27, 2006, Jonathan Marsh, Microsoft.  jmarsh@microsoft.com
	-->
	<xsl:param name="aspirant" select="'result-canonical.xml'"/>
	<xsl:param name="archetype" select="'result-canonical1.xml'"/>
	<xsl:template match="/">
		<comparing aspirant="{$aspirant}" archetype="{$archetype}">
			<xsl:call-template name="compare">
				<xsl:with-param name="asp" select="document($aspirant)/*"/>
				<xsl:with-param name="arc" select="document($archetype)/*"/>
			</xsl:call-template>
		</comparing>
	</xsl:template>
	<xsl:template name="compare">
		<xsl:param name="asp"/>
		<xsl:param name="arc"/>
		<xsl:if test="count($asp) + count($arc) != 0">
			<xsl:if test="local-name($asp) != local-name($arc) or namespace-uri($asp) != namespace-uri($arc)">
				<failure>
					<xsl:attribute name="xpath"><xsl:apply-templates mode="xpath" select="."/></xsl:attribute>
					<p>Expected element "<xsl:value-of select="local-name($arc)"/>" in namespace "<xsl:value-of select="namespace-uri($arc)"/>", found element "<xsl:value-of select="local-name($asp)"/>" in namespace "<xsl:value-of select="namespace-uri($asp)"/>".</p>
				</failure>
			</xsl:if>
			<!-- compare attributes -->
			<xsl:if test="count($asp/@*) != count($arc/@*)">
				<failure>
					<xsl:attribute name="xpath"><xsl:apply-templates mode="xpath" select="."/></xsl:attribute>
					<p>Different number of attributes (Expected <xsl:value-of select="count($arc/@*)"/> found <xsl:value-of select="count($asp/@*)"/>).</p>
				</failure>
			</xsl:if>
			<xsl:for-each select="$arc/@*">
				<xsl:variable name="asp-att" select="$asp/@*[local-name(.)=local-name(current()) and namespace-uri(.)=namespace-uri(current())]"/>
				<xsl:if test="not($asp-att)">
					<failure>
						<xsl:attribute name="xpath"><xsl:apply-templates mode="xpath" select="."/></xsl:attribute>
						<p>Attribute "<xsl:value-of select="name(.)"/>" not found.</p>
					</failure>
				</xsl:if>
				<xsl:if test=". != $asp-att">
					<failure>
						<xsl:attribute name="xpath"><xsl:apply-templates mode="xpath" select="."/></xsl:attribute>
						<p>Attribute "<xsl:value-of select="name(.)"/>" value mismatch (found "<xsl:value-of select="$asp-att"/>", expected "<xsl:value-of select="."/>").</p>
					</failure>
				</xsl:if>
			</xsl:for-each>
			<!-- compare values -->
			<xsl:if test="text() and not(*)">
				<xsl:if test="$asp/text() != $arc/text()">
					<failure>
						<xsl:attribute name="xpath"><xsl:apply-templates mode="xpath" select="."/></xsl:attribute>
						<p>Element "<xsl:value-of select="name(.)"/>" value mismatch (found "<xsl:value-of select="$asp/text()"/>", expected "<xsl:value-of select="$arc/text()"/>").</p>
					</failure>
				</xsl:if>
			</xsl:if>
			<!-- compare children -->
			<xsl:if test="count($asp/*) != count($arc/*)">
				<failure>
					<xsl:attribute name="xpath"><xsl:apply-templates mode="xpath" select="."/></xsl:attribute>
					<p>Different number of children (Expected <xsl:value-of select="count($arc/*)"/> found <xsl:value-of select="count($asp/*)"/>).</p>
				</failure>
			</xsl:if>
			<xsl:for-each select="$arc/*">
				<xsl:variable name="p" select="position()"/>
				<xsl:call-template name="compare">
					<xsl:with-param name="asp" select="$asp/*[position()=$p]"/>
					<xsl:with-param name="arc" select="."/>
				</xsl:call-template>
			</xsl:for-each>
		</xsl:if>
	</xsl:template>
	<xsl:template match="*" mode="xpath">
		<xsl:apply-templates select="parent::*" mode="xpath"/>/<xsl:value-of select="name(.)"/>
	</xsl:template>
	<xsl:template match="@*" mode="xpath">
		<xsl:apply-templates select="parent::*" mode="xpath"/>/@<xsl:value-of select="name(.)"/>
	</xsl:template>
</xsl:stylesheet>

--- NEW FILE: wsdlxml.xsd ---
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2002/ws/desc/wsdl/component" targetNamespace="http://www.w3.org/2002/ws/desc/wsdl/component" elementFormDefault="qualified">
	<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
	<xs:complexType name="Component.type" abstract="true">
		<xs:sequence>
			<xs:any namespace="##any" processContents="strict" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute ref="xml:id"/>
		<xs:anyAttribute namespace="##other" processContents="lax"/>
	</xs:complexType>
	<xs:element name="component.description" type="component.description.type"/>
	<xs:complexType name="component.description.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="interfaces" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.interface" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="bindings" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.binding" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="services" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.service" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="element-declarations" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.element-declaration" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="type-definitions" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.type-definition" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="component.interface" type="component.interface.type"/>
	<xs:complexType name="component.interface.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="name" type="xs:string"/>
					<xs:element name="extended-interfaces" minOccurs="0">
						<!-- TBD -->
					</xs:element>
					<xs:element name="interface-faults" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.interface-fault" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="interface-operations" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.interface-operation" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="features" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.feature" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="properties" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.property" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="component.interface-fault" type="component.interface-fault.type"/>
	<xs:complexType name="component.interface-fault.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="name" type="xs:string"/>
					<xs:element name="features" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.feature" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="element-declaration" minOccurs="0">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="properties" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.property" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="parent">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="component.interface-operation" type="component.interface-operation.type"/>
	<xs:complexType name="component.interface-operation.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="name" type="xs:string"/>
					<xs:element name="message-exchange-pattern" type="xs:anyURI"/>
					<xs:element name="interface-message-references" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.interface-message-reference" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="interface-fault-references" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.interface-fault-reference" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="style" minOccurs="0">
						<xs:simpleType>
							<xs:list itemType="xs:anyURI"/>
						</xs:simpleType>
					</xs:element>
					<xs:element name="features" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.feature" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="properties" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.property" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="parent">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="component.interface-message-reference" type="component.interface-message-reference.type"/>
	<xs:complexType name="component.interface-message-reference.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="message-label" type="xs:NCName"/>
					<xs:element name="direction">
						<xs:simpleType>
							<xs:restriction base="xs:token">
								<xs:enumeration value="in"/>
								<xs:enumeration value="out"/>
							</xs:restriction>
						</xs:simpleType>
					</xs:element>
					<xs:element name="message-content-model">
						<xs:simpleType>
							<xs:restriction base="xs:token">
								<xs:enumeration value="#any"/>
								<xs:enumeration value="#none"/>
								<xs:enumeration value="#other"/>
								<xs:enumeration value="#element"/>
							</xs:restriction>
						</xs:simpleType>
					</xs:element>
					<xs:element name="element-declaration" minOccurs="0">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="features" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.feature" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="properties" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.property" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="parent">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="component.interface-fault-reference" type="component.interface-fault-reference.type"/>
	<xs:complexType name="component.interface-fault-reference.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="interface-fault">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="message-label" type="xs:NCName"/>
					<xs:element name="direction">
						<xs:simpleType>
							<xs:restriction base="xs:token">
								<xs:enumeration value="in"/>
								<xs:enumeration value="out"/>
							</xs:restriction>
						</xs:simpleType>
					</xs:element>
					<xs:element name="features" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.feature" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="properties" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.property" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="parent">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="component.feature" type="component.feature.type"/>
	<xs:complexType name="component.feature.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="ref" type="xs:anyURI"/>
					<xs:element name="required" type="xs:boolean"/>
					<xs:element name="parent">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="component.property" type="component.property.type"/>
	<xs:complexType name="component.property.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="ref" type="xs:anyURI"/>
					<xs:element name="value-constraint" minOccurs="0">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="value" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="parent">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="component.binding" type="component.binding.type"/>
	<xs:complexType name="component.binding.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="name" type="xs:string" minOccurs="0"/>
					<xs:element name="interface" minOccurs="0">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="type" type="xs:anyURI"/>
					<xs:element name="binding-faults" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.binding-fault" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="binding-operations" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.binding-operation" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="features" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.feature" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="properties" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.property" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="component.binding-fault" type="component.binding-fault.type"/>
	<xs:complexType name="component.binding-fault.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="interface-fault">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="features" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.feature" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="properties" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.property" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="parent">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="component.binding-operation" type="component.binding-operation.type"/>
	<xs:complexType name="component.binding-operation.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="interface-operation">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="binding-fault-references" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.binding-fault-reference" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="binding-message-references" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.binding-message-reference" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="features" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.feature" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="properties" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.property" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="parent">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="component.binding-message-reference" type="component.binding-message-reference.type"/>
	<xs:complexType name="component.binding-message-reference.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="interface-message-reference">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="features" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.feature" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="properties" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.property" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="parent">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="component.binding-fault-reference" type="component.binding-fault-reference.type"/>
	<xs:complexType name="component.binding-fault-reference.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="interface-message-reference">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="features" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.feature" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="properties" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.property" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="parent">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="component.service" type="component.service.type"/>
	<xs:complexType name="component.service.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="name" type="xs:string"/>
					<xs:element name="interface">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="endpoints">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.endpoint" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="features" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.feature" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="properties" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.property" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="component.endpoint" type="component.endpoint.type"/>
	<xs:complexType name="component.endpoint.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="name" type="xs:string"/>
					<xs:element name="binding">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="address" type="xs:anyURI" minOccurs="0"/>
					<xs:element name="features" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.feature" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="properties" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="component.property" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="parent">
						<xs:complexType>
							<xs:attribute name="ref" type="xs:IDREF"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="component.element-declaration" type="component.element-declaration.type"/>
	<xs:complexType name="component.element-declaration.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="name" type="xs:string"/>
					<xs:element name="system" type="xs:anyURI"/>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="component.type-definition" type="component.type-definition.type"/>
	<xs:complexType name="component.type-definition.type">
		<xs:complexContent>
			<xs:restriction base="Component.type">
				<xs:sequence>
					<xs:element name="name" type="xs:string"/>
					<xs:element name="system" type="xs:anyURI"/>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
</xs:schema>

--- NEW FILE: canonicalize-wsdlxml.xslt ---
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
	
	<!--
		Stylesheet to canonicalize the WSDL Component Model serialization format (wsdlxml)
			- canonicalizes xml:id and @ref attributes
		Created: March 27, 2006, Jonathan Marsh, Microsoft.  jmarsh@microsoft.com
	-->

	<xsl:template match="*">
		<xsl:copy>
			<xsl:apply-templates select="@*"/>
			<xsl:apply-templates/>
		</xsl:copy>
	</xsl:template>
	<xsl:template match="@*">
		<xsl:copy-of select="."/>
	</xsl:template>
	<xsl:template match="comment()">
		<xsl:copy-of select="."/>
	</xsl:template>
	<xsl:template match="@xml:id">
		<xsl:attribute name="xml:id">c<xsl:value-of select="count(ancestor::*[@xml:id] | preceding::*[@xml:id])"/></xsl:attribute>
	</xsl:template>
	<xsl:template match="@ref">
		<xsl:for-each select="//*/@xml:id[.=current()]">
			<xsl:attribute name="ref">c<xsl:value-of select="count(ancestor::*[@xml:id] | preceding::*[@xml:id])"/></xsl:attribute>
		</xsl:for-each>
	</xsl:template>
</xsl:stylesheet>
Received on Thursday, 30 March 2006 18:11:54 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 30 March 2006 18:11:55 GMT