Home | TVS papers

Consuming Web services with Microsoft .NET

Part of BookMARC TVS papers

The new Microsoft development platform has a simple and straightforward way to consume webservices.

In the next steps we will see how this is done:

  1. Start by opening Visual Studio .NET
  2. Create a Windows Application Project
  3. Under the Solution Explorer right-click on the solution name and choose Add Web Reference
  4. Type the address where the web service is located: http://sirius.bn.pt
  5. We can choose the option View Contract to look at the web service description
    Adding a web reference
  6. Add the web reference
  7. Add controls to the form, to get user input and display the results, and code to execute the services
  8. See the services description bellow for some code examples

Monitoring

Visual Studio .NET doesn't includes a TCP monitor. The Axis monitor can be used instead or you can download the Microsoft SOAP Toolkit from http://msdn.microsoft.com and use its Trace Utility.

If you're going to use the Axis monitor see Axis Monitoring.

Using the Microsoft SOAP Toolkit Trace Utility

  1. Execute the Trace Utility
  2. Add a new Formated Trace
  3. In the Trace Setup add the following values:
    1. Local port # - select a local port to be monitored (example: 9090)
    2. Destination host - sirius.bn.pt
    3. Destination port - 80
    4. Click Ok
  4. The monitor is ready, now we have to make a small change to the generated code:
    1. Open the Reference.vb file which is located in the project directory under Web References\pt.sirius.bn and change the Me.Url variable value to: http://localhost:9090/sirius/sirius2.exe
    2. Now we can see the SOAP request and the service SOAP response

Get Record by ISBN

Input parameters
  • isbn - String
Output parameters
  • marcXML - MarcXML object

Sample code


 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click    ' create a new web service    Dim service As pt.bn.sirius.GetRecordService    service = New pt.bn.sirius.GetRecordService()      ' create a MarcXML object to store the results of the service    Dim record As pt.bn.sirius.MarcXML    record = New pt.bn.sirius.MarcXML()      ' invoke the service with an ISBN    record = service.getRecordByISBN(TextBox1.Text)      Dim Idx As Integer    Dim fStr As String      ' store the content of all fields from the MarcXML    For Idx = 0 To record.fields.Length - 1    fStr = fStr & record.fields(Idx).tag & ": " & record.fields(Idx).content & vbCrLf    Next      ' display the MarcXML    TextBox2.Text = fStr  End Sub 

SOAP Call


 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"             xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"             xmlns:tns="http://giotto/sirius/sirius.exe/GetRecordService.wsdl"             xmlns:types="http://giotto/sirius/sirius.exe/GetRecordService.wsdl/encodedTypes"             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"             xmlns:xsd="http://www.w3.org/2001/XMLSchema">    <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">      <q1:getRecordByISBN xmlns:q1="getRecordByISBN">      <isbn xsi:type="xsd:string">3-598-11211-4</isbn>      </q1:getRecordByISBN>    </soap:Body>  </soap:Envelope>                

SOAP Answer


 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">    <SOAP-ENV:Header>      <s:session xmlns:s="http://sirius.bookmarc.pt/soap-ns">      <id>E03933B9-B99E-4647-8C7A-47EE7D89FE60</id>      <user/>      </s:session>    </SOAP-ENV:Header>    <SOAP-ENV:Body>      <methodns:getRecordByISBNResponse xmlns:methodns="getRecordByISBN">      <marcXML xsi:type="typens:MarcXML" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"       xmlns:xsd="http://www.w3.org/2001/XMLSchema"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:typens="http://sirius.bookmarc.pt/soap-ns">        <leader xsi:type="typens:LeaderXML">          <content xsi:type="xsd:string"><![CDATA[00626nam 5  002055  45  ]]></content>          <bibliographicLevel xsi:type="xsd:string"><![CDATA[m]]></bibliographicLevel>          <cataloguingForm xsi:type="xsd:string"><![CDATA[ ]]></cataloguingForm>          <encodingLevel xsi:type="xsd:string"><![CDATA[5]]></encodingLevel>          <hierarchicalLevelCode xsi:type="xsd:string"><![CDATA[ ]]></hierarchicalLevelCode>          <recordStatus xsi:type="xsd:string"><![CDATA[n]]></recordStatus>          <recordType xsi:type="xsd:string"><![CDATA[a]]></recordType>        </leader>        <fields xsi:type="typens:ArrayOf_FieldXML" SOAP-ENC:arrayType="typens:FieldXML[15]" xmlns:marcns="urn:Marc">          <field>          <tag xsi:type="xsd:string">001</tag>          <content xsi:type="xsd:string"><![CDATA[667855]]></content>          <indicator1 xsi:type="xsd:string"><![CDATA[]]></indicator1>          <indicator2 xsi:type="xsd:string"><![CDATA[]]></indicator2>          <occ xsi:type="xsd:int">1</occ>          <pos xsi:type="xsd:int">0</pos>          <subfields xsi:nil="true"/>          </field>          <field>          <tag xsi:type="xsd:string">005</tag>          <content xsi:type="xsd:string"><![CDATA[19990106000000.0]]></content>          <indicator1 xsi:type="xsd:string"><![CDATA[]]></indicator1>          <indicator2 xsi:type="xsd:string"><![CDATA[]]></indicator2>          <occ xsi:type="xsd:int">1</occ>          <pos xsi:type="xsd:int">1</pos>          <subfields xsi:nil="true"/>          </field>          <field>          <tag xsi:type="xsd:string">010</tag>          <content xsi:type="xsd:string"><![CDATA[  ^a3-598-11211-4]]></content>          <indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>          <indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>          <occ xsi:type="xsd:int">1</occ>          <pos xsi:type="xsd:int">2</pos>          <subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[1]">            <subfield>              <tag xsi:type="xsd:string">a</tag>              <content xsi:type="xsd:string"><![CDATA[3-598-11211-4]]></content>              <occ xsi:type="xsd:int">1</occ>              <pos xsi:type="xsd:int">1</pos>            </subfield>          </subfields>          </field>          <field>          <tag xsi:type="xsd:string">095</tag>          <content xsi:type="xsd:string"><![CDATA[  ^aPTBN00879584]]></content>          <indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>          <indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>          <occ xsi:type="xsd:int">1</occ>          <pos xsi:type="xsd:int">3</pos>          <subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[1]">            <subfield>              <tag xsi:type="xsd:string">a</tag>              <content xsi:type="xsd:string"><![CDATA[PTBN00879584]]></content>              <occ xsi:type="xsd:int">1</occ>              <pos xsi:type="xsd:int">1</pos>            </subfield>          </subfields>          </field>          <field>          <tag xsi:type="xsd:string">100</tag>          <content xsi:type="xsd:string"><![CDATA[  ^a19950506d1994  k  y0pory0103  ba]]></content>          <indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>          <indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>          <occ xsi:type="xsd:int">1</occ>          <pos xsi:type="xsd:int">4</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[1]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[19950506d1994 k y0pory0103 ba]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">101</tag>

<content xsi:type="xsd:string"><![CDATA[0 ^aeng]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[0]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">5</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[1]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[eng]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">102</tag>

<content xsi:type="xsd:string"><![CDATA[ ^aDE]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">6</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[1]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[DE]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">200</tag>

<content xsi:type="xsd:string">

<![CDATA[1 ^aUnimarc manual^ebibliographic format^fInternational Federation of Library Associations and Institutions]]>

</content>

<indicator1 xsi:type="xsd:string"><![CDATA[1]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">7</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[3]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[Unimarc manual]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">e</tag>

<content xsi:type="xsd:string"><![CDATA[bibliographic format]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">2</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">f</tag>

<content xsi:type="xsd:string">

<![CDATA[International Federation of Library Associations and Institutions]]>

</content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">3</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">205</tag>

<content xsi:type="xsd:string"><![CDATA[ ^a2nd ed]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">8</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[1]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[2nd ed]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">210</tag>

<content xsi:type="xsd:string"><![CDATA[ ^aMunchen^cK. G. Saur,^d1994]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">9</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[3]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[Munchen]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">c</tag>

<content xsi:type="xsd:string"><![CDATA[K. G. Saur,]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">2</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">d</tag>

<content xsi:type="xsd:string"><![CDATA[1994]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">3</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">215</tag>

<content xsi:type="xsd:string"><![CDATA[ ^a802, [90] p., pag. var]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">10</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[1]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[802, [90] p., pag. var]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">225</tag>

<content xsi:type="xsd:string"><![CDATA[2 ^aUBCIM Publications^hNew series^vvol. 14)]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[2]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">11</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[3]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[UBCIM Publications]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">h</tag>

<content xsi:type="xsd:string"><![CDATA[New series]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">2</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">v</tag>

<content xsi:type="xsd:string"><![CDATA[vol. 14)]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">3</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">710</tag>

<content xsi:type="xsd:string"><![CDATA[02^aInternational Federation of Library Associations]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[0]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[2]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">12</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[1]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[International Federation of Library Associations]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">801</tag>

<content xsi:type="xsd:string"><![CDATA[ 0^aPT^bBN^gRPC]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[0]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">13</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[3]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[PT]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">b</tag>

<content xsi:type="xsd:string"><![CDATA[BN]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">2</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">g</tag>

<content xsi:type="xsd:string"><![CDATA[RPC]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">3</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">998</tag>

<content xsi:type="xsd:string"><![CDATA[ ^aUAV78-393]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">14</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[1]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[UAV78-393]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

</subfields>

</field>

</fields>

</marcXML>

</methodns:getRecordByISBNResponse>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Search


Input parameters
  • terms - Array of Strings. Each term identifies the search prefix, matches the corresponding value. See the next term list for details:
    • AS - Subject
    • AU - Author
    • DP - Publishing date
    • CDU - Universal Decimal Classification
    • ED - Publisher
    • COL - Series
    • ISBN - ISBN
    • TI - Title
    • empty term - Word search
  • values - Array of Strings. The values to search for. Values can be prefixed with logical operators to restrict the search result:
    • < - Lower than
    • > - Greater than
    • = - Equal to
    • <= - Lower than or equal to
    • >= - Greater than or equal to
  • precedences - Array of Integers
  • operators - Array of Strings. The pairs term-value are linked by the operator wich assumes the values AND, OR and AND NOT
  • pagesize - Integer. The number of records by page
  • pagenumber - Integer. The page number.
Output parameters
  • marcXML - Array of MarcXML objects

Sample code


 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click    ' create a new web service    Dim service As pt.bn.sirius.SearchService    service = New pt.bn.sirius.SearchService()        ' create an array for the terms    Dim terms(1) As String        If cmbTerms01.Text = "Title" Then      terms(0) = "TI"    ElseIf cmbTerms01.Text = "Author" Then      terms(0) = "AU"    ElseIf cmbTerms01.Text = "Subject" Then      terms(0) = "AS"    Else      terms(0) = cmbTerms01.Text    End If      If cmbTerms01.Text = "Title" Then      terms(1) = "TI"    ElseIf cmbTerms01.Text = "Author" Then      terms(1) = "AU"    ElseIf cmbTerms01.Text = "Subject" Then      terms(1) = "AS"    Else      terms(1) = cmbTerms01.Text    End If      ' create an array for the values    Dim values(1) As String    values(0) = txtValue01.Text    values(1) = txtValue02.Text        ' create an array for the precedences    Dim precedences(1) As Integer    precedences(0) = 1    precedences(1) = 1      ' create an array for the operators    Dim operators(1) As String    operators(0) = cmbOps.Text    operators(1) = "AND"        ' create an array to get the results of the service    Dim records() As pt.bn.sirius.MarcXML        ' invoke the service    records = service.search(terms, values, precedences, operators, 10, 1)        Dim Idx, I As Integer    Dim fStr As String        ' display the results    fStr = "FOUND " & records.Length & " RECORD(S)" & vbCrLf & vbCrLf        For Idx = 0 To records.Length - 1      Dim record As pt.bn.sirius.MarcXML      record = records(Idx)        For I = 0 To record.fields.Length - 1      fStr = fStr & record.fields(I).tag & ": " & record.fields(I).content & vbCrLf      Next        fStr = fStr & vbCrLf & "**********************************************" & vbCrLf    Next      txtResult.Text = fStr  End Sub          

SOAP Call


 <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"       xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"       xmlns:xsd="http://www.w3.org/2001/XMLSchema"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">   <SOAP-ENV:Body>    <ns1:search xmlns:ns1="search">   <terms xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[2]" xmlns:ns2="http://sirius.bookmarc.pt/soap-ns">    <item>AU</item>    <item>TI</item>   </terms>   <values xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[2]" xmlns:ns3="http://sirius.bookmarc.pt/soap-ns">    <item>Campos</item>    <item>Unimarc</item>   </values>   <precedences xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:int[2]" xmlns:ns4="http://sirius.bookmarc.pt/soap-ns">    <item>1</item>    <item>1</item>   </precedences>   <operators xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[2]" xmlns:ns5="http://sirius.bookmarc.pt/soap-ns">    <item>AND</item>    <item>AND</item>   </operators>   <pagesize xsi:type="xsd:int">10</pagesize>   <pagenumber xsi:type="xsd:int">1</pagenumber>    </ns1:search>   </SOAP-ENV:Body>  </SOAP-ENV:Envelope>          

SOAP Answer


 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">    <SOAP-ENV:Header>      <s:session xmlns:s="http://sirius.bookmarc.pt/soap-ns">      <id>ADD615E0-C2C2-435C-81AC-6F85D1AC4516</id>      <user/>      </s:session>    </SOAP-ENV:Header>    <SOAP-ENV:Body>      <methodns:searchResponse xmlns:methodns="search">      <searchResult xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="typens:MarcXML[1]"         xmlns:marcns="urn:Search"         xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"         xmlns:xsd="http://www.w3.org/2001/XMLSchema"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xmlns:typens="http://sirius.bookmarc.pt/soap-ns">        <record xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"           xmlns:xsd="http://www.w3.org/2001/XMLSchema"           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">          <leader xsi:type="typens:LeaderXML">          <content xsi:type="xsd:string"><![CDATA[00609nam  00205 4 45  ]]></content>          <bibliographicLevel xsi:type="xsd:string"><![CDATA[m]]></bibliographicLevel>          <cataloguingForm xsi:type="xsd:string"><![CDATA[4]]></cataloguingForm>          <encodingLevel xsi:type="xsd:string"><![CDATA[ ]]></encodingLevel>          <hierarchicalLevelCode xsi:type="xsd:string"><![CDATA[ ]]></hierarchicalLevelCode>          <recordStatus xsi:type="xsd:string"><![CDATA[n]]></recordStatus>          <recordType xsi:type="xsd:string"><![CDATA[a]]></recordType>          </leader>          <fields xsi:type="typens:ArrayOf_FieldXML" SOAP-ENC:arrayType="typens:FieldXML[15]" xmlns:marcns="urn:Marc">          <field>            <tag xsi:type="xsd:string">001</tag>            <content xsi:type="xsd:string"><![CDATA[0981]]></content>            <indicator1 xsi:type="xsd:string"><![CDATA[]]></indicator1>            <indicator2 xsi:type="xsd:string"><![CDATA[]]></indicator2>            <occ xsi:type="xsd:int">1</occ>            <pos xsi:type="xsd:int">0</pos>            <subfields xsi:nil="true"/>          </field>          <field>            <tag xsi:type="xsd:string">005</tag>            <content xsi:type="xsd:string"><![CDATA[990101000000.0]]></content>            <indicator1 xsi:type="xsd:string"><![CDATA[]]></indicator1>            <indicator2 xsi:type="xsd:string"><![CDATA[]]></indicator2>            <occ xsi:type="xsd:int">1</occ>            <pos xsi:type="xsd:int">1</pos>            <subfields xsi:nil="true"/>          </field>          <field>            <tag xsi:type="xsd:string">010</tag>            <content xsi:type="xsd:string"><![CDATA[^^Brochado]]></content>            <indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>            <indicator2 xsi:type="xsd:string"><![CDATA[]]></indicator2>            <occ xsi:type="xsd:int">1</occ>            <pos xsi:type="xsd:int">2</pos>            <subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[2]">              <subfield>              <tag xsi:type="xsd:string"/>              <content xsi:type="xsd:string"><![CDATA[Brochado]]></content>              <occ xsi:type="xsd:int">1</occ>              <pos xsi:type="xsd:int">1</pos>              </subfield>              <subfield>              <tag xsi:type="xsd:string">B</tag>              <content xsi:type="xsd:string"><![CDATA[rochado]]></content>              <occ xsi:type="xsd:int">1</occ>              <pos xsi:type="xsd:int">2</pos>              </subfield>            </subfields>          </field>          <field>            <tag xsi:type="xsd:string">095</tag>            <content xsi:type="xsd:string"><![CDATA[^^PTBN00653291]]></content>            <indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>            <indicator2 xsi:type="xsd:string"><![CDATA[]]></indicator2>            <occ xsi:type="xsd:int">1</occ>            <pos xsi:type="xsd:int">3</pos>            <subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[2]">              <subfield>              <tag xsi:type="xsd:string"/>              <content xsi:type="xsd:string"><![CDATA[PTBN00653291]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">P</tag>

<content xsi:type="xsd:string"><![CDATA[TBN00653291]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">2</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">100</tag>

<content xsi:type="xsd:string"><![CDATA[ ^a19881117d1986 m a0pory0103 ba]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">4</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[1]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[19881117d1986 m a0pory0103 ba]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">101</tag>

<content xsi:type="xsd:string"><![CDATA[0 ^apor]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[0]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">5</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[1]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[por]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">102</tag>

<content xsi:type="xsd:string"><![CDATA[ ^aPT]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">6</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[1]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[PT]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">200</tag>

<content xsi:type="xsd:string">

<![CDATA[1 ^aUNIMARC^eManual de operações^fFernanda Maria Guedes de Campos, José Carlos Sottomayor]]>

</content>

<indicator1 xsi:type="xsd:string"><![CDATA[1]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">7</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[3]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[UNIMARC]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">e</tag>

<content xsi:type="xsd:string"><![CDATA[Manual de operações]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">2</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">f</tag>

<content xsi:type="xsd:string">

<![CDATA[Fernanda Maria Guedes de Campos, José Carlos Sottomayor]]>

</content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">3</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">210</tag>

<content xsi:type="xsd:string"><![CDATA[ ^aLisboa^cBiblioteca Nacional,^d1986]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">8</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[3]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[Lisboa]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">c</tag>

<content xsi:type="xsd:string"><![CDATA[Biblioteca Nacional,]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">2</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">d</tag>

<content xsi:type="xsd:string"><![CDATA[1986]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">3</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">215</tag>

<content xsi:type="xsd:string"><![CDATA[ ^a1 pasta (pag. var.)^d32 cm]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">9</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[2]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[1 pasta (pag. var.)]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">d</tag>

<content xsi:type="xsd:string"><![CDATA[32 cm]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">2</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">700</tag>

<content xsi:type="xsd:string"><![CDATA[ 1^aCampos,^bFernanda Maria Guedes de,^f1949-]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[1]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">10</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[3]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[Campos,]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">b</tag>

<content xsi:type="xsd:string"><![CDATA[Fernanda Maria Guedes de,]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">2</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">f</tag>

<content xsi:type="xsd:string"><![CDATA[1949-]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">3</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">701</tag>

<content xsi:type="xsd:string"><![CDATA[ 1^aSotomaior,^bJosé Carlos,^f1953-^4070]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[1]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">11</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[4]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[Sotomaior,]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">b</tag>

<content xsi:type="xsd:string"><![CDATA[José Carlos,]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">2</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">f</tag>

<content xsi:type="xsd:string"><![CDATA[1953-]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">3</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">4</tag>

<content xsi:type="xsd:string"><![CDATA[070]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">4</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">801</tag>

<content xsi:type="xsd:string"><![CDATA[ 0^aPT^bBN^gRPC]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[0]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">12</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[3]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[PT]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">b</tag>

<content xsi:type="xsd:string"><![CDATA[BN]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">2</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">g</tag>

<content xsi:type="xsd:string"><![CDATA[RPC]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">3</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">998</tag>

<content xsi:type="xsd:string"><![CDATA[ ^aMPA11-1]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">13</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[1]">

<subfield>

<tag xsi:type="xsd:string">a</tag>

<content xsi:type="xsd:string"><![CDATA[MPA11-1]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

</subfields>

</field>

<field>

<tag xsi:type="xsd:string">966</tag>

<content xsi:type="xsd:string"><![CDATA[ ^lMPAA^mMPAA^s1622/M?]]></content>

<indicator1 xsi:type="xsd:string"><![CDATA[ ]]></indicator1>

<indicator2 xsi:type="xsd:string"><![CDATA[ ]]></indicator2>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">14</pos>

<subfields xsi:type="typens:ArrayOf_SubfieldXML" SOAP-ENC:arrayType="typens:SubfieldXML[3]">

<subfield>

<tag xsi:type="xsd:string">l</tag>

<content xsi:type="xsd:string"><![CDATA[MPAA]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">1</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">m</tag>

<content xsi:type="xsd:string"><![CDATA[MPAA]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">2</pos>

</subfield>

<subfield>

<tag xsi:type="xsd:string">s</tag>

<content xsi:type="xsd:string"><![CDATA[1622/M?]]></content>

<occ xsi:type="xsd:int">1</occ>

<pos xsi:type="xsd:int">3</pos>

</subfield>

</subfields>

</field>

</fields>

</record>

</searchResult>

</methodns:searchResponse>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Back to the TVS model document