WSDL - understanding message definitions - wsdl

I am trying to understand the structure of wsdl definitions, looking at the example found here.
I get the service, portType and operation parts, it's at the messages where I have a problem "reading" the specification.
So, just focusing at a single message (multiply), and ignoring the rest, I see a structure like:
<wsdl:definitions..>
<wsdl:types>
<xsd:schema>
<xsd:element name="multiply" type="tns:multiply"/>
<xsd:complexType name="multiply">
...
</xsd:complexType>
</xsd:schema>
</wsdl:types>
...
<wsdl:message name="multiply">
<wsdl:part element="tns:multiply" name="parameters"/>
</wsdl:message>
...
<wsdl:portType>
...
</wsdl:portType>
<wsdl:service>
...
</wsdl:service>
</wsdl:definitions>
Can anyone provide a sentence explaining what multiply is, beginning with: "multiply is a message that's ..." ??
Moreover, could somebody explain how many uses of the name "multiply" we have? I think there are multiple and we seem to avoid clashes through the use of XML namespaces and perhaps different "namespaces" for XML elements and types.

multiply is a message containing a single part, named parameters, consisting of the single element, tns:multiply. That element is of type tns:multiply.
I used XMLspy to fill this example out a bit:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tns="http://new.webservice.namespace" targetNamespace="http://new.webservice.namespace">
<wsdl:types>
<xs:schema targetNamespace="http://new.webservice.namespace" elementFormDefault="qualified">
<xs:complexType name="multiply">
<xs:sequence>
<xs:element name="x" type="xs:int"/>
<xs:element name="y" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<xs:element name="multiply" type="tns:multiply"/>
</xs:schema>
</wsdl:types>
<wsdl:message name="multiply">
<wsdl:part name="parameters" element="tns:multiply"/>
</wsdl:message>
<wsdl:portType name="NewPortType">
<wsdl:operation name="NewOperation">
<wsdl:input message="tns:multiply"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="NewBinding" type="tns:NewPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="NewOperation">
<soap:operation soapAction="urn:#NewOperation"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="NewService">
<wsdl:port name="NewPort" binding="tns:NewBinding">
<soap:address location="No target address"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
This leads to the following SOAP request:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<m:multiply xmlns:m="http://new.webservice.namespace">
<m:x>0</m:x>
<m:y>0</m:y>
</m:multiply>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Related

generate xsd and set fields as required in JAX-WS

The following is an implementation of the specification outlined in the above picture.
#WebService
#SOAPBinding(style = Style.DOCUMENT)
public interface WithdrawService {
#WebMethod
public Response withdraw(
#WebParam(name="CORPCODE") String corpcode,
#WebParam(name="SERVCODE") String servcode,
#WebParam(name="AMOUNT") double amount,
#WebParam(name="CCYID") String ccyid,
#WebParam(name="ACCTNO") String acctno,
#WebParam(name="REFVAL1") String refvel1,
#WebParam(name="REFVAL2") String refval2,
#WebParam(name="TRANREF") String tranref,
#WebParam(name="DESC") String desc,
#WebParam(name="LICENSEID") String licenseid,
#WebParam(name="LICENSEKEY") String licensekey
);
}
The following WSDL is generated when a user accesses the ?wsdl link.
<!-- Published by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.10 svn-revision#919b322c92f13ad085a933e8dd6dd35d4947364b.
-->
<!-- Generated by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.10 svn-revision#919b322c92f13ad085a933e8dd6dd35d4947364b.
-->
<definitions targetNamespace="http://withdraw.kbz.nirvasoft.com/" name="WithdrawServiceImplService">
<types>
<xsd:schema>
<xsd:import namespace="http://withdraw.kbz.nirvasoft.com/" schemaLocation="http://localhost:8080/WithdrawService/withdraw?xsd=1"/>
</xsd:schema>
</types>
<message name="withdraw">
<part name="parameters" element="tns:withdraw"/>
</message>
<message name="withdrawResponse">
<part name="parameters" element="tns:withdrawResponse"/>
</message>
<portType name="WithdrawService">
<operation name="withdraw">
<input wsam:Action="http://withdraw.kbz.nirvasoft.com/WithdrawService/withdrawRequest" message="tns:withdraw"/>
<output wsam:Action="http://withdraw.kbz.nirvasoft.com/WithdrawService/withdrawResponse" message="tns:withdrawResponse"/>
</operation>
</portType>
<binding name="WithdrawServiceImplPortBinding" type="tns:WithdrawService">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="withdraw">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="WithdrawServiceImplService">
<port name="WithdrawServiceImplPort" binding="tns:WithdrawServiceImplPortBinding">
<soap:address location="http://localhost:8080/WithdrawService/withdraw"/>
</port>
</service>
</definitions>
We are unhappy with two things.
We do not get any xsd documents for the types used.
We cannot say whether fields are required in the generated wsdl.
I would like to know how we could achieve them using our code.
You can get your XSD from
http://localhost:8080/WithdrawService/withdraw?xsd=1
Depending on the server you use you can ask JAX-WS to generate embedded XSD file. Alternatively you can ask JAX-WS to use you own WSDL.

Ruby(2.0) & Savon(2) SOAP client - returning nil SOAP operation

I am trying to integrate my rails app with SOAP based web-service.
Being a novice in SOAP, I referred this to get started.
My First step was to create a client using Savon:
client = Savon.client(wsdl: "https://xxxx.xxxx.xxxx/Reg/ABCRegService.svc?wsdl")
Now, when I do client.operations, I get a []
The wsdl looks something like this(I have masked value fields for security)
<wsdl:definitions name="some_name" targetNamespace="some_targetNamespace">
<wsdl:import namespace="some_Namespace1" location="some_nameService.svc?wsdl=wsdl0"/>
<wsdl:types>
<xsd:schema targetNamespace="some_targetNamespaceImports">
<xsd:import schemaLocation="http://example.net/some_name/some_Service.svc?xsd=xsd0" namespace="some_targetNamespace"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="some_name_RegisterTool_InputMessage">
<wsdl:part name="parameters" element="tns:RegisterTool"/>
</wsdl:message>
<wsdl:message name="some_name_RegisterTool_OutputMessage">
<wsdl:part name="parameters" element="tns:RegisterToolResponse"/>
</wsdl:message>
<wsdl:message name="UnregisterToolRequest">
<wsdl:part name="parameters" element="tns:UnregisterToolRequest"/>
</wsdl:message>
<wsdl:message name="UnregisterToolRequest_Headers">
<wsdl:part name="AuthenticationHeader" element="tns:AuthenticationHeader"/>
</wsdl:message>
<wsdl:message name="UnregistrationResult">
<wsdl:part name="parameters" element="tns:UnregistrationResult"/>
</wsdl:message>
<wsdl:portType msc:usingSession="false" name="some_name">
<wsdl:operation name="RegisterTool">
<wsdl:input wsaw:Action="some_targetNamespacesome_name/RegisterTool" message="tns:some_name_RegisterTool_InputMessage"/>
<wsdl:output wsaw:Action="some_targetNamespacesome_name/RegisterToolResponse" message="tns:some_name_RegisterTool_OutputMessage"/>
</wsdl:operation>
<wsdl:operation name="UnregisterTool">
<wsdl:input wsaw:Action="some_targetNamespacesome_name/UnregisterTool" name="UnregisterToolRequest" message="tns:UnregisterToolRequest"/>
<wsdl:output wsaw:Action="some_targetNamespacesome_name/UnregisterToolResponse" name="UnregistrationResult" message="tns:UnregistrationResult"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:service name="some_name">
<wsdl:port name="WSHttpBinding_some_name" binding="i0:WSHttpBinding_some_name">
<soap12:address location="https://example.net/Dcsome_name/some_nameService.svc"/>
<wsa10:EndpointReference>
<wsa10:Address>https://example.net/Dcsome_name/some_nameService.svc</wsa10:Address>
<Identity>
<Dns>localhost</Dns>
</Identity>
</wsa10:EndpointReference>
</wsdl:port>
</wsdl:service>
I looked into similar questions such as this. When I tried creating client in the suggested manner
client = Savon.client(
endpoint: 'proper_endpoint',
soap_action: "proper_soap_action",
namespace: 'proper_namespace',
convert_request_keys_to: :camelcase,
env_namespace: :soapenv
)
,I got:
:in `method_missing': Unknown global option: :soap_action (Savon::UnknownOptionError).
Any Ideas on how to get through this?
Environment:
OS:Windows 7(Installed rails using RailsInstaller)
Ruby version: 2.0.0
Savon: 2
Rails 4.1.8
Update:
I tried hitting the same WSDL from SOAPUI.
To make it work in SOAPUI,
I had to
set WS-Addressing property to true,
Check the checkbox for Add default wsa:to,
Use <![CDATA[]> to pass identifiers parameters.
Any leads on how to set these things in while creating Savon client?
Your process of retrieving operations of the wsdl is perfectly right. I checked the wsdl in 'Soap UI' & it seems like that the WSDL has some error. And this is why you are not getting any operations as the wsdl is not providing any definition.
Error loading [https://xx.xxxx.xxx/DcRegistration/DCRegistrationService.svc?wsdl=wsdl0]: java.io.IOException: Attempted read from closed stream
The issue was due to incorrect parsing of WSDL. In the wasabi gem, lib/parser.rb on line 136, the current XPATH search is:
wsdl:definitions/wsdl:binding/wsdl:operation', 'wsdl' => WSDL
However, the WSDL I am referring has elements organised differently and I had to tweak the above line to:
'wsdl:definitions/wsdl:portType/wsdl:operation', 'wsdl' => WSDL
Here is a link for the same issue in github: https://github.com/savonrb/savon/issues/702

WSDL Client Generation not complete not simple type error?

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:tns="http://schemas.ocbc.com/soa/WSDL/service/CBS-CustAddress-I" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://schemas.ocbc.com/soa/emf/common/envelope/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://schemas.ocbc.com/soa/WSDL/service/CBS-CustAddress-I">
<import namespace="http://schemas.ocbc.com/soa/emf/common/envelope/" location="../Schemas/XML/CBS-CustAddress-I-ServiceEnvelope.xsd"/>
<message name="InputMessage">
<part name="InputMessage" element="ns:ServiceEnvelope"/>
</message>
<message name="OutMessage">
<part name="OutMessage" element="ns:ServiceEnvelope"/>
</message>
<message name="FaultMessage">
<part name="FaultMessage" element="ns:ServiceEnvelope"/>
</message>
<portType name="PortType">
<operation name="Operation">
<input message="tns:InputMessage"/>
<output message="tns:OutMessage"/>
<fault name="fault1" message="tns:FaultMessage"/>
</operation>
</portType>
</definitions>
I'm trying to generate client for above WSDL in Eclipse but I got the following error.
Java 1.7 eclipse kepler to generate the client code for the wsdl
IWAB0399E Error in generating Java from WSDL: java.io.IOException: Error: attribute is of type {http://schemas.ocbc.com/soa/emf/common/envelope/}encodingStyle, which is not a simple type
java.io.IOException: Error: attribute is of type {http://schemas.ocbc.com/soa/emf/common/envelope/}encodingStyle, which is not a simple type
at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.java:1043)
at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.java:1119)
at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.java:1119)
at org.apache.axis.wsdl.symbolTable.SymbolTable.populateTypes(SymbolTable.java:909)
at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:705)
at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.java:1092)
at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.java:1119)
at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.java:1119)
at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.java:1119)
at org.apache.axis.wsdl.symbolTable.SymbolTable.addTypes(SymbolTable.java:1119)
at org.apache.axis.wsdl.symbolTable.SymbolTable.populateTypes(SymbolTable.java:909)
at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:705)
at org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:543)
at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:518)
at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:495)
at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361)
at java.lang.Thread.run(Unknown Source)
CBS-CustAddress-I-ServiceEnvelope.XSD :
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:emf-envelope="http://schemas.ocbc.com/soa/emf/common/envelope/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:emf-header="http://schemas.ocbc.com/soa/emf/common/header"
xmlns:emf-body="http://schemas.ocbc.com/soa/emf/common/body"
xmlns:CBS-CustAddress-I="http://schemas.ocbc.com/soa/emf/service/CBS-CustAddress-I"
targetNamespace="http://schemas.ocbc.com/soa/emf/common/envelope/"
elementFormDefault="unqualified"
attributeFormDefault="unqualified">
<import namespace="http://schemas.ocbc.com/soa/emf/common/header" schemaLocation="../../../../Schemas/XML/CommonHeader.xsd"/>
<import namespace="http://schemas.ocbc.com/soa/emf/common/body" schemaLocation="../../../../Schemas/XML/CommonBody.xsd"/>
<import namespace="http://schemas.ocbc.com/soa/emf/service/CBS-CustAddress-I" schemaLocation="CBS-CustAddress-I.xsd"/>
<attributeGroup name="encodingStyle">
<attribute ref="emf-envelope:encodingStyle"/>
</attributeGroup>
<!-- Envelope, header and body -->
<element name="ServiceEnvelope" type="emf-envelope:ServiceEnvelope"/>
<complexType name="ServiceEnvelope">
<sequence>
<element ref="emf-envelope:ServiceHeader" minOccurs="0"/>
<element ref="emf-envelope:ServiceBody"/>
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<anyAttribute namespace="##other" processContents="lax"/>
</complexType>
<element name="ServiceHeader" type="emf-envelope:ServiceHeader"/>
<complexType name="ServiceHeader">
<sequence>
<element ref="emf-header:CommonDetail"/>
<choice>
<element ref="emf-header:ClientDetail"/>
<element ref="emf-header:ProviderDetail"/>
</choice>
<element ref="emf-header:SecurityDetail" minOccurs="0"/>
</sequence>
</complexType>
<element name="ServiceBody" type="emf-envelope:ServiceBody"/>
<complexType name="ServiceBody">
<choice>
<element ref="CBS-CustAddress-I:RqDetail"/>
<element ref="CBS-CustAddress-I:RsDetail"/>
<element ref="emf-body:Error"/>
</choice>
<anyAttribute namespace="##any" processContents="lax"/>
</complexType>
<element name="CommonDetail" type="emf-envelope:CommonDetail"/>
<complexType name="CommonDetail">
<sequence>
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<anyAttribute namespace="##any" processContents="lax"/>
</complexType>
<!-- Global Attributes. The following attributes are intended to be usable via qualified attribute names on any complex type referencing them. -->
<attribute name="mustUnderstand">
<simpleType>
<restriction base="xs:boolean">
<pattern value="0|1"/>
</restriction>
</simpleType>
</attribute>
<attribute name="actor" type="xs:anyURI"/>
<simpleType name="encodingStyle">
<annotation>
<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</documentation>
</annotation>
<list itemType="xs:anyURI"/>
</simpleType>
<attribute name="encodingStyle" type="emf-envelope:encodingStyle"/>
#vineeth : XSD is attached as requested
I have also included my CBS-CustAddress-I.XSD incase if you want to refer that too.
<?xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema xmlns = "http://schemas.ocbc.com/soa/emf/service/CBS-CustAddress-I"
targetNamespace = "http://schemas.ocbc.com/soa/emf/service/CBS-CustAddress-I"
xmlns:emf-aggregates = "http://schemas.ocbc.com/soa/emf/common/aggregates"
xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
xmlns:emf-elements = "http://schemas.ocbc.com/soa/emf/common/elements"
version = "1.0.01"
elementFormDefault = "qualified">
<xsd:import namespace = "http://schemas.ocbc.com/soa/emf/common/aggregates" schemaLocation = "../../../../Schemas/XML/CommonAggregates.xsd"/>
<xsd:import namespace = "http://schemas.ocbc.com/soa/emf/common/elements" schemaLocation = "../../../../Schemas/XML/CommonElements.xsd"/>
<xsd:element name = "RqDetail">
<xsd:complexType>
<xsd:sequence>
<xsd:sequence>
<xsd:element ref = "emf-elements:PostalCode"/>
</xsd:sequence>
<xsd:element ref = "CountryCode" minOccurs = "0"/>
<xsd:element ref = "emf-aggregates:SelectionDetail" minOccurs = "0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "RsDetail">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref = "emf-aggregates:AddressDetail"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name = "CountryCode" type = "xsd:string"/>
</xsd:schema>
firstly i have concerns over the xsd imports:
<import namespace="http://schemas.ocbc.com/soa/emf/common/header"
schemaLocation="../../../../Schemas/XML/CommonHeader.xsd"/>
<import namespace="http://schemas.ocbc.com/soa/emf/common/body"
schemaLocation="../../../../Schemas/XML/CommonBody.xsd"/>
<import namespace="http://schemas.ocbc.com/soa/emf/service/CBS-CustAddress-I"
schemaLocation="CBS-CustAddress-I.xsd"/>
The Schema locations need to be checked if they refer to proper location or not..to check this it will be ideal to check it via a IDE like JDeveloper. It will give u warnings in case it finds issues. Try to place these schema in the same location as the all the WSDL and XSDs and also similarly change the path.
The error that you see might be because of the below code:
<attributeGroup name="encodingStyle">
<attribute ref="emf-envelope:encodingStyle"/>
</attributeGroup>
It refers to a location to find the definition but fails.
My suggestions are mainly 2:
1) Try to simplify the XSD if possible.
2) Try to use a different IDE than eclipse. I prefer Oracle Jdeveloper as it has simple wizard.
Hope this helps

svcutil doesn't import fault when importing wsdl

when generating a proxy class from a wsdl which I got from a customer, I get the following warning from svcutil:
Warning: Fault named "ContractException" in operation "create" cannot be imported.
Unsupported WSDL, the fault message part must reference an element. This fault message
does not reference an element. If you have edit access to the WSDL document, you can fix
the problem by referencing a schema element using the 'element' attribute.
So, here are the parts from the wsdl in which the ContractException is mentioned
<schema targetNamespace="http://exceptions.webservice"
xmlns="http://www.w3.org/2001/XMLSchema" xmlns:impl="http://webservice"
xmlns:intf="http://webservice"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<complexType name="ContractException">
<sequence>
<element name="message" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
<element name="ContractException" nillable="true" type="tns3:ContractException"/>
</schema>
<wsdl:message name="ContractException">
<wsdl:part name="fault" type="tns3:ContractException"/>
</wsdl:message>
<wsdl:portType name="Contract">
<wsdl:operation name="create" parameterOrder="pApiKey pContractData">
<wsdl:input message="impl:createRequest" name="createRequest"/>
<wsdl:output message="impl:createResponse" name="createResponse"/>
<wsdl:fault message="impl:ContractException" name="ContractException"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:fault name="ContractException">
<wsdlsoap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
name="ContractException" use="encoded"/>
</wsdl:fault>
I cannot find any problems in this wsdl, but hopefully anyone can give me a hint what I have to change so my proxy gets generated successfully.
The wsdl was donwloaded from the webserver, so I can edit my local copy (which I use for generating the proxy class).
Based on the error message displayed, the fault needs to be wrapped inside an element, i.e. -
instead of:
<wsdl:message name="ContractException">
<wsdl:part name="fault" type="tns3:ContractException"/>
</wsdl:message>
you need to do this:
<wsdl:message name="ContractException">
<wsdl:part name="fault" element="tns3:ContractException"/>
</wsdl:message>

biztalk map from unbounded with subelement to unbounded

source XSD structure:
documents (min occurs 1, max occurs 1)
document (min occurs 1, max occurs unbounded)
filename (min occurs 1, max occurs 1)
destination XSD structure:
documents (min occurs 1, max occurs 1)
filename (min occurs 1, max occurs unbounded)
How can this be done in the BizTalk mapper ?
(edit):
The 1st provided solution was my first implementation, but it seems that the Test Map option(right-mouse on the BizTalk map .btm file) in BizTalk sometimes needs an extra compile (I only saved the map and then I tested the map with the Test Map option). Now it works.
In Biztalk 2009 (and presumably also 2006) just connect the "filename" nodes.
Source schema:
<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns="http://source" targetNamespace="http://source" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="documents">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="document">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="filename" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Destination schema:
<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns="http://destination" targetNamespace="http://destination" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="documents">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="filename" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Map:
<?xml version="1.0" encoding="utf-16"?>
<mapsource Name="BizTalk Map" BizTalkServerMapperTool_Version="2.0" Version="2" XRange="100" YRange="420" OmitXmlDeclaration="Yes" TreatElementsAsRecords="No" OptimizeValueMapping="Yes" GenerateDefaultFixedNodes="Yes" PreserveSequenceOrder="No" CopyPIs="No" method="xml" xmlVersion="1.0" IgnoreNamespacesForLinks="Yes">
<SrcTree>
<Reference Location="source.xsd" />
</SrcTree>
<TrgTree>
<Reference Location="destination.xsd" />
</TrgTree>
<ScriptTypePrecedence>
<CSharp Enabled="Yes" />
<ExternalAssembly Enabled="Yes" />
<VbNet Enabled="Yes" />
<JScript Enabled="Yes" />
<XsltCallTemplate Enabled="Yes" />
<Xslt Enabled="Yes" />
</ScriptTypePrecedence>
<TreeValues>
<TestValues />
<ConstantValues />
</TreeValues>
<Pages>
<Page Name="Page 1">
<Links>
<Link LinkID="1" LinkFrom="/*[local-name()='<Schema>']/*[local-name()='documents']/*[local-name()='document']/*[local-name()='filename']" LinkTo="/*[local-name()='<Schema>']/*[local-name()='documents']/*[local-name()='filename']" Label="" />
</Links>
<Functoids />
</Page>
</Pages>

Resources