Otóż muszę zrobić web service znalazłem sobie darmowy ale mam problem z pobieraniem danych.
Mam 2 pliki jeden html - który obsługuje cały serwis i szablon transformacji xslt.
<script type=text/javascript> var request = new XMLHttpRequest(); function wywWS() //wywołanie webService { var par; var par2; par = "http://ws.cdyne.com/WeatherWS/Weather.asmx/GetCityForecastByZIP?ZIP="; par2 = document.getElementById("liniaEd").value; par += par2; request.onreadystatechange = myStatusProc; request.open( "GET", par , true ); request.send(); } function myStatusProc() //obsługa odpowiedzi { var xsltDoc; var xsltFile="test.xslt"; if (request.readyState==4) {// 4 = "załadowana" if (request.status==200) {// 200 = OK var xmlDoc = new ActiveXObject('Microsoft.XMLDOM'); xmlDoc = request.responseXML; //załaduj xslt xsltDoc = new ActiveXObject('Microsoft.XMLDOM'); xsltDoc.async = false; xsltDoc.load(xsltFile); //transformacja var ex=xmlDoc.transformNode(xsltDoc); //zwracamy rezultat transformacji do przeglądarki document.getElementById("idZawStr").innerHTML=ex; } else { alert("Problem z odbiorem danych XML" ); } } } </SCRIPT> </HEAD> value=12502>
<?xml version="1.0" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/02/xpath-functions" xmlns:ws="http://ws.cdyne.com/WeatherWS/"> <xsl:template match="/"> <html xmlns="http://www.w3.org/1999/xhtml"> <body> <h2>Tekst</h2> <table border="1"> <xsl:for-each select="ws:ForecastReturn"> <tr> <td><xsl:value-of select="ws:Success"/> </td> <td><xsl:value-of select="ws:ResponseText"/> </td> <td><xsl:value-of select="ws:State"/> </td> <td><xsl:value-of select="ws:City"/> </td> <xsl:for-each select="ws:ForecastResult/ws:Forecast"> <tr> <td><xsl:value-of select="ws:Date"/> </td> <td> <xsl:if test="ws:WeatherID = -1"> <img src="http://ws.cdyne.com/WeatherWS/Images/thunderstorms.gif"/> </xsl:if> </td> </tr> </xsl:for-each> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
Cały problem w tym, że chcę pobierać dane przez SOAP a nie getem ;/
Mam kod również do pobierania xml przez SOAP:
<html> <head> <script type="text/javascript" language="javascript"> var xmlhttp; function on_click() { //deklaracja zmiennej tekstowej var xmlToSend = "<?xml version='1.0' encoding='utf-8'?>"; xmlToSend += "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' "; xmlToSend += "xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>"; xmlToSend += "<soap:Body>"; xmlToSend += "<GetCityForecastByZIP xmlns='http://ws.cdyne.com/WeatherWS/'>"; xmlToSend += "<ZIP>12502</ZIP></GetCityForecastByZIP>"; xmlToSend += "</soap:Body></soap:Envelope>"; //utworzenie dokumentuwiadomosci xml var xmldoc = new ActiveXObject("Microsoft.XMLDOM"); xmldoc.loadXML(xmlToSend); xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.onreadystatechange = state_Change; xmlhttp.open("POST", "http://ws.cdyne.com/WeatherWS/Weather.asmx", false); xmlhttp.setRequestHeader ("SOAPAction", "http://ws.cdyne.com/WeatherWS/GetCityForecastByZIP"); xmlhttp.setRequestHeader ("Content-Type", "text/xml"); xmlhttp.send(xmldoc); var objResponse = document.getElementById("zawartoscHtml"); objResponse.innerText = xmlhttp.responseXML.xml; } function state_Change() { // if xmlhttp shows "loaded" if (xmlhttp.readyState==4) { // if "OK" if (xmlhttp.status==200) { alert("OK"); } else { alert("Problem retrieving XML data"); } } } </script> </head> <body id="zawartoscHtml"> <div> <input type="button" onclick="return on_click();" value="OK"/> </div> <div id="responseDiv"> </div> </body> </html>
Cały problem moj polega na tym jak połączyć te oba skrypty aby Metoda SOAP pobierała dane i je od razu transformowała przez xstl tak jak to jest w 1 przypadku? Ponieważ nie znam się na tym i nie wiem jak to połączyć czy mógłbym prosić kogoś o pomoc w tych kodach. Z góry bardzo dziękuję i pozdrawiam.
P.S. Chciałbym aby strona z metoda SOAP działała identycznie jak ta pierwsza z GETem. i podpinała ten szablon transformacji jaki tutaj zamieściłem.