Converteren van XML (Webservice) met XSLT in Classis ASP

Waarom werk ik nog met classic asp? Soms heb je geen keuze. Je wilt graag vernieuwen, maar hebt geen tijd \ budget om een 10 jaar oud programa helemaal te herschrijven. Wat je wel kunt doen is nieuwe code te schijven in bijvoorbeeld .NET en deze aan te bieden als webservice.
Je zou de webservice op verschillende manieren kunnen gebruiken.
Je kunt methods aanroepen en daarvan de return type direct in je ASP code gebruiken. Voor ingewikkelde types kun je in de asp door het xml document een loopen.
Hier laat ik zien hoe je je xml bericht direct als tabel vulling kunt gebruiken.

Als start heb ik de volgende site gebruikt: http://www.inov8design.com.au/articles/xml_xslt_asp.asp
Het voorbeeld werkt helemaal maar niet voor wat ik wil. Ik wil een live webservice aanroepen.
In de classic asp maak je de volgende code:

 

 

Set objXML = Server.CreateObject(“MSXML2.DOMDocument”)
objXML.setProperty
“ServerHTTPRequest”, True
objXML.async =
False


objXML.Load “http://localhost/WebService.asmx/HelloWorld”

Een webservice kan normaal niet zo via een url als hierboven worden benaderd, door de web.config aan te passen gaat dat wel:

<webServices>
  <
protocols>
    <
add name=HttpGet/>
    <
add name=HttpPost/>
  </
protocols>
</webServices>

 

 

In de .net Webservice geef ik een List van dummy objecten terug.
[WebMethod]
public    List<dummy> HelloWorld() {}
In de XML output vertaalt zich dat naar ArrayOfDummy. In het xslt verwijs ik ook naar ArrayOfDummy.
<xsl:template match=ArrayOfDummy>
<
div>ww</div>
<
xsl:apply-templates select=dummy/>
</
xsl:template>
Waarom weet ik nog steeds niet, maar ArrayOfDummy wordt niet goed geconverteerd door het xslt. Als ik handmatig van “ArrayOfDummy”,  ”test” maak werkt het wel.
Omdat voorelkaar te krijgen overriden we aan de .net kant de xml serialization.
[WebMethod]
[return:  XmlRoot("test",Namespace="")]
public    List<dummy> HelloWorld()
Ik heb meteen ook de Namespace leeg gemaakt, anders komt er een standaard adres te staan, waar de xslt converter over kan vallen.