| File: FrameworkFork\System.ServiceModel\System\ServiceModel\Description\MessageContractExporter.cs | Web Access |
| Project: src\src\dotnet-svcutil\lib\src\dotnet-svcutil-lib.csproj (dotnet-svcutil-lib) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. namespace System.ServiceModel.Description { using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.IO; using System.Reflection; using System.Runtime; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Dispatcher; using Microsoft.Xml; using Microsoft.Xml.Schema; using Microsoft.Xml.Serialization; using WsdlNS = System.Web.Services.Description; internal static class StockSchemas { internal static XmlSchema CreateWsdl() { return XmlSchema.Read(new StringReader(wsdl), null); } internal static XmlSchema CreateSoap() { return XmlSchema.Read(new StringReader(soap), null); } internal static XmlSchema CreateSoapEncoding() { return XmlSchema.Read(new StringReader(soapEncoding), null); } internal static XmlSchema CreateFakeSoapEncoding() { return XmlSchema.Read(new StringReader(fakeSoapEncoding), null); } internal static XmlSchema CreateFakeXsdSchema() { return XmlSchema.Read(new StringReader(fakeXsd), null); } internal static XmlSchema CreateFakeXmlSchema() { return XmlSchema.Read(new StringReader(fakeXmlSchema), null); } internal static bool IsKnownSchema(string ns) { return ns == XmlSchema.Namespace || ns == "http://schemas.xmlsoap.org/wsdl/soap/" || ns == "http://schemas.xmlsoap.org/soap/encoding/"; } internal const string WsdlNamespace = "http://schemas.xmlsoap.org/wsdl/"; internal const string SoapNamespace = "http://schemas.xmlsoap.org/wsdl/soap/"; internal const string SoapEncodingNamespace = "http://schemas.xmlsoap.org/soap/encoding/"; private const string wsdl = @"<?xml version='1.0' encoding='UTF-8' ?> <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/' targetNamespace='http://schemas.xmlsoap.org/wsdl/' elementFormDefault='qualified' > <xs:complexType mixed='true' name='tDocumentation' > <xs:sequence> <xs:any minOccurs='0' maxOccurs='unbounded' processContents='lax' /> </xs:sequence> </xs:complexType> <xs:complexType name='tDocumented' > <xs:annotation> <xs:documentation> This type is extended by component types to allow them to be documented </xs:documentation> </xs:annotation> <xs:sequence> <xs:element name='documentation' type='wsdl:tDocumentation' minOccurs='0' /> </xs:sequence> </xs:complexType> <!-- allow extensibility via elements and attributes on all elements swa124 --> <xs:complexType name='tExtensibleAttributesDocumented' abstract='true' > <xs:complexContent> <xs:extension base='wsdl:tDocumented' > <xs:annotation> <xs:documentation> This type is extended by component types to allow attributes from other namespaces to be added. </xs:documentation> </xs:annotation> <xs:sequence> <xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded' processContents='lax' /> </xs:sequence> <xs:anyAttribute namespace='##other' processContents='lax' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name='tExtensibleDocumented' abstract='true' > <xs:complexContent> <xs:extension base='wsdl:tDocumented' > <xs:annotation> <xs:documentation> This type is extended by component types to allow elements from other namespaces to be added. </xs:documentation> </xs:annotation> <xs:sequence> <xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded' processContents='lax' /> </xs:sequence> <xs:anyAttribute namespace='##other' processContents='lax' /> </xs:extension> </xs:complexContent> </xs:complexType> <!-- original wsdl removed as part of swa124 resolution <xs:complexType name='tExtensibleAttributesDocumented' abstract='true' > <xs:complexContent> <xs:extension base='wsdl:tDocumented' > <xs:annotation> <xs:documentation> This type is extended by component types to allow attributes from other namespaces to be added. </xs:documentation> </xs:annotation> <xs:anyAttribute namespace='##other' processContents='lax' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name='tExtensibleDocumented' abstract='true' > <xs:complexContent> <xs:extension base='wsdl:tDocumented' > <xs:annotation> <xs:documentation> This type is extended by component types to allow elements from other namespaces to be added. </xs:documentation> </xs:annotation> <xs:sequence> <xs:any namespace='##other' minOccurs='0' maxOccurs='unbounded' processContents='lax' /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> --> <xs:element name='definitions' type='wsdl:tDefinitions' > <xs:key name='message' > <xs:selector xpath='wsdl:message' /> <xs:field xpath='@name' /> </xs:key> <xs:key name='portType' > <xs:selector xpath='wsdl:portType' /> <xs:field xpath='@name' /> </xs:key> <xs:key name='binding' > <xs:selector xpath='wsdl:binding' /> <xs:field xpath='@name' /> </xs:key> <xs:key name='service' > <xs:selector xpath='wsdl:service' /> <xs:field xpath='@name' /> </xs:key> <xs:key name='import' > <xs:selector xpath='wsdl:import' /> <xs:field xpath='@namespace' /> </xs:key> </xs:element> <xs:group name='anyTopLevelOptionalElement' > <xs:annotation> <xs:documentation> Any top level optional element allowed to appear more then once - any child of definitions element except wsdl:types. Any extensibility element is allowed in any place. </xs:documentation> </xs:annotation> <xs:choice> <xs:element name='import' type='wsdl:tImport' /> <xs:element name='types' type='wsdl:tTypes' /> <xs:element name='message' type='wsdl:tMessage' > <xs:unique name='part' > <xs:selector xpath='wsdl:part' /> <xs:field xpath='@name' /> </xs:unique> </xs:element> <xs:element name='portType' type='wsdl:tPortType' /> <xs:element name='binding' type='wsdl:tBinding' /> <xs:element name='service' type='wsdl:tService' > <xs:unique name='port' > <xs:selector xpath='wsdl:port' /> <xs:field xpath='@name' /> </xs:unique> </xs:element> </xs:choice> </xs:group> <xs:complexType name='tDefinitions' > <xs:complexContent> <xs:extension base='wsdl:tExtensibleDocumented' > <xs:sequence> <xs:group ref='wsdl:anyTopLevelOptionalElement' minOccurs='0' maxOccurs='unbounded' /> </xs:sequence> <xs:attribute name='targetNamespace' type='xs:anyURI' use='optional' /> <xs:attribute name='name' type='xs:NCName' use='optional' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name='tImport' > <xs:complexContent> <xs:extension base='wsdl:tExtensibleAttributesDocumented' > <xs:attribute name='namespace' type='xs:anyURI' use='required' /> <xs:attribute name='location' type='xs:anyURI' use='required' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name='tTypes' > <xs:complexContent> <xs:extension base='wsdl:tExtensibleDocumented' /> </xs:complexContent> </xs:complexType> <xs:complexType name='tMessage' > <xs:complexContent> <xs:extension base='wsdl:tExtensibleDocumented' > <xs:sequence> <xs:element name='part' type='wsdl:tPart' minOccurs='0' maxOccurs='unbounded' /> </xs:sequence> <xs:attribute name='name' type='xs:NCName' use='required' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name='tPart' > <xs:complexContent> <xs:extension base='wsdl:tExtensibleAttributesDocumented' > <xs:attribute name='name' type='xs:NCName' use='required' /> <xs:attribute name='element' type='xs:QName' use='optional' /> <xs:attribute name='type' type='xs:QName' use='optional' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name='tPortType' > <xs:complexContent> <xs:extension base='wsdl:tExtensibleAttributesDocumented' > <xs:sequence> <xs:element name='operation' type='wsdl:tOperation' minOccurs='0' maxOccurs='unbounded' /> </xs:sequence> <xs:attribute name='name' type='xs:NCName' use='required' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name='tOperation' > <xs:complexContent> <xs:extension base='wsdl:tExtensibleDocumented' > <xs:sequence> <xs:choice> <xs:group ref='wsdl:request-response-or-one-way-operation' /> <xs:group ref='wsdl:solicit-response-or-notification-operation' /> </xs:choice> </xs:sequence> <xs:attribute name='name' type='xs:NCName' use='required' /> <xs:attribute name='parameterOrder' type='xs:NMTOKENS' use='optional' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:group name='request-response-or-one-way-operation' > <xs:sequence> <xs:element name='input' type='wsdl:tParam' /> <xs:sequence minOccurs='0' > <xs:element name='output' type='wsdl:tParam' /> <xs:element name='fault' type='wsdl:tFault' minOccurs='0' maxOccurs='unbounded' /> </xs:sequence> </xs:sequence> </xs:group> <xs:group name='solicit-response-or-notification-operation' > <xs:sequence> <xs:element name='output' type='wsdl:tParam' /> <xs:sequence minOccurs='0' > <xs:element name='input' type='wsdl:tParam' /> <xs:element name='fault' type='wsdl:tFault' minOccurs='0' maxOccurs='unbounded' /> </xs:sequence> </xs:sequence> </xs:group> <xs:complexType name='tParam' > <xs:complexContent> <xs:extension base='wsdl:tExtensibleAttributesDocumented' > <xs:attribute name='name' type='xs:NCName' use='optional' /> <xs:attribute name='message' type='xs:QName' use='required' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name='tFault' > <xs:complexContent> <xs:extension base='wsdl:tExtensibleAttributesDocumented' > <xs:attribute name='name' type='xs:NCName' use='required' /> <xs:attribute name='message' type='xs:QName' use='required' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name='tBinding' > <xs:complexContent> <xs:extension base='wsdl:tExtensibleDocumented' > <xs:sequence> <xs:element name='operation' type='wsdl:tBindingOperation' minOccurs='0' maxOccurs='unbounded' /> </xs:sequence> <xs:attribute name='name' type='xs:NCName' use='required' /> <xs:attribute name='type' type='xs:QName' use='required' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name='tBindingOperationMessage' > <xs:complexContent> <xs:extension base='wsdl:tExtensibleDocumented' > <xs:attribute name='name' type='xs:NCName' use='optional' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name='tBindingOperationFault' > <xs:complexContent> <xs:extension base='wsdl:tExtensibleDocumented' > <xs:attribute name='name' type='xs:NCName' use='required' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name='tBindingOperation' > <xs:complexContent> <xs:extension base='wsdl:tExtensibleDocumented' > <xs:sequence> <xs:element name='input' type='wsdl:tBindingOperationMessage' minOccurs='0' /> <xs:element name='output' type='wsdl:tBindingOperationMessage' minOccurs='0' /> <xs:element name='fault' type='wsdl:tBindingOperationFault' minOccurs='0' maxOccurs='unbounded' /> </xs:sequence> <xs:attribute name='name' type='xs:NCName' use='required' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name='tService' > <xs:complexContent> <xs:extension base='wsdl:tExtensibleDocumented' > <xs:sequence> <xs:element name='port' type='wsdl:tPort' minOccurs='0' maxOccurs='unbounded' /> </xs:sequence> <xs:attribute name='name' type='xs:NCName' use='required' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name='tPort' > <xs:complexContent> <xs:extension base='wsdl:tExtensibleDocumented' > <xs:attribute name='name' type='xs:NCName' use='required' /> <xs:attribute name='binding' type='xs:QName' use='required' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:attribute name='arrayType' type='xs:string' /> <xs:attribute name='required' type='xs:boolean' /> <xs:complexType name='tExtensibilityElement' abstract='true' > <xs:attribute ref='wsdl:required' use='optional' /> </xs:complexType> </xs:schema>"; private const string soap = @"<?xml version='1.0' encoding='UTF-8' ?> <xs:schema xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/' targetNamespace='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:xs='http://www.w3.org/2001/XMLSchema'> <xs:import namespace='http://schemas.xmlsoap.org/wsdl/' /> <xs:simpleType name='encodingStyle'> <xs:annotation> <xs:documentation> 'encodingStyle' indicates any canonicalization conventions followed in the contents of the containing element. For example, the value 'http://schemas.xmlsoap.org/soap/encoding/' indicates the pattern described in SOAP specification </xs:documentation> </xs:annotation> <xs:list itemType='xs:anyURI' /> </xs:simpleType> <xs:element name='binding' type='soap:tBinding' /> <xs:complexType name='tBinding'> <xs:complexContent mixed='false'> <xs:extension base='wsdl:tExtensibilityElement'> <xs:attribute name='transport' type='xs:anyURI' use='required' /> <xs:attribute name='style' type='soap:tStyleChoice' use='optional' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:simpleType name='tStyleChoice'> <xs:restriction base='xs:string'> <xs:enumeration value='rpc' /> <xs:enumeration value='document' /> </xs:restriction> </xs:simpleType> <xs:element name='operation' type='soap:tOperation' /> <xs:complexType name='tOperation'> <xs:complexContent mixed='false'> <xs:extension base='wsdl:tExtensibilityElement'> <xs:attribute name='soapAction' type='xs:anyURI' use='optional' /> <xs:attribute name='style' type='soap:tStyleChoice' use='optional' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:element name='body' type='soap:tBody' /> <xs:attributeGroup name='tBodyAttributes'> <xs:attribute name='encodingStyle' type='soap:encodingStyle' use='optional' /> <xs:attribute name='use' type='soap:useChoice' use='optional' /> <xs:attribute name='namespace' type='xs:anyURI' use='optional' /> </xs:attributeGroup> <xs:complexType name='tBody'> <xs:complexContent mixed='false'> <xs:extension base='wsdl:tExtensibilityElement'> <xs:attribute name='parts' type='xs:NMTOKENS' use='optional' /> <xs:attributeGroup ref='soap:tBodyAttributes' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:simpleType name='useChoice'> <xs:restriction base='xs:string'> <xs:enumeration value='literal' /> <xs:enumeration value='encoded' /> </xs:restriction> </xs:simpleType> <xs:element name='fault' type='soap:tFault' /> <xs:complexType name='tFaultRes' abstract='true'> <xs:complexContent mixed='false'> <xs:restriction base='soap:tBody'> <xs:attribute ref='wsdl:required' use='optional' /> <xs:attribute name='parts' type='xs:NMTOKENS' use='prohibited' /> <xs:attributeGroup ref='soap:tBodyAttributes' /> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name='tFault'> <xs:complexContent mixed='false'> <xs:extension base='soap:tFaultRes'> <xs:attribute name='name' type='xs:NCName' use='required' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:element name='header' type='soap:tHeader' /> <xs:attributeGroup name='tHeaderAttributes'> <xs:attribute name='message' type='xs:QName' use='required' /> <xs:attribute name='part' type='xs:NMTOKEN' use='required' /> <xs:attribute name='use' type='soap:useChoice' use='required' /> <xs:attribute name='encodingStyle' type='soap:encodingStyle' use='optional' /> <xs:attribute name='namespace' type='xs:anyURI' use='optional' /> </xs:attributeGroup> <xs:complexType name='tHeader'> <xs:complexContent mixed='false'> <xs:extension base='wsdl:tExtensibilityElement'> <xs:sequence> <xs:element minOccurs='0' maxOccurs='unbounded' ref='soap:headerfault' /> </xs:sequence> <xs:attributeGroup ref='soap:tHeaderAttributes' /> </xs:extension> </xs:complexContent> </xs:complexType> <xs:element name='headerfault' type='soap:tHeaderFault' /> <xs:complexType name='tHeaderFault'> <xs:attributeGroup ref='soap:tHeaderAttributes' /> </xs:complexType> <xs:element name='address' type='soap:tAddress' /> <xs:complexType name='tAddress'> <xs:complexContent mixed='false'> <xs:extension base='wsdl:tExtensibilityElement'> <xs:attribute name='location' type='xs:anyURI' use='required' /> </xs:extension> </xs:complexContent> </xs:complexType> </xs:schema>"; private const string soapEncoding = @"<?xml version='1.0' encoding='UTF-8' ?> <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:tns='http://schemas.xmlsoap.org/soap/encoding/' targetNamespace='http://schemas.xmlsoap.org/soap/encoding/' > <xs:attribute name='root' > <xs:simpleType> <xs:restriction base='xs:boolean'> <xs:pattern value='0|1' /> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attributeGroup name='commonAttributes' > <xs:attribute name='id' type='xs:ID' /> <xs:attribute name='href' type='xs:anyURI' /> <xs:anyAttribute namespace='##other' processContents='lax' /> </xs:attributeGroup> <xs:simpleType name='arrayCoordinate' > <xs:restriction base='xs:string' /> </xs:simpleType> <xs:attribute name='arrayType' type='xs:string' /> <xs:attribute name='offset' type='tns:arrayCoordinate' /> <xs:attributeGroup name='arrayAttributes' > <xs:attribute ref='tns:arrayType' /> <xs:attribute ref='tns:offset' /> </xs:attributeGroup> <xs:attribute name='position' type='tns:arrayCoordinate' /> <xs:attributeGroup name='arrayMemberAttributes' > <xs:attribute ref='tns:position' /> </xs:attributeGroup> <xs:group name='Array' > <xs:sequence> <xs:any namespace='##any' minOccurs='0' maxOccurs='unbounded' processContents='lax' /> </xs:sequence> </xs:group> <xs:element name='Array' type='tns:Array' /> <xs:complexType name='Array' > <xs:group ref='tns:Array' minOccurs='0' /> <xs:attributeGroup ref='tns:arrayAttributes' /> <xs:attributeGroup ref='tns:commonAttributes' /> </xs:complexType> <xs:element name='Struct' type='tns:Struct' /> <xs:group name='Struct' > <xs:sequence> <xs:any namespace='##any' minOccurs='0' maxOccurs='unbounded' processContents='lax' /> </xs:sequence> </xs:group> <xs:complexType name='Struct' > <xs:group ref='tns:Struct' minOccurs='0' /> <xs:attributeGroup ref='tns:commonAttributes'/> </xs:complexType> <xs:simpleType name='base64' > <xs:restriction base='xs:base64Binary' /> </xs:simpleType> <xs:element name='duration' type='tns:duration' /> <xs:complexType name='duration' > <xs:simpleContent> <xs:extension base='xs:duration' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='dateTime' type='tns:dateTime' /> <xs:complexType name='dateTime' > <xs:simpleContent> <xs:extension base='xs:dateTime' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='NOTATION' type='tns:NOTATION' /> <xs:complexType name='NOTATION' > <xs:simpleContent> <xs:extension base='xs:QName' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='time' type='tns:time' /> <xs:complexType name='time' > <xs:simpleContent> <xs:extension base='xs:time' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='date' type='tns:date' /> <xs:complexType name='date' > <xs:simpleContent> <xs:extension base='xs:date' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='gYearMonth' type='tns:gYearMonth' /> <xs:complexType name='gYearMonth' > <xs:simpleContent> <xs:extension base='xs:gYearMonth' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='gYear' type='tns:gYear' /> <xs:complexType name='gYear' > <xs:simpleContent> <xs:extension base='xs:gYear' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='gMonthDay' type='tns:gMonthDay' /> <xs:complexType name='gMonthDay' > <xs:simpleContent> <xs:extension base='xs:gMonthDay' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='gDay' type='tns:gDay' /> <xs:complexType name='gDay' > <xs:simpleContent> <xs:extension base='xs:gDay' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='gMonth' type='tns:gMonth' /> <xs:complexType name='gMonth' > <xs:simpleContent> <xs:extension base='xs:gMonth' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='boolean' type='tns:boolean' /> <xs:complexType name='boolean' > <xs:simpleContent> <xs:extension base='xs:boolean' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='base64Binary' type='tns:base64Binary' /> <xs:complexType name='base64Binary' > <xs:simpleContent> <xs:extension base='xs:base64Binary' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='hexBinary' type='tns:hexBinary' /> <xs:complexType name='hexBinary' > <xs:simpleContent> <xs:extension base='xs:hexBinary' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='float' type='tns:float' /> <xs:complexType name='float' > <xs:simpleContent> <xs:extension base='xs:float' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='double' type='tns:double' /> <xs:complexType name='double' > <xs:simpleContent> <xs:extension base='xs:double' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='anyURI' type='tns:anyURI' /> <xs:complexType name='anyURI' > <xs:simpleContent> <xs:extension base='xs:anyURI' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='QName' type='tns:QName' /> <xs:complexType name='QName' > <xs:simpleContent> <xs:extension base='xs:QName' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='string' type='tns:string' /> <xs:complexType name='string' > <xs:simpleContent> <xs:extension base='xs:string' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='normalizedString' type='tns:normalizedString' /> <xs:complexType name='normalizedString' > <xs:simpleContent> <xs:extension base='xs:normalizedString' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='token' type='tns:token' /> <xs:complexType name='token' > <xs:simpleContent> <xs:extension base='xs:token' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='language' type='tns:language' /> <xs:complexType name='language' > <xs:simpleContent> <xs:extension base='xs:language' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='Name' type='tns:Name' /> <xs:complexType name='Name' > <xs:simpleContent> <xs:extension base='xs:Name' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='NMTOKEN' type='tns:NMTOKEN' /> <xs:complexType name='NMTOKEN' > <xs:simpleContent> <xs:extension base='xs:NMTOKEN' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='NCName' type='tns:NCName' /> <xs:complexType name='NCName' > <xs:simpleContent> <xs:extension base='xs:NCName' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='NMTOKENS' type='tns:NMTOKENS' /> <xs:complexType name='NMTOKENS' > <xs:simpleContent> <xs:extension base='xs:NMTOKENS' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='ID' type='tns:ID' /> <xs:complexType name='ID' > <xs:simpleContent> <xs:extension base='xs:ID' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='IDREF' type='tns:IDREF' /> <xs:complexType name='IDREF' > <xs:simpleContent> <xs:extension base='xs:IDREF' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='ENTITY' type='tns:ENTITY' /> <xs:complexType name='ENTITY' > <xs:simpleContent> <xs:extension base='xs:ENTITY' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='IDREFS' type='tns:IDREFS' /> <xs:complexType name='IDREFS' > <xs:simpleContent> <xs:extension base='xs:IDREFS' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='ENTITIES' type='tns:ENTITIES' /> <xs:complexType name='ENTITIES' > <xs:simpleContent> <xs:extension base='xs:ENTITIES' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='decimal' type='tns:decimal' /> <xs:complexType name='decimal' > <xs:simpleContent> <xs:extension base='xs:decimal' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='integer' type='tns:integer' /> <xs:complexType name='integer' > <xs:simpleContent> <xs:extension base='xs:integer' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='nonPositiveInteger' type='tns:nonPositiveInteger' /> <xs:complexType name='nonPositiveInteger' > <xs:simpleContent> <xs:extension base='xs:nonPositiveInteger' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='negativeInteger' type='tns:negativeInteger' /> <xs:complexType name='negativeInteger' > <xs:simpleContent> <xs:extension base='xs:negativeInteger' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='long' type='tns:long' /> <xs:complexType name='long' > <xs:simpleContent> <xs:extension base='xs:long' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='int' type='tns:int' /> <xs:complexType name='int' > <xs:simpleContent> <xs:extension base='xs:int' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='short' type='tns:short' /> <xs:complexType name='short' > <xs:simpleContent> <xs:extension base='xs:short' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='byte' type='tns:byte' /> <xs:complexType name='byte' > <xs:simpleContent> <xs:extension base='xs:byte' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='nonNegativeInteger' type='tns:nonNegativeInteger' /> <xs:complexType name='nonNegativeInteger' > <xs:simpleContent> <xs:extension base='xs:nonNegativeInteger' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='unsignedLong' type='tns:unsignedLong' /> <xs:complexType name='unsignedLong' > <xs:simpleContent> <xs:extension base='xs:unsignedLong' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='unsignedInt' type='tns:unsignedInt' /> <xs:complexType name='unsignedInt' > <xs:simpleContent> <xs:extension base='xs:unsignedInt' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='unsignedShort' type='tns:unsignedShort' /> <xs:complexType name='unsignedShort' > <xs:simpleContent> <xs:extension base='xs:unsignedShort' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='unsignedByte' type='tns:unsignedByte' /> <xs:complexType name='unsignedByte' > <xs:simpleContent> <xs:extension base='xs:unsignedByte' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='positiveInteger' type='tns:positiveInteger' /> <xs:complexType name='positiveInteger' > <xs:simpleContent> <xs:extension base='xs:positiveInteger' > <xs:attributeGroup ref='tns:commonAttributes' /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name='anyType' /> </xs:schema>"; private const string fakeXsd = @"<?xml version='1.0' encoding='UTF-8' ?> <xsd:schema targetNamespace=""http://www.w3.org/2001/XMLSchema"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema""> <xsd:element name=""schema""> <xsd:complexType /> </xsd:element> </xsd:schema>"; private const string fakeXmlSchema = @"<xs:schema targetNamespace='http://www.w3.org/XML/1998/namespace' xmlns:xs='http://www.w3.org/2001/XMLSchema' xml:lang='en'> <xs:attribute name='lang' type='xs:language'/> <xs:attribute name='space'> <xs:simpleType> <xs:restriction base='xs:NCName'> <xs:enumeration value='default'/> <xs:enumeration value='preserve'/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name='base' type='xs:anyURI'/> <xs:attribute name='id' type='xs:ID' /> <xs:attributeGroup name='specialAttrs'> <xs:attribute ref='xml:base'/> <xs:attribute ref='xml:lang'/> <xs:attribute ref='xml:space'/> </xs:attributeGroup> </xs:schema>"; private const string fakeSoapEncoding = @"<?xml version='1.0' encoding='UTF-8' ?> <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:tns='http://schemas.xmlsoap.org/soap/encoding/' targetNamespace='http://schemas.xmlsoap.org/soap/encoding/' > <xs:attributeGroup name='commonAttributes' > <xs:attribute name='id' type='xs:ID' /> <xs:attribute name='href' type='xs:anyURI' /> <xs:anyAttribute namespace='##other' processContents='lax' /> </xs:attributeGroup> <xs:simpleType name='arrayCoordinate' > <xs:restriction base='xs:string' /> </xs:simpleType> <xs:attribute name='arrayType' type='xs:string' /> <xs:attribute name='offset' type='tns:arrayCoordinate' /> <xs:attributeGroup name='arrayAttributes' > <xs:attribute ref='tns:arrayType' /> <xs:attribute ref='tns:offset' /> </xs:attributeGroup> <xs:group name='Array' > <xs:sequence> <xs:any namespace='##any' minOccurs='0' maxOccurs='unbounded' processContents='lax' /> </xs:sequence> </xs:group> <xs:element name='Array' type='tns:Array' /> <xs:complexType name='Array' > <xs:group ref='tns:Array' minOccurs='0' /> <xs:attributeGroup ref='tns:arrayAttributes' /> <xs:attributeGroup ref='tns:commonAttributes' /> </xs:complexType> </xs:schema>"; } }