XML- tutoriaal

XML TUIS XML Inleiding XML Hoe om te gebruik XML-boom XML-sintaksis XML elemente XML-kenmerke XML Naamruimtes XML vertoon XML HttpRequest XML-ontleder XML DOM XML XPath XML XSLT XML XQuery XML XLink XML valideerder XML DTD XML-skema XML-bediener XML voorbeelde XML Vasvra XML-sertifikaat

XML AJAX

AJAX Inleiding AJAX XMLHttp AJAX-versoek AJAX-reaksie AJAX XML-lêer AJAX PHP AJAX ASP AJAX-databasis AJAX toepassings AJAX voorbeelde

XML DOM

DOM Inleiding DOM nodusse Toegang tot DOM DOM Node Info DOM Node Lys DOM deurkruis DOM Navigeer DOM Kry waardes DOM Verander nodusse DOM Verwyder nodes DOM vervang nodusse DOM Skep nodusse DOM Voeg nodes by DOM Kloon nodusse DOM Voorbeelde

XPath handleiding

XPath Inleiding XPath nodes XPath-sintaksis XPath-asse XPath-operateurs XPath voorbeelde

XSLT- tutoriaal

XSLT Inleiding XSL-tale XSLT-transformasie XSLT <sjabloon> XSLT <waarde-van> XSLT <vir-elk> XSLT <sorteer> XSLT <if> XSLT <kies> XSLT Pas toe XSLT op die kliënt XSLT op die bediener XSLT Wysig XML XSLT voorbeelde

XQuery- tutoriaal

XQuery Inleiding XQuery voorbeeld XQuery FLWOR XQuery HTML XQuery-bepalings XQuery-sintaksis XQuery Voeg by XQuery Kies XQuery-funksies

XML DTD

DTD Inleiding DTD Boublokke DTD Elemente DTD-kenmerke DTD Elements vs Attr DTD Entiteite DTD voorbeelde

XSD- skema

XSD Inleiding XSD Hoe om XSD <skema> XSD-elemente XSD-kenmerke XSD-beperkings

XSD -kompleks

XSD-elemente XSD leeg Slegs XSD-elemente Slegs XSD-teks XSD gemeng XSD-aanwysers XSD <enige> XSD <anyAttribute> XSD-vervanging XSD voorbeeld

XSD data

XSD-string XSD datum XSD Numeries XSD Diverse XSD-verwysing

Webdienste _

XML Dienste XML WSDL XML SEEP XML RDF XML RSS

Verwysings

DOM Node Tipes DOM Node DOM NodeLys DOM NamedNodeMap DOM-dokument DOM Element DOM-kenmerk DOM teks DOM CDATA DOM Kommentaar DOM XMLHttpRequest DOM-ontleder XSLT-elemente XSLT/XPath-funksies

XML seep


  • SOAP staan ​​vir S imple O bject A ccess P rotocol
  • SOAP is 'n toepassingskommunikasieprotokol
  • SOAP is 'n formaat om boodskappe te stuur en te ontvang
  • SOAP is platform onafhanklik
  • SOAP is gebaseer op XML
  • SOAP is 'n W3C-aanbeveling

Hoekom SEEP?

Dit is belangrik dat webtoepassings oor die internet kan kommunikeer.

Die beste manier om tussen toepassings te kommunikeer is oor HTTP, want HTTP word deur alle internetblaaiers en bedieners ondersteun. SOAP is geskep om dit te bereik.

SOAP bied 'n manier om te kommunikeer tussen toepassings wat op verskillende bedryfstelsels loop, met verskillende tegnologieë en programmeertale.


SEEP Boublokke

'n SOAP-boodskap is 'n gewone XML-dokument wat die volgende elemente bevat:

  • 'n Koevertelement wat die XML-dokument as 'n SOAP-boodskap identifiseer
  • 'n Kop-element wat kop-inligting bevat
  • 'n Liggaamselement wat oproep- en reaksie-inligting bevat
  • 'n Foutelement wat foute en statusinligting bevat

Al die elemente hierbo word verklaar in die verstek naamruimte vir die SOAP koevert:

http://www.w3.org/2003/05/soap-envelope/

en die verstek naamruimte vir SOAP-kodering en datatipes is:

http://www.w3.org/2003/05/soap-encoding


Sintaksisreëls

Hier is 'n paar belangrike sintaksisreëls:

  • 'n SEEP-boodskap MOET met XML geënkodeer word
  • 'n SOAP-boodskap MOET die SOAP Envelope-naamruimte gebruik
  • 'N SEEP-boodskap mag NIE 'n DTD-verwysing bevat nie
  • 'n SOAP-boodskap mag NIE XML-verwerkingsinstruksies bevat nie


Skelet SOAP Boodskap

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Header>
...
</soap:Header>

<soap:Body>
...
  <soap:Fault>
  ...
  </soap:Fault>
</soap:Body>

</soap:Envelope>

Die SEEP Koevert Element

Die vereiste SOAP Envelope-element is die wortelelement van 'n SOAP-boodskap. Hierdie element definieer die XML-dokument as 'n SOAP-boodskap.

Voorbeeld

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
  ...
  Message information goes here
  ...
</soap:Envelope>

Die xmlns:soap Naamruimte

Let op die xmlns:soap naamruimte in die voorbeeld hierbo. Dit moet altyd die waarde hê van: "http://www.w3.org/2003/05/soap-envelope/".

Die naamruimte definieer die koevert as 'n SOAP-koevert.

As 'n ander naamspasie gebruik word, genereer die toepassing 'n fout en gooi die boodskap weg.


Die enkoderingstyl-kenmerk

Die encodingStyle-kenmerk word gebruik om die datatipes wat in die dokument gebruik word, te definieer. Hierdie kenmerk kan op enige SOAP-element verskyn, en is van toepassing op die element se inhoud en alle kinderelemente.

'n SOAP-boodskap het geen verstekkodering nie.

Sintaksis

soap:encodingStyle="URI"

Voorbeeld

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
  ...
  Message information goes here
  ...
</soap:Envelope>

Die SOAP Header Element

Die opsionele SOAP Header-element bevat toepassingspesifieke inligting (soos verifikasie, betaling, ens.) oor die SOAP-boodskap.

As die Header element teenwoordig is, moet dit die eerste kind element van die Envelope element wees.

Let wel: Alle onmiddellike kinderelemente van die Header-element moet naamruimte-gekwalifiseer wees.

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Header>
  <m:Trans xmlns:m="https://www.w3schools.com/transaction/"
  soap:mustUnderstand="1">234
  </m:Trans>
</soap:Header>
...
...
</soap:Envelope>

Die voorbeeld hierbo bevat 'n kopskrif met 'n "Trans"-element, 'n "mustUnderstand"-kenmerk met 'n waarde van 1 en 'n waarde van 234.

SOAP definieer drie eienskappe in die verstek naamruimte. Hierdie kenmerke is: moet verstaan, akteur en encodingStyle.

Die eienskappe wat in die SOAP Header gedefinieer word, definieer hoe 'n ontvanger die SOAP-boodskap moet verwerk.


Die mustUnstand-kenmerk

Die SOAP mustUnderstand-kenmerk kan gebruik word om aan te dui of 'n kopinskrywing verpligtend of opsioneel is vir die ontvanger om te verwerk.

As jy mustUnderstand="1" by 'n onderliggende element van die Header-element voeg, dui dit aan dat die ontvanger wat die Header verwerk, die element moet herken. As die ontvanger nie die element herken nie, sal dit misluk wanneer die Kopskrif verwerk word.

Sintaksis

soap:mustUnderstand="0|1"

Voorbeeld

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Header>
  <m:Trans xmlns:m="https://www.w3schools.com/transaction/"
  soap:mustUnderstand="1">234
  </m:Trans>
</soap:Header>
...
...
</soap:Envelope>

Die akteur Kenmerk

'n SOAP-boodskap kan van 'n sender na 'n ontvanger beweeg deur verskillende eindpunte langs die boodskappad te laat verbygaan. Maar nie alle dele van 'n SOAP-boodskap is bedoel vir die uiteindelike eindpunt nie, maar dit kan eerder vir een of meer van die eindpunte op die boodskappad bedoel wees.

Die SOAP-akteur-kenmerk word gebruik om die Header-element na 'n spesifieke eindpunt te adresseer.

Sintaksis

soap:actor="URI"

Voorbeeld

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Header>
  <m:Trans xmlns:m="https://www.w3schools.com/transaction/"
  soap:actor="https://www.w3schools.com/code/">234
  </m:Trans>
</soap:Header>
...
...
</soap:Envelope>

Die enkoderingstyl-kenmerk

Die encodingStyle-kenmerk word gebruik om die datatipes wat in die dokument gebruik word, te definieer. Hierdie kenmerk kan op enige SOAP-element verskyn, en dit sal van toepassing wees op daardie element se inhoud en alle kinderelemente.

'n SOAP-boodskap het geen verstekkodering nie.

Sintaksis

soap:encodingStyle="URI"

Die SOAP Body Element

Die vereiste SOAP Body element bevat die werklike SOAP boodskap wat bedoel is vir die uiteindelike eindpunt van die boodskap.

Onmiddellike kinderelemente van die SOAP Body element kan naamruimte-gekwalifiseer wees.

Voorbeeld

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Body>
  <m:GetPrice xmlns:m="https://www.w3schools.com/prices">
    <m:Item>Apples</m:Item>
  </m:GetPrice>
</soap:Body>

</soap:Envelope>

Die voorbeeld hierbo vra die prys van appels. Let daarop dat die m:GetPrice en die Item-elemente hierbo toepassingspesifieke elemente is. Hulle is nie deel van die SOAP-naamruimte nie.

'n SOAP-reaksie kan iets soos volg lyk:

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Body>
  <m:GetPriceResponse xmlns:m="https://www.w3schools.com/prices">
    <m:Price>1.90</m:Price>
  </m:GetPriceResponse>
</soap:Body>

</soap:Envelope>


Die SOAP Fout Element

Die opsionele SOAP Fault-element word gebruik om foutboodskappe aan te dui.

Die SOAP Fault-element bevat foute en statusinligting vir 'n SOAP-boodskap.

As 'n foutelement teenwoordig is, moet dit as 'n onderliggende element van die liggaamselement verskyn. 'n Foutelement kan slegs een keer in 'n SOAP-boodskap verskyn.

Die SOAP Fault-element het die volgende sub-elemente:

Sub Element Description
<faultcode> A code for identifying the fault
<faultstring> A human readable explanation of the fault
<faultactor> Information about who caused the fault to happen
<detail>

Holds application specific error information related to the Body element

SOAP Foutkodes

Die foutkodewaardes wat hieronder gedefinieer word, moet in die foutkode-element gebruik word wanneer foute beskryf word:

Error Description
VersionMismatch Found an invalid namespace for the SOAP Envelope element
MustUnderstand An immediate child element of the Header element, with the mustUnderstand attribute set to "1", was not understood
Client The message was incorrectly formed or contained incorrect information
Server There was a problem with the server so the message could not proceed

Die HTTP-protokol

HTTP kommunikeer oor TCP/IP. 'n HTTP-kliënt koppel aan 'n HTTP-bediener met behulp van TCP. Nadat 'n verbinding tot stand gebring is, kan die kliënt 'n HTTP-versoekboodskap na die bediener stuur:

POST /item HTTP/1.1
Host: 189.123.255.239
Content-Type: text/plain
Content-Length: 200

Die bediener verwerk dan die versoek en stuur 'n HTTP-antwoord terug na die kliënt. Die antwoord bevat 'n statuskode wat die status van die versoek aandui:

200 OK
Content-Type: text/plain
Content-Length: 200

In die voorbeeld hierbo het die bediener 'n statuskode van 200 teruggestuur. Dit is die standaard sukseskode vir HTTP.

As die bediener nie die versoek kon dekodeer nie, kon dit iets soos volg teruggestuur het:

400 Bad Request
Content-Length: 0

SEEP Binding

Die SOAP-spesifikasie definieer die struktuur van die SOAP-boodskappe, nie hoe dit uitgeruil word nie. Hierdie gaping word gevul deur wat genoem word "SOAP Bindings". SOAP-bindings is meganismes wat toelaat dat SOAP-boodskappe effektief uitgeruil word deur 'n vervoerprotokol te gebruik.

Die meeste SOAP-implementerings verskaf bindings vir algemene vervoerprotokolle, soos HTTP of SMTP.

HTTP is sinchronies en word wyd gebruik. 'n SOAP HTTP-versoek spesifiseer ten minste twee HTTP-opskrifte: inhoud-tipe en inhoud-lengte.

SMTP is asynchronies en word in laaste uitweg of spesifieke gevalle gebruik.

Java-implementerings van SOAP verskaf gewoonlik 'n spesifieke binding vir die JMS (Java Messaging System) protokol.


Inhoud-tipe

Die inhoudtipe-opskrif vir 'n SOAP-versoek en -antwoord definieer die MIME-tipe vir die boodskap en die karakterkodering (opsioneel) wat gebruik word vir die XML-liggaam van die versoek of antwoord.

Sintaksis

Content-Type: MIMEType; charset=character-encoding

Voorbeeld

POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8

Inhoud-lengte

Die inhoud-lengte-kopskrif vir 'n SOAP-versoek en -antwoord spesifiseer die aantal grepe in die liggaam van die versoek of antwoord.

Sintaksis

Content-Length: bytes

Voorbeeld

POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 250

'n SEEP Voorbeeld

In die voorbeeld hieronder word 'n GetStockPrice-versoek na 'n bediener gestuur. Die versoek het 'n Voorraadnaam-parameter en 'n Prys-parameter wat in die antwoord teruggestuur sal word. Die naamruimte vir die funksie word gedefinieer in "http://www.example.org/stock".

'n SEEP-versoek:

POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Body xmlns:m="http://www.example.org/stock">
  <m:GetStockPrice>
    <m:StockName>IBM</m:StockName>
  </m:GetStockPrice>
</soap:Body>

</soap:Envelope>

Die SOAP-reaksie:

HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">

<soap:Body xmlns:m="http://www.example.org/stock">
  <m:GetStockPriceResponse>
    <m:Price>34.5</m:Price>
  </m:GetStockPriceResponse>
</soap:Body>

</soap:Envelope>