Servere har ikke kun noget at gøre med et lokalnet eller med Internettet. Ethvert program som fungerer som en lytter er en server!

Størrelse: px
Starte visningen fra side:

Download "Servere har ikke kun noget at gøre med et lokalnet eller med Internettet. Ethvert program som fungerer som en lytter er en server!"

Transkript

1 XML og server klient programmer:...1 Hvad er en server?...1 Fordelene ved en XML server:...2 Eksempel: En telefon XML server:...2 XML server der trækker på en database:...7 Direkte adgang til databasens Recordset:...10 Direkte streaming med SAX:...13 En server, der kalder op til en anden server:...14 Send binære data: JPG billede:...16 Binære data i XML dokumenter:...18 Styling af serverens dokumenter:...19 Kontrol af data fra klienten:...21 Eksempel: En avis server:...25 En server der cacher en række stylesheets:...26 Forskellige styles til forskellige modtagere:...27 Data Islands eller XML øer:...32 Alternativer til <xml> elementet:...36 Anvendelsen af komponenter på siden:...38 Applets:...38 Et eksempel på brug af SAXON processoren:...40 ActiveX objekter og COM klasser:...41 RUNAT Server:...43 En Web Service eller Internet Tjeneste:...45 En SOAP Web Service:...48 XML og server klient programmer: Hvad er en server? En server er et program som hele tiden lytter og venter på at en klient kalder op! En server er i princippet et meget simpelt program som man kan skrive selv med få linjer kode! En server reagerer på opkald på en bestemt måde. Den producerer en eller anden slags service. Servere har ikke kun noget at gøre med et lokalnet eller med Internettet. Ethvert program som fungerer som en lytter er en server! Servere på et netværk som f. eks. Internettet reagerer oftest på den måde at de sender en bestemt HTML side retur hvis de kaldes op! Eller man kan sige at de sender den side tilbage til klienten som klienten har bedt om. Hvis jeg skriver dette i adresse linjen i en browser:

2 Sender W3C Konsortiets server en velkomst side tilbage til mig. En server skal kaldes gennem en bestemt protokol http, ftp eller file som er en lang række definitioner på hvad der er gyldigt sprog og syntaks! Protokollen svarer til et XML skema! Den definerer hvordan kommunikationen skal foregå. Hvis ikke klienten retter sig efter dette skema kan serveren ikke forstå henvendelsen. I almindelighed kaldes klientens forespørgsel en request og serverens svar et response. De følgende eksempler forudsætter at Microsoft IIS (Internet Information Server) er installeret på maskinen. I eksemplerne er også oprettet en ny virtuel mappe xml for at gøre det lidt mere overskueligt. De efterfølgende filer skal altså ligge i denne virtuelle mappe og de skal kaldes op gennem en browser som f. eks. Internet Explorer! Fordelene ved en XML server: Der er massive fordele ved at bruge XML i kommunikationen server klient. XML er et struktureret meget fleksibelt data format. XML er ren tekst en såkaldt streng - som kan modtages på alle maskiner uanset styresystem og uanset software hos klienten. Klienten kan anvende script kode, C++, Java eller hvad som helst til at databehandle XML data. Klienten kan anvende en udgave af Windows, UNIX eller Linux! Klienten behøver overhovedet ikke at have en XML parser og slet ikke den samme parser som serveren har! I HTTP/1.1 kan XML data komprimeres og XML formatet egner sig godt til at blive sendt komprimeret! I XML teksten kan sendes binære data som et JPG billede eller et Word dokument! Alle klienter kan modtage disse binære data uanset operativsystem eller platform! XML bruges nu i stor stil i e-handel og B2B business to business kommunikation. Microsofts.NET og andre NET udgaver bygger helt på XML. Eksempel: En telefon XML server: Vi vil nu oprette en simpel server som kan levere data a la en telefon bog! Vi har skrevet en XML fil i stil med dette: <?xml version="1.0"?> <telefonliste> <person id="ej"> <fornavn>erik</fornavn> <efternavn>jensen</efternavn> <telefon> </telefon> </person> <person id="eh"> <fornavn>eydna</fornavn> <efternavn>hansen</efternavn>

3 <telefon> </telefon> </person> <person id="ch"> <fornavn>cecilie</fornavn> <efternavn>hansen</efternavn> <telefon> </telefon> </person> </telefonliste> Denne liste er gemt på serveren i den virtuelle mappe som telefonliste.xml. Vi kan så svare på opkald på denne måde: <%@ language="vbscript"%> <% Option Explicit Response.ContentType = "text/xml" dim doc set doc = server.createobject("msxml2.domdocument.4.0") doc.load Server.MapPath ("telefonliste.xml") 'Response.Write "<server_svar>" & doc.xml & "</server_svar>" Response.Write doc.xml %> Vi har her valgt at skrive serveren som Visual Basic script kode der fungerer sammen med IIS serveren. Serveren defineres i en ASP fil og gemmes som tlf_server.asp. Vi sætter en ContentType til XML hvilket er det samme som vi sender en HTTP header tilbage til klienten! Vores server skal jo kaldes gennem protokollen HTTP! Vi instantierer et DOM dokument og loader det med telefon listen og sender det hele retur til klienten! Formlen Server.MapPath sikrer at serveren kan finde den rigtige fil i den virtuelle mappe hvor vi har gemt telefonliste.xml. Vi kunne også sende andet tilbage til klienten som er antydet i kommentar linjerne! Når vi kalder serveren i Internet Explorer ses dette:

4 Systemet kan beskrives således: Serveren henter data i en XML fil som fungerer som en database. Applikationen består altså selv om den er uhyre enkel af to lag eller tiers. Vi kan altså forestille os at telefon listen bestod af poster og derfor er det nødvendigt at serveren kan søge og levere bestemte data til en klient! Vi kan derfor forbedre serveren på denne måde: <%@ language="vbscript"%> <% Option Explicit dim doc, fragment dim req_id, str req_id = Request.QueryString("id") Response.ContentType = "text/xml" set doc = server.createobject("msxml2.domdocument.4.0") doc.load Server.MapPath ("telefonliste.xml") str = "//person[@id='" & req_id & "']" set fragment = doc.selectsinglenode (str) Response.Write "<server_svar>" & fragment.xml & "</server_svar>" %> I ASP findes et objekt Request som har et under objekt QueryString som indeholder de parametre som klienten har brugt til at kalde op til serveren Normalt stammer disse søge ord fra en HTML

5 form men her taster vi foreløbigt blot parameteren direkte ind i browserens adresselinje! Dette kan gøres på denne måde: Serveren finder nu parameteren id og bruger den til at søge i DOM dokumentet bruger altså helt almindelige DOM metoder. Vi skriver en XPATH sti til den attribut som svarer til id og returnerer attributtens parent til klienten! Vi kan også hente en klient parameter på en enklere måde: req_id = Request("id") I dette tilfælde søger serveren i begge samlinger både QueryString og Form samlingerne. Vi kan lave et tilsvarende eksempel i denne XML fil:

6 Vi kan nu søge i dokumentet f. eks. efter pris sådan: <%@ language="vbscript"%> <% Option Explicit dim doc, fragment dim req_pris, req_kategori, str req_pris = Request.QueryString("pris") req_kategori = Request("kategori") Response.ContentType = "text/xml" set doc = server.createobject("msxml2.domdocument.4.0") doc.load Server.MapPath ("varer_ny_transformet.xml") str = "//vare/pris[. < " & req_pris & "]/.." set fragment = doc.selectsinglenode (str) Response.Write "<server_svar>" & fragment.xml & "</server_svar>" %> Klienten kan nu søge på en vare som koster mindre end 20 kr!:

7 XML server der trækker på en database: Et meget stort XML dokument kan fungere som en slags database for en XML server men mere almindeligt er det at serveren trækker på en rigtig database. Vi skal se nogle eksempler herpå. I det følgende eksempel bruger vi en Microsoft Access database tabel som er registreret på maskinen som en ODBC datakilde under navnet boghandel. For at eksemplet kan køre skal man altså have en sådan database registreret som en System DNS og en tabel bog med disse poster: ASP koden kan så skrives sådan:

8 = VBScript %> <% Response.ContentType="text/xml" ' Fra Access database til XML dokument med SAX metoder dim recordset,query,connection set writer=server.createobject("msxml2.mxxmlwriter.4.0") set reader=server.createobject("msxml2.saxxmlreader.4.0") set attr=server.createobject("msxml2.saxattributes.4.0") set doc=server.createobject("msxml2.domdocument.4.0") writer.indent=true writer.omitxmldeclaration= true writer.output = doc set reader.contenthandler = writer if isobject(session("databasesession")) then set connection = session("databasesession") else set connection = server.createobject("adodb.connection") call connection.open("boghandel","","") set session("databasesession") = connection end if set recordset = server.createobject("adodb.recordset") call recordset.open("select * from bog", connection) reader.contenthandler.startdocument reader.contenthandler.startelement "", "", "boghandel", attr while not recordset.eof reader.contenthandler.startelement "", "", "bog", attr reader.contenthandler.startelement "","", "efternavn", attr reader.contenthandler.characters recordset("efternavn").value reader.contenthandler.endelement "","", "efternavn" reader.contenthandler.startelement "","", "fornavn", attr reader.contenthandler.characters recordset("fornavn").value reader.contenthandler.endelement "","", "fornavn" reader.contenthandler.startelement "","", "titel", attr reader.contenthandler.characters recordset("titel").value reader.contenthandler.endelement "","", "titel" reader.contenthandler.endelement "", "", "bog" recordset.movenext wend reader.contenthandler.endelement "", "", "boghandel" reader.contenthandler.enddocument recordset.close connection.close

9 response.write doc.xml %> Vi kalder databasen på denne måde: set recordset = server.createobject("adodb.recordset") call recordset.open("select * from bog",connection) Vi opretter et record set (et udvalg af poster fra tabellen) i dette tilfælde vælger vi alle poster fra tabellen bog. Derefter skriver vi en XML tekst ud fra posterne i tabellen. Vi bruger her en SAX writer. For hver post eller række opretter vi et element bog og for hvert felt i posten opretter vi et nyt sub element som fornavn, efternavn og titel. Fordelen ved denne metode er at vi har fuld kontrol over hvordan vi ønsker at vores XML dokument skal se ud. Vi kunne have undgået at anvende en DOM struktur og have streamet writer en direkte til klienten! Dette ville have gjort processen hurtigere og nemmere men vi ville så ikke kunne manipulere med XML dokumentet. Når vi har læst alle poster i tabellen sender vi XML dokumentet til klienten!

10 Direkte adgang til databasens Recordset: Vi kan skyde en genvej til adgang til en database tabel. Det er nemligt muligt at få overført et ADO recordset direkte til XML! I.NET og i anden sammenhæng er dette udviklet meget længere således at hele systemet er integreret med XML data formatet. Vi kan gemme et recordset med en parameter 0 eller 1 idet 1 betyder adpersistxml. Koden hertil er væsentligt enklere end den vi lige har set men ulempen er at vi i første omgang ikke kan kontrollere det XML dokument der kommer ud af processen!: = VBScript %> <% Response.ContentType="text/xml" dim recordset,query,connection set doc=server.createobject("msxml2.domdocument.4.0") if isobject(session("databasesession")) then set connection = session("databasesession") else set connection = server.createobject("adodb.connection") call connection.open("boghandel","","")

11 set session("databasesession") = connection end if set recordset = server.createobject("adodb.recordset") recordset.open "select * from bog", connection recordset.save doc, 1 Response.Write doc.xml recordset.close connection.close %> Vi får på denne måde dette XML dokument: - <xml xmlns:s="uuid:bdc6e3f0-6da3-11d1-a2a3-00aa00c14882" xmlns:dt="uuid:c2f b3-11d1-a29f-00aa00c14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#rowsetschema"> - <s:schema id="rowsetschema"> - <s:elementtype name="row" content="eltonly"> + <s:attributetype name="id" rs:number="1"> - <s:attributetype name="fornavn" rs:number="2" rs:nullable="true" rs:write="true"> <s:datatype dt:type="string" dt:maxlength="50" /> </s:attributetype> - <s:attributetype name="efternavn" rs:number="3" rs:nullable="true" rs:write="true"> <s:datatype dt:type="string" dt:maxlength="50" /> </s:attributetype> - <s:attributetype name="titel" rs:number="4" rs:nullable="true" rs:write="true"> <s:datatype dt:type="string" dt:maxlength="50" /> </s:attributetype> <s:extends type="rs:rowbase" /> </s:elementtype> </s:schema> - <rs:data> <z:row id="1" fornavn="jens" efternavn="jensen" titel="sommer i vejle" /> <z:row id="2" fornavn="hanne" efternavn="olsen" titel="vinter i jylland" /> <z:row id="4" fornavn="erik" efternavn="poulsen" titel="sne og kulde" /> <z:row id="5" fornavn="ellen margrete" efternavn="nielsen" titel="tilbage i danmark" /> <z:row id="10" fornavn="ole" efternavn="jensen" titel="vinter" /> <z:row id="11" fornavn="erik" efternavn="jensen" titel="vinter her og der" /> <z:row id="12" fornavn="torben ulrich" efternavn="jensen" titel="vinter" /> <z:row id="13" fornavn="marie-louise" efternavn="hansen" titel="jeg er aldrig hjemme" /> <z:row id="14" fornavn="hans" efternavn="johansen" titel="svensk vinter" />

12 </rs:data> </xml> Vi får først XDR skemaet til XML dokumentet og derefter alle poster i tabellen i et bestemt format. Recordset bliver ALTID oversat således til XML. Vi kan derefter bruge DOM metoder på dokumentet. Hvis vi f. eks. i stedet vælger Response.Write doc.firstchild.lastchild.xml får vi selve data sektionen: Hvis vi vælger: Response.Write doc.firstchild.firstchild.firstchild.firstchild.xml får vi definitionen i XDR skemaet af den 1. attribut i rækkerne:

13 Vi kan se at XDR er ret forskelligt fra XSD skemaer og er Microsofts interne skema opfindelse. Men vi kan også se at data fra databasen bliver bevaret i skemaet. Dette er også et eksempel på et internt skema. Dette er også muligt med XSD men ikke hensigtsmæssigt og det frarådes generelt! En ulempe ved denne metode er selvfølgeligt at man ikke kan undgå at få leveret skemaet sammen med XML dokumentet! Direkte streaming med SAX: Vi kan undgå den overhead der ligger i DOM modellen ved at streame XML dokumentet direkte til klienten således: <%@ language="vbscript"%> <% Option Explicit response.contenttype="text/xml" dim w, r set w=server.createobject("msxml2.mxxmlwriter.4.0") 'w.omitxmldeclaration = true w.encoding = "iso " set r=server.createobject("msxml2.saxxmlreader.4.0") set r.contenthandler=w r.parseurl Server.MapPath("..\telefonliste_basisstyle.xml") response.write w.output %> Denne metode sætter en SAXWriter til at være event handler for vores SAX reader! På denne måde sendes hele dokumentet blot videre med:

14 response.write w.output Writerens output er XML dokumentet og det kan sendes direkte til klienten! En server, der kalder op til en anden server: Følgende eksempel illustrerer hvordan en XML server kan hente data på en anden server og sende dem videre til en klient som kalder op. Dette system kan ligeså godt anvendes direkte af en klient som det kan ses! Vi har altså også på denne måde defineret en såkaldt proxy server altså et gennemgangsled ud til en anden server! Eksemplet her bygger på at klienten sender ønsket om et bestemt dokument til serveren som så henter det på en anden server (her har vi brugt to forskellige virtuelle mapper som eksempel men systemet kunne lige så godt kalde op til en fjern server på Internettet eller på et intranet/lokalnet). language="vbscript"%> <% Option Explicit Response.ContentType = "text/xml" Dim remote_server, dok dok=request.querystring("dok") set remote_server = Server.CreateObject("Msxml2.XMLHTTP.4.0") remote_server.open "GET", " & dok, false remote_server.send Response.Write remote_server.responsexml.xml %> Vi bruger her klassen XMLHTTP som etablerer en helt normal HTTP forbindelse! HTTP serveren defineres med metoden open og requesten bliver sendt med metoden send. Vi sender ansøgningen false dvs. synkront. Hvis vi ved at responsen er et XML dokument kan vi bruge responsexml ellers kan vi bruge responsebody som returnerer en array (tabel) af bytes som kan bruges ved modtagelsen af binære data. Vi kan også bruge responsetext.

15 XMLHTTP implementerer WinInet COM komponenten som beskriver en række API er der bruges til at kommunikere på et netværk. Med WinInet kan man skrive sin egen server forholdsvis let. Vi kan også hente og kontrollere en række data om HTTP kommunikationen: language="vbscript"%> <% Option Explicit Response.ContentType = "text/xml" Dim remote_server, dok dok=request.querystring("dok") set remote_server = Server.CreateObject("Msxml2.XMLHTTP.4.0") remote_server.open "GET", " & dok, false remote_server.send Response.Write "<data><status>" & remote_server.status & "</status><statustext>" & remote_server.statustext & "</statustext>" Response.Write "<responseheaders>" & remote_server.getallresponseheaders & "</responseheaders></data>" %> Resultatet af at køre dette program kan f. eks. være:

16 I HTTP betyder en retur kode på 200 at dokumentet er returneret OK. Desuden sender serveren som vores server har kaldt op til en række HTTP headers tilbage eksempler kan ses ovenfor. Vi gør det her at vi opbygger et nyt XML dokument og sender det direkte til klienten! Når vi sender en request af sted med XMLHTTP kan vi også definere en lang række request headers f. eks. om serveren skal sende dokumentet tilbage hvis det ikke er blevet opdateret siden i går! NB ovenstående kode viser hvordan vi kan checke om kommunikationen er gået OK! Inden vi sender noget tilbage til klienten skal vi normalt sikre os at status koden er 200! Ellers skal der sendes en besked om fejlen tilbage til klienten (error handling). Ovenstående eksempler henter en statisk fil fra serveren men systemet kunne lige så godt anvendes til at hente en dynamisk service fra en server! Hvis vi kalder op til en server med visse parametre f. eks. kan vi få den anden server til at producere en vis form for service og sende resultatet tilbage til os. Dette er grundlaget for de såkaldte web services på Internettet (og lokalnet). Dette er også grundlaget for at skabe en distribueret applikation hvor forskellige servere i fællesskab løser en opgave. Send binære data: JPG billede: Følgende kan illustrere hvordan vi kan hente et JPG billede på en anden server og sende det retur til klienten vi bruger stort set koden fra før: <%@ language="vbscript"%> <% Option Explicit Response.ContentType = "image/jpeg" Dim remote_server, dok

17 dok=request.querystring("dok") set remote_server = Server.CreateObject("Msxml2.XMLHTTP.4.0") remote_server.open "GET", " & dok, false remote_server.send Response.BinaryWrite remote_server.responsebody %> Det eneste nye her at server objektet har en BinaryWrite som kan sende binære data direkte til klienten! Hvis klienten her beder om et bestemt billede prøver serveren at hente det på den anden server og hvis det går OK bliver det sendt tilbage til klienten. Vi kan ikke bruge Vis Kilde i browseren til at se teksten når vi modtager et billede fordi det modtagne ikke er tekst! Med BinaryWrite kan vi sende ALLE slags binære filer til en klient! Ovenstående eksempel kunne lige så godt bruges til at hente f. eks. et MS Word dokument! Kun en enkelt linje nemlig MIME typen på den binære type skal (eller bør) ændres: Response.ContentType = "application/msword" Vi kan du kalde serveren med en dok parameter og få returneret et Word dokument i Internet Explorer:

18 Hvis ASP siden åbnes i Mozilla browseren kommer denne boks frem: ResponseBody som blev brugt ovenfor er en tabel eller array af bytes en binær kodning af billedet, dokumentet eller objektet. Binære data i XML dokumenter:

19 Billeder, Word dokumentet eller andre objekter kan også kodes binært og sendes som en del af XML dokumentet! I ovenstående eksempel var billedet eller objektet jo ikke en del af XML dokumentet. Vi kan kode disse data på forskellige måder. I afsnittet om SAX er vist hvordan man kan kode f. eks. et JPG billede i BinHex eller Base64. Hvis vi forudsætter at vi har kodet et meget lille billede, kan det se sådan ud kodet i Base64: Som man kan se kan sådanne XML noder selvfølgeligt sendes direkte til en klient som en del af en større XML tekst! I XSD findes en særlig type som er beregnet til at indeholde binære data se afsnittet om XSD! Base64 kodning anvender et alfabet af 64 tegn (0-9, +, /, a-z, A-Z). Den koder 4 tegn (32 bits) i det som 3 tegn normalt fylder nemlig i grupper på 24 bits. Denne kodning er mere effektiv end BinHex der blot oversætter hver byte i den binære fil til to bytes. Se i øvrigt afsnittet om SAX writer en. Styling af serverens dokumenter: Hvis XML dokumenter sendes retur til klienten vil klienten i nogle tilfælde være interesseret i selve XML teksten i nogle tilfælde være interesseret i en tekst der er stylet hvor serveren har anvendt et stylesheet! Alle browsere forstår i dag en CSS styling af et XML dokument. Vi kan ikke forudsætte at en klient har en XML parser så derfor er en styling en oplagt mulighed! Vi kan skrive specielle stylesheets til de enkelte responser men vi kan også anvende mere generelle stylesheets. Som et eksempel på det sidste kan man anvende dette helt generelle stylesheet: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl=" <xsl:template match="/"> <table border="1"> <xsl:for-each select="//*"> <tr>

20 <td><xsl:value-of select="concat('element: ',name())" /></td> </tr> <xsl:for-each <tr> <td><xsl:value-of select="concat('attribut: ',name())" /></td> <td><xsl:value-of select="." /></td> </tr> </xsl:for-each> <tr> <td><xsl:value-of select="." /></td> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet> Vi kan nu bruge eksemplet fra før at klienten beder om en bestemt side: Uanset hvilket dokument klienten beder om sætter vi det samme stylesheet på dokumentet og sender det retur til klienten. Fordelen er at alle klienter kan modtage dette format: HTML med CSS stylesheets!: language="vbscript"%> <% Option Explicit Response.contentType = "text/html" Dim docxml, docxsl, docout, dok

21 dok = Request("dok") set docxml = server.createobject("msxml2.domdocument.4.0") set docxsl = server.createobject("msxml2.domdocument.4.0") docxml.async = false docxsl.async = false docxml.load Server.MapPath(dok) docxsl.load Server.MapPath("generelt.xsl") Response.Write docxml.transformnode(docxsl) %> Vi kunne selvfølgeligt også have gemt det stylede XML dokument så det evt. kunne genbruges næste gang en klient kalder op og beder om det samme dokument! Vi kunne også bruge transformnodetoobject (doc, doc) der gemmer det stylede dokument. Også subtræer i et XML dokument kan styles på denne måde. Ved hjælp af XSLT stylesheets kan vi også style det samme XML dokument til helt forskellige modtagere dels forskellige browsere som Netscape eller Internet Explorer dels til andre typer som mobil telefoner (WAP) eller PDA er (Personal Digital Assistents)! Ideen med XML er netop at dokumentets informations indhold jo skal være uafhængigt af dets præsentation eller styling! Helt modsat havd der gælder i HTML som primært er et styling sprog! Kontrol af data fra klienten: I mange tilfælde er det nødvendigt at en server kontrollerer de data som den modtager fra en klient. Dette kan nemt gøres i XML med et XSD skema (eller et DTD skema). Vi kan forestille os at serveren har en slags log in procedure hvor klienten skal sende en bestemt række af data til serveren. Vi kan f. eks. definere et skema således: <?xml version="1.0"?> <xsd:schema xmlns:xsd=" <xsd:element name="data"> <xsd:complextype> <xsd:sequence> <xsd:element name="bruger" type="xsd:string"></xsd:element> <xsd:element name="kode"> <xsd:simpletype> <xsd:restriction base="xsd:string"> <xsd:enumeration value="abc123" /> <xsd:enumeration value="xyz987" /> <xsd:enumeration value="pqr246" /> </xsd:restriction> </xsd:simpletype> </xsd:element> <xsd:element name="id" type="xsd:string"></xsd:element>

22 </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:schema> Skemaet definerer altså dels hvad der er en gyldig form i log in proceduren dels - som et eksempel også gyldige brugere! Dette sidste kan vi gennemføre med en enum som opregner alle gyldige brugere! Vi kan nu skrive en enkel formular som klienten kan bruge til at sende XML data til serveren: <Html> <Head> <Title>Valider på server</title> </Head> <Body> <form action=" method="get"> Dokument der skal valideres:<br> <textarea name="doc" id="doc" rows=12 cols=30></textarea> <br> <input type="submit" value="valider"> </form> </Body> </Html> Når der klikkes på submit knappen aktiveres serveren på ASP siden val_server.asp. Vi indtaster først et ugyldigt dokument:

23 Dette dokument er derimod gyldigt:

24 Servere som modtager data fra klienter skal normalt altid en lignende procedure! F. eks. skal en server som kontrollerer Dankort kontrollere at dels formen dels indholdet er gyldigt! Eller en avis server hvor artikler til en avis kan indtastes skal checke at det indtastede overholder et bestemt format for at kunne bruges siden hen! Vores ASP dokument som kontrollerer request en ser sådan ud: language="vbscript"%> <% Option Explicit Dim docxml, docxsl, docout, str, skema str = request.querystring("doc") set docxml = server.createobject("msxml2.domdocument.4.0") set skema = server.createobject("msxml2.xmlschemacache.4.0") skema.add "", " docxml.validateonparse = true docxml.async = false docxml.schemas = skema docxml.loadxml str if docxml.parseerror.errorcode <> 0 then response.write "<h3 style='background-color:red'>der er en fejl i det indsendte XML dokument: </h3><h3>" & vbnewline & docxml.parseerror.reason & "</h3><h3> Linje: " & docxml.parseerror.line response.end end if Response.Write "<h2 style='background-color:yellow'>valideret:</h2> " %>

25 Eksempel: En avis server: Vi kan her genbruge koden fra før i høj grad. Vi ønsker en bruger grænse flade som denne: Vi kan skrive et XSD skema i stil med dette: <?xml version="1.0"?> <xsd:schema xmlns:xsd=" <xsd:element name="data"> <xsd:complextype> <xsd:sequence> <xsd:element name="forfatter" /> <xsd:element name="overskrift" /> <xsd:element name="tekst" /> <xsd:element name="stikord"> <xsd:simpletype>

26 <xsd:restriction base="xsd:string"> <xsd:enumeration value="indenrigs" /> <xsd:enumeration value="international" /> <xsd:enumeration value="kultur" /> </xsd:restriction> </xsd:simpletype> </xsd:element> </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:schema> Nu kan vi validere/kontrollere de indtastede data på samme måde som før! Skemaet kan selvfølgeligt gøres mere eller mindre stramt. Her har vi brugt det eksempel at stikord skal være af en bestemt værdi en enumeration. På samme måde kunne vi kontrollere at kun visse personer er i stand til at sende artikler til avisen! NB Når vi som her opretter en skema cache gemmer vi det kompilerede skema og kan bruge det samme kompilerede skema igen og igen! På den måde opnår vi en stor performance gevinst serveren vil arbejde væsentligt hurtigere! Man kan tilføje en række skemaer til en skema cache INDEN serveren går i gang med at modtage klienter! Disse skemaer ligger så klar til brug. De kan også gemmes i objektet Application på denne måde så de fungerer lige så længe serveren kører!: skema_cache = Application("skema_cache") if skema_cache = null then set skema_cache = server.createobject("msxml2.xmlschemacache.4.0") skema_cache.add "uri:aviser_namespace", Server.MapPath ("avis.xsd") skema_cache.add "uri:aviser_namespace1", Server.MapPath ("avis1.xsd") skema_cache.add "uri:aviser_namespace2", Server.MapPath ("avis2.xsd") Application("skema_cache") = skema_cache end if docxml.schemas = skema_cache Metoden add fungerer på den måde at den første parameter er det targetnamespace som skemaet har og den anden parameter er skemaet placering eller URL. En server der cacher en række stylesheets: På samme måde er det hensigtsmæssigt at de stylesheets som serveren bruger igen og igen bliver cachede altså gemt i RAM hukommelsen så længe serveren kører. De ligger så hele tiden klar. Ellers skulle de for hver gang hentes enten fra disken eller via HTTP fra en netværksadresse! Det er en indlysende mere effektiv foranstaltning at de ligger klar når de skal bruges til at formattere dokumenter til klienterne! Det system som anvendes i MSXML er at oprette en XSLT processor! Når vi har en sådan processor kan vi anvende en række nye metoder når vi styler!

27 Dette kan ske på denne måde: language="jscript"%> <% Response.contentType = "text/html" var xsl = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.4.0"); var doc = new ActiveXObject("Msxml2.DOMDocument.4.0"); doc.load("c:/xmlkursus/asp/tlf.xml"); xsl.async=false; xsl.load("c:/xmlkursus/asp/generelt.xsl"); var template=server.createobject("msxml2.xsltemplate.4.0"); template.stylesheet=xsl; Session( style_cache )=template; var processor=template.createprocessor(); processor.addparameter("farve","'red'"); processor.input= doc; processor.output= Response; processor.transform(); %> Vi lægger her vores templat over i Session dvs. at templaten lever videre som et globalt objekt hen over hele den session som pågår med klienten! På den måde spares meget og processen går hurtigere! En templat er et objekt som kan rumme et FreeThreadedDOMDocument dvs. et dokument som kan bruges af mange processer samtidigt! Et almindeligt DOMDocument er rental threaded dvs. det kan kun bruges i een proces og dør derefter! Vi bruger vores templat objekt til at oprette en XSLT processor. Når vi har en processor kan vi tilføkje parametre til stylingen og tilføje en startmode (hvis vi har defineret XSLT templater med forskellige modes!). En processor gør altså stylingen langt mere fleksibel. Det som kan opnås på denne måde svarer præcist til at anvende msxsl.exe (jvf afsnittet om XSLT stylesheets). I dette tilfælde transformer vi direkte til en stream nemlig til Response stream en til klienten. Vi kunne også have valgt en output der var et DOMDocument! Den viste metode er altså ikke kun gyldig i server programmering men også hvis vi i øvrigt vil gennemføre en styling af et XML dokument. Se i øvrigt afsnittet om XSLT stylesheets. Forskellige styles til forskellige modtagere: Vi kan på en enkelt måde finde ud af data om den klient der kalder op ved hjælp af en variabel HTTP_USER_AGENT som er en del af de HTTP headers som en klient sender til serveren. Dette kan f. eks. gøres sådan:

28 language="vbscript"%> <% Option Explicit Dim str, browser, version Response.contentType = "text/xml" str = Request.ServerVariables ("HTTP_USER_AGENT") if instr(str, "IE") then browser = "IE" version=cint(mid(str, instr(str, "MSIE") +5,1)) elseif instr(str, "Gecko") then browser = "Netscape" version = cint(mid(str, instrrev(str, "/") +1, 2)) elseif instr(str, "Mozilla") then browser = "Netscape" version = cint(mid(str, revinstr(str, "/") +1, 1)) end if Response.write "<HTTP_USER_AGENT><browser>"&browser&"</browser><version>"&version&"</version></ HTTP_USER_AGENT>" %> Når vi kalder op får vi disse beskeder:

29 Dette kan så udnyttes til at differentiere med forskellige stylesheets til forskellige browsere. I dette eksempel bruger vi grundlæggende det samme stylesheet men det kaldes med forskellige parametre og forskellig startmode!: <%@ language="vbscript"%> <% Response.contentType = "text/html" str = Request.ServerVariables ("HTTP_USER_AGENT") if instr(str, "IE") then browser = "IE" version = cint(mid(str, instr(str, "MSIE") +5,1))

30 elseif instr(str, "Gecko") then browser = "Netscape" version = cint(mid(str, instrrev(str, "/") +1, 2)) elseif instr(str, "Mozilla") then browser = "Netscape" version = cint(mid(str, revinstr(str, "/") +1, 1)) end if set xsl = Server.CreateObject("Msxml2.FreeThreadedDOMDocument.4.0") set doc = Server.CreateObject("Msxml2.DOMDocument.4.0") doc.load "c:/xmlkursus/asp/tlf.xml" xsl.async = false xsl.load "c:/xmlkursus/asp/generelt.xsl" set template = Server.CreateObject("Msxml2.XSLTemplate.4.0") template.stylesheet = xsl set processor = template.createprocessor() if browser = "IE" then processor.addparameter "farve","'#669966'" processor.setstartmode ("div") end if if browser = "Netscape" then processor.addparameter "farve","'#eeffee'" processor.setstartmode ("tabel") end if processor.input= doc processor.output = Response processor.transform() %> Vores stylesheet generelt.xsl ser således ud: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl=" <xsl:param name="farve" /> <xsl:template match="/" mode="tabel">

31 <body bgcolor="{$farve}"> <table border="1"> <xsl:for-each select="//*"> <tr> <td><xsl:value-of select="concat('element: ',name())" /></td> </tr> <xsl:for-each <tr> <td><xsl:value-of select="concat('attribut: ',name())" /></td> <td><xsl:value-of select="." /></td> </tr> </xsl:for-each> <tr> <td><xsl:value-of select="." /></td> </tr> </xsl:for-each> </table> </body> </xsl:template> <xsl:template match="/" mode="div"> <xsl:for-each select="//*"> <div style="width:150pt;background-color:{$farve}"> <xsl:value-of select="concat('element: ',name())" /> </div> <xsl:for-each <div style="width:150pt;background-color:{$farve}"> <xsl:value-of select="concat('attribut: ',name())" /> </div> <div style="width:150pt;background-color:{$farve}"> <xsl:value-of select="." /> </div> </xsl:for-each> <div> <xsl:value-of select="." /> </div> </xsl:for-each> </xsl:template> </xsl:stylesheet> Vi kan nu se hvordan forskellige browsere modtager forskellige transformationer! Vi anvender en mode = tabel til Netscape og en mode = div til Internet Explorer! Dette system er endnu mere interessant hvis vi f. eks. skelner mellem WAP (mobil telefoner) på den ene side og browsere på den anden side osv! På denne måde kan en XML server betjene meget forskellige klienter med grundlæggende de samme XML dokumenter!

32 Data Islands eller XML øer: Vi vil i det følgende se på hvordan en server kan sende XML dokumenter til en klient. Når vi taler om en server mener vi egentligt en hvilken som helst server: På Internettet, på et lokalt net (eller intra net) eller denne ene uafhængige maskine!

33 Det er meget almindeligt at sende data i form af en isoleret - data island eller ø. Fordelen er at XML dokumentet sendes sammen med HTML siden til klienten. Klienten skal altså ikke kalde op til serveren to eller måske mange gange for at hente de relevante XML data! Klienten får det hele på een gang! I Internet Explorer er en data island især en ny tag <xml> som forstås af Internet Explorer og kun af denne browser! Dette kan i strukturen skrives på denne måde: <html> <body> <h3>dette er en data island i IE med et nyt xml element.</h3> <xml id="x"> <x> <y>44</y> </x> </xml> <script> var doc=x.xmldocument; alert(doc.xml); </script> </body> </html> XML dokumentet lægges ind i <xml> elementet direkte og browseren forstår koden xml! Internet Explorer har skabt en short cut idet programmet instantierer et DOMDocument med MSXML parseren og indlæser teksten i <xml<! Derfor fungerer dette kun i Internet Explorer! Hvis vi viser dette HTML dokument vises dette:

34 Det interessante er mest at IE forstår at den ikke skal vise tekst indholdet af den nye tag <xml>! Normalt vil en browser altid vise tekst indholdet hvis den støder på et element som den ikke kender! Hvis jeg skriver: <mintekst>dette er min tekst.</mintekst> vil en browser normalt overspringe den tag som den ikke forstår og blot vise teksten eller tekst noden! Det er derfor at <xml> kun fungerer i IE! Til sammenligning er her Mozilla som viser det samme dokument: I ovenstående eksempel kan vi se noget andet: Det er muligt at sende XML data til en klient og samtidigt medsende et bruger interface! Således at klienten cacher (gemmer i hukommelsen) XML dokumentet og samtidigt kan bruge det, søge i materialet osv. Vi eller klienten - kan anvende f. eks. alle metoder fra DOM! Serveren kan altså på den måde sende et program med evt. mange data til klienten! I nedenstående eksempel er dette skrevet i et ASP dokument som klienter kan kalde op til: <%@ LANGUAGE="JSCRIPT" %> <xml id="xml_document"> <person persontype="arbejde"> <fornavn>erik</fornavn> <efternavn>jensen</efternavn> <telefon> </telefon> </person> </xml> <form> <h3>klik for at vise XML dokumentet: </h3> <input type="button" value="vis XML dokument" onclick="vis()" /> </form>

35 <script> function vis(){ var doc=xml_document.xmldocument; alert(doc.xml); } </script> </html>' Her kan vi se at serveren sender en lille form med en knap som kan aktivere kalde - en script funktion. Dette system kan udbygges næsten uden grænser! Læg mærke til at selve XML dokumentet er skjult kun tilgængeligt gennem interfaces eller metoder! Det er ikke meningen at XML dokumentet som sådant skal vises (men man kan selvfølgeligt bruge Vis Kilde!). Bemærk at vi kan skrive HTML teksten direkte i ASP dokumentet uden ekstra koder! Fordelen er - som vi så - at klienten ikke skal kalde op til serveren hele tiden men selv sidder med materialet cachet! Et andet og mere fleksibelt eksempel på øer i Internet Explorer er følgende hvor et eventuelt stort XML dokument indlæses og hvor klienten også modtager en søgeform til at søge i dokumentet: <%@ LANGUAGE="JSCRIPT" %> <html> <xml id="xml_document" src="tlf.xml" /> <form> <h3>telefonliste: Indtast fornavn:</h3> <input type="text" value="eydna" id="tekst" name="tekst" /> <br /> <input type="button" value="vis XML dokument" onclick="vis()" /> </form> <script> function vis(){ var doc=xml_document.xmldocument;

36 var str=document.all("tekst").value; //alert(doc.selectsinglenode("//fornavn[.='eydna']").xml); var nodeset=doc.selectsinglenode("//fornavn[.='"+str+"']"); if(nodeset==null)alert("personen er ikke fundet."); else { alert(nodeset.parentnode.xml); } } </script> </html>' Programmet søger efter et bestemt fornavn og leverer den første person som har dette fornavn der kunne jo være flere!: Denne metode er mere fleksibel fordi <xml> bruger en src attribut hvorved hele dokumentet ikke skal stå i selve ASP dokumentet hvilket jo ikke altid er lige praktisk! I dette tilfælde skal både HTML dokumentet og src-dokumentet downloades fra serveren - to gange download! Alternativer til <xml> elementet: Hvis man ved at alle klienter har installeret Internet Explorer og dermed alle råder over Microsoft XML parseren! - er ovenstående en udmærket løsning! I alle andre tilfælde fungerer den ikke. Vi kan sende XML data på andre måder f. eks. som værdien af et hidden felt i en HTML form. Dette er en noget andet løsning, men den fungerer i praktisk taget alle browsere. Her er vist et eksempel hvor XML også er indlejret skjult i HTML dokumentet. I det nedenstående er kun vist selve HTML dokumentet som serveren sender til klienten: <html> <body> <form name="f1" id="f1">

37 <input id="x" name="x" type="hidden" value=" <?xml version='1.0'?> <telefonliste> <person id='p1'> <fornavn>eydna</fornavn> <efternavn>hansen</efternavn> <telefon> </telefon> </person> <person id='p2'> <fornavn>cecilie</fornavn> <efternavn>hansen</efternavn> <telefon> </telefon> </person> </telefonliste> " /> <h3>dette er et XML dokument som ligger i et hidden input felt.</h3> <input type="button" value="vis XML" onclick="vis()" /> </form> <script> function vis(){ var str=document.f1.x.value; alert(str); } </script> </body> </html> Denne metode fungerer fint i browsere som Netscape (vist her) eller Mozilla:

38 Problemet med denne metode er selvfølgeligt at det sendte XML dokument bliver sendt som ren tekst og at der først derefter skal skrives kode til at indlæse denne streng i et nyt DOMDocument, som skal instantieres! Og det kan kun gøres ved at man kender modtagerens parser hvis klienten overhovedet har en XML parser! På et lokalnet kender man normalt altid klienternes software og browsere! Hvis man ikke kender klienternes browsere og parsere er det derfor normalt bedst at lave alt arbejdet på serveren og sende klienten resultatet f. eks. som almindeligt HTML som alle browsere forstår! Anvendelsen af komponenter på siden: For at give nogle flere funktioner til statiske HTML sider fra en server kan man indsætte komponenter i den side som serveren sender! Der findes bl. a. disse komponenter: 1. Applets som er Java klasser som forstås af stort set alle browsere og som voldsomt kan forøge mulighederne. En applet kan udgøre en XML parser! Applets virker på alle platforme eller operativ systemer! 2. ActiveX objekter som er Windows komponenter som f.eks. de forskellige MSXML parser komponenter 3. Kontroller skrevet til platformen.net som indtil videre stort set kun kører på Windows men også findes til andre operativsystemer. Ved at lægge en komponent ind i siden bliver serveren helt uafhængig af hvilket software klienten har! Komponenten downloades simpelt hen sammen med HTML siden! Applets: Der kan downloades mængder af færdige applets fra Internettet. En applet er et lille program en Java klasse fil - som stort set kan det samme som et rigtigt program som en C eller Java klasse men er underkastet visse sikkerheds begrænsninger! En applet downloades fra en fremmed server og kan derfor ikke skrive eller læse fra de lokale filer! En applet kan indsættes på en HTML side på denne måde: <html> <body> <applet name="xslcontrol" code="com.icl.saxon.xsltprocessorapplet.class" archive="saxon.jar" height="0" width"0"> <param name="documenturl" value="telefonliste.xml"/> <param name="styleurl" value="flexnumber.xsl"/> </applet>

39 </body> </html> Vi indsætter altså en komponent på siden. En applet skal som minimum defineres ved en code navnet på klassen her indsætter vi en XSLT processor som komponent! og evt. en archive der refererer til en Java jar fil (en samling af klasser) som definerer klassen. I dette tilfælde henvises som archive til saxon.jar som er SAXON processoren en af de anerkendte XML parsere. Komponenter kan være synlige eller usynlige! Denne applet er et eksempel på en usynlig komponent den kan jo ikke ses på siden! Mange applets vil typisk være synlige komponenter f. eks. vise knapper, billeder eller tekstbokse! Vores applet gives et navn som så kan bruges i script kode! I dette tilfælde har SAXON processoren kun to parametre nemlig et XML dokument og et XSL dokument som bruges til transformation. Disse parametre kan vi så frit sætte i HTML dokumentet! Men denne applet som bruger saxon.jar - kunne være skrevet helt anderledes! Et bruger interface til en sådan applet kan se således ud:

40 Vi kan se at man kan vælge forskellige XML dokumenter men i dette tilfælde styles de altid med det samme stylesheet men det kan sagtens ændres. De tre kolonner viser XML, XSL og HTML dokumentet eller eventuelt selve HTML teksten. Det er vigtigt at huske at dette skærm billeder IKKE stammer fra komponenten vores applet men er HTML kode vi har skrevet uafhængigt af komponenten! Et eksempel på brug af SAXON processoren: Vi kan skrive scripts der anvender denne applet. Nedenstående er et eksempel på et simpelt script som gør det. Det er vigtigt at man for hvert kald til processoren (vores applet) kalder metoden freecache() ellers bryder processoren sammen!: <html> <script language="javascript"> function clear() { document.xsl_komponent.freecache(); } function transform(){ clear(); document.xsl_komponent.setdocumenturl(xmltransform.xmldoc.value); var xml_text=document.xsl_komponent.getsourcetreeastext(); var xsl_text=document.xsl_komponent.getstyletreeastext(); var html_text=document.xsl_komponent.gethtmltext(); vistekst.innertext=html_text; } </script> <body onload="clear();" bgcolor="#669966" text="#ffffff"> <form name="xmltransform" action="" method="post"> <h3> Transformer XML dokument:</h3> <h3>stien til XML dokumentet:</h3> <input type="text" id="xmldoc" name="xmldoc" size="50"/> <h3>stien til XSLT dokumentet:</h3> <input type="text" id="xsldoc" name="xsldoc" size="50" /> <br /><br /><input type="button" name="transformbutton" value="brug Stylesheet" onclick="transform();"> </form> <div style="color:#030303;background-color:#dedede" id="vistekst"></div> <div style="color:#030303;background-color:#fefefe" id="vistekst1"></div> <applet name="xsl_komponent" code="com.icl.saxon.xsltprocessorapplet.class" archive="saxon.jar" height="0" width"0">

41 <param name="documenturl" value="telefonliste.xml"> <param name="styleurl" value="flexnumber.xsl"> </applet> </body> </html> Læg mærke til at processoren escaper det danske bogstav æ fordi vi ikke har angivet en encoding som f. eks. iso med danske bogstaver! I dette tilfælde transformeres jo til HTML. Den afgørende fordel ved på denne måde at indlejre en applet komponent er at vi er sikker på at klienten har den korrekte XML parser nemlig den parser som vi sender i vores applet! Dette system virker så altid uanset om klienten sidder ved en Windows, Unix, Linux eller Mac maskine! ActiveX objekter og COM klasser: I Windows systemet kan indsættes ActiveX komponenter eller Windows klasser på samme måde som applets. Disse kan indsættes f. eks. med en <object>. Også applets kan indsættes med en <object> på samme måde - <applet> er blot den traditionelle måde at gøre det på. Nedenstående eksempel viser hvordan vi kan indsætte en XML parser inden i det HTML dokument som sendes til klienten! På den måde er vi serveren sikre på at klienten har den software der skal til for at data behandle XML data!

42 <object id="chilkat" classid="clsid:10a9e213-db4b-4a18-93d8-f85eaeee9b3a" height="0" width="0"> Dette er chilkat objektet. </object> <script> chilkat.loadxmlfile("c:/xmlkursus/asp/telefonliste.xml"); alert(chilkat.getxml()); </script> Også i dette tilfælde indsætter vi en usynlig komponent! Som det ses er eksemplet uhyre enkelt. Vi indsætter en ChilkatXml AspXml komponent og derefter kan vi skrive lige så meget script som det skal være for scriptet bruger jo Chilkat parseren ikke f. eks. MSXML parseren! Alle klienter på Windows platformen vil kunne bruge programmet! I <object> skal angives et klasse ID for klassen. I Windows findes det i system registrerings databasen ved at søge på Chilkat AspXml! Alle registrerede komponenter får et unikt hexadecimalt classid af denne type! Metoder og properties i komponenten Chilkat AspXml som her er downloadet fra Internettet kan findes ved at åbne et Microsoft Office program som f. eks. Access og vælge Funktioner -> Visual Basic. Man kan så sætte en reference til Chilkat komponenten hvis den ellers er installeret på maskinen. Derefter kan man se alle metoder og properties i Visual Basic editoren i Office programmet!

43 RUNAT Server: Ovenstående eksempel kan som regel skrives lidt mere brugervenligt i det vi bruger en ProgID i stedet for et klasse ID på denne måde: <object ID="doc" PROGID="AspXml.AspXml" RUNAT="SERVER" > </object> <%@language="jscript"%> <% Response.contentType="text/xml"; doc.loadxmlfile("c:/xmlkursus/asp/scenespeech.xml"); Response.write(doc.GetXml()); %> Dette fungerer på den måde at Chilkat komponenten AspXml.AspXml anvendes af klienten men at den kører på serveren! Fordelen er at serveren på denne måde er sikker på at klienten råder over en XML parser! ASP siden her kan så kaldes af en klient. XML dokumentet er fra Shakespeares Othello:

44 På samme måde kan vi selvfølgelig indsætte et objekt som refererer til Microsoft parseren på denne måde: <object ID="doc" PROGID="Msxml2.DOMDocument.4.0" RUNAT="SERVER" > </object> <% Response.contentType="text/xml"; doc.load("c:/xmlkursus/asp/varer_ny_transformet.xml"); Response.write(doc.lastChild.childNodes(11).xml); %>

45 En Web Service eller Internet Tjeneste: I de sidste år er Web Services blevet det helt store kup på Internettet! En Web Service eller Internet Tjeneste befinder sig på en URL d.v.s. på en http adresse. I det følgende eksempel vil vi oprette en Web Service på som et eksempel men den kunne lige så godt ligge på en rigtig server på Internettet eller et lokalt netværk. En Web Service er tilgængelig for alle klienter som befinder sig på det pågældende net altså i vores eksempel kun på maskinens interne net! En Web Service svarer ret nøje til RPC - Remote Procedure Call - som har en lang glorværdig fortid i UNIX styresystemet! En Web Service bruges til at en komponent eller et program kan kalde op til en anden komponent (et andet program) og få et svar en tjeneste tilbage. Den store forskel i forhold til en almindelig HTML web side er at en Web Service ikke har noget bruger interface den er blot en metode som kan kaldes over et netværk. Den er tænkt som en udvidelse af de funktioner som allerede findes på min egen maskine. Når jeg (min maskine) kalder en Web Service ser det ud som om det er en lokal funktion der kaldes! RPC eller Internet Tjenester skal altså udviske skellet mellem forskellige maskiner (eller processer) på et netværk! Dette har altid været ideen i UNIX (og i Linux). Derfor er dette system det centrale i det som i dag kaldes distribuerede systemer distributed processing altså at en del af databehandlingen simpelt hen foretages på en anden, fjern komputer! En RPC eller Web Service kan foregå på den samme maskine mellem forskellige processer eller typisk mellem forskellige processer på forskellige maskiner. Vi opretter en ny virtuel mappe ved navn I denne mappe gemmer vi et default ASP dokument ved navn default.asp, som skal definere vores Web Service. Vores Internet

46 Tjeneste vil kun have een metode, som viser klokkeslettet! Den returnerer altså noget i retning af dette: En Web Service returnerer normalt eller stort set - altid et XML dokument. Ofte bruges SOAP (Simple Object Access Protocol) som formatet eller protokollen af en Web Service. Den vigtigste grund hertil er at det er ret afgørende at modtager-processen er klar over hvilken type der returneres. Man har ikke megen glæde af at alt er af typen tekst eller string! SOAP bruger her XSD typerne som er de eneste typer som er bredt anerkendt og som forstås af alle operativ systemer! En offentlig Web Service kaldes jo af alle typer af maskiner gennem en HTTP adresse! Den skal derfor fungere helt generelt! I vores eksempel har vi ikke valgt at bruge SOAP men et simplere format der dog anvender XSD typerne. Vores default.asp ser således ud: <%@language="jscript" %> <% var d=new Date(); var h=d.gethours(); if(h<10)h='0'+h; var m=d.getminutes(); if(m<10)m='0'+m; var s=d.getseconds(); if(s<10)s='0'+s; var doc=server.createobject("msxml2.domdocument.4.0"); var str='<datetime xmlns:xsi=" str+=' xmlns:xsd=" '; str+=' <tid xsi:type="xsd:time">'+h+':'+m+':'+s+'</tid></datetime>'; doc.loadxml(str); Response.ContentType="text/xml";

Træ struktur: Alle XML dokumenter er grafer og gyldige træ strukturer. Et konkret eksempel herpå kunne være: <data>data.</data>

Træ struktur: Alle XML dokumenter er grafer og gyldige træ strukturer. Et konkret eksempel herpå kunne være: <data>data.</data> XML generelt:...1 XML:...1 Træ struktur:...2 Kinesiske æsker eller russiske dukker:...4 Besøgs eller Visiting algoritmer:...5 XML og HTML:...8 Hvad er en parser?...9 Velformet:...11 Et script program der

Læs mere

Namespaces. Vi kan kvalificere elementer på denne måde: <?xml version="1.0" encoding="iso-8859-1"?>

Namespaces. Vi kan kvalificere elementer på denne måde: <?xml version=1.0 encoding=iso-8859-1?> Namespaces...1 Default namespace:...6 Præfiks:...7 To slags navne i XML:...11 Standard namespaces:...14 RDF Resource Description Framework:...18 Attributter:...19 DTD skemaer og namespaces:...21 Namespaces.

Læs mere

Encoding:...1 Et tegn sæt (character set):...1 UTF-8 og UTF-16 (Unicode):...2

Encoding:...1 Et tegn sæt (character set):...1 UTF-8 og UTF-16 (Unicode):...2 Encoding:...1 Et tegn sæt (character set):...1 UTF-8 og UTF-16 (Unicode):...2 Encoding: Vi har tidligere set på spørgsmålet om et XML dokuments encoding. Det er generelt altid en god ide at gemme et dokument

Læs mere

SAX Simple API for XML.

SAX Simple API for XML. SAX Simple API for XML. En API (Application Programming Interface) et bibliotek eller et sæt af funktioner eller metoder. SAX er et sådant bibliotek af abstrakte metoder som f. eks. startdocument() eller

Læs mere

DTD Document Type Definition:

DTD Document Type Definition: DTD Document Type Definition:...1 Sekvens:...2 Validering:...3 Attributter i DTD:...8 In-line DTD skemaer:...10 Entiteter:...11 Entiteter som værdier i attributter:...13 DTD skemaer kun med entiteter:...14

Læs mere

Installér din Officepakke 2013

Installér din Officepakke 2013 Vær opmærksom på der godt kan forekomme andre billeder end dem som er illustreret. Dette er grundet ændringer fra microsoft. Blandt andet bliver SkyDrive ændret til OneDrive. Er du i tvivl om noget kan

Læs mere

JavaScript. nedarvning.

JavaScript. nedarvning. JavaScript er et sprog, der kan give en hjemmeside mere funktionalitet og gøre den interaktiv, så den reagerer på læsernes handlinger. CGI (Common Gateway Interface) har hidtil været de protokoller, man

Læs mere

PHP Quick Teknisk Ordbog

PHP Quick Teknisk Ordbog PHP Quick Teknisk Ordbog Af Daniel Pedersen PHP Quick Teknisk Ordbog 1 Indhold De mest brugte tekniske udtryk benyttet inden for web udvikling. Du vil kunne slå de enkelte ord op og læse om hvad de betyder,

Læs mere

IT Support Guide. Installation af netværksprinter (direkte IP print)

IT Support Guide. Installation af netværksprinter (direkte IP print) IT Support Guide Denne guide er hentet på www.spelling.dk Program: Microsoft Windows Vista Program sprog version: ENG (US) Guide emne: Installation af netværksprinter (direkte IP print) Publikationsnr.:

Læs mere

Opsætning af forbindelse til Danmarks Statistik

Opsætning af forbindelse til Danmarks Statistik 23. april 2015 MTL Forskningsservice Opsætning af forbindelse til Danmarks Statistik Denne vejledning beskriver opsætning og logonprocedure fra Windowsmaskiner ved ekstern logon til DST s forskerservere

Læs mere

PID2000 Archive Service

PID2000 Archive Service PROLON CONTROL SYSTEMS Herstedvesterstræde 56 DK-2620 Albertslund Danmark Tlf.: (+45) 43620625 Fax: (+45) 43623125 PID2000 Archive Service Bruger vejledning Juni 2002 Denne manual beskriver brugen af softwaren

Læs mere

SAX Simple API for XML.

SAX Simple API for XML. SAX Simple API for XML....1 Funktioner:...2 Skrive XML dokumenter med SAX writer:...4 SAX metoder i Visual Basic:...5 error handler:...6 En content handler:...7 At validere et XML dokument med SAX:...13

Læs mere

Webserverprogrammering

Webserverprogrammering Webserverprogrammering WSP fortsat - dag 11 Behandling af XML (StAX) Syndikering og RSS med XML JAXB - XML Java-objekter Projekthjælp Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

Læs mere

Installation og Drift. Aplanner for Windows Systemer Version 8.15

Installation og Drift. Aplanner for Windows Systemer Version 8.15 Installation og Drift Aplanner for Windows Systemer Version 8.15 Aplanner for Windows løsninger Tekniske forudsætninger Krav vedr. SQL Server SQL Server: SQL Server 2008 Express, SQL Server 2008 R2 eller

Læs mere

Kom godt i gang med OneDrive

Kom godt i gang med OneDrive Kom godt i gang med OneDrive Office365 er en mulighed for lærere og elever at bruge en office-pakke på egne enheder - man kan downloade det til brug på pc - mac - tablets og smartphones, i alt op til 5

Læs mere

java -classpath.;xercesimpl.jar;xercessamples.jar;c:\java\java\lib\classes.zip sax.counter -v -s -f -t telefonliste.xml

java -classpath.;xercesimpl.jar;xercessamples.jar;c:\java\java\lib\classes.zip sax.counter -v -s -f -t telefonliste.xml Xerces parseren....1 sax.counter:...1 sax.documenttracer:...2 sax.writer:...3 dom.getelementsbytagname:...4 dom.writer:...4 dom.asbuilder:...5 XMLGrammarBuilder:...6 PSVIParser:...7 Xerces parseren. Vi

Læs mere

Microsoft Dynamics CRM 2013

Microsoft Dynamics CRM 2013 Microsoft Dynamics CRM 2013 Dashboard, PowerPivot og PowerView CRM User Group Denmark www.easyconsult.dk Præsentation Henrik Jensen Microsoft Dynamics CRM-arkitekt hj@easyconsult.dk Arbejdet med CRM-systemer

Læs mere

Mini brugermanual CMD 5.1

Mini brugermanual CMD 5.1 Mini brugermanual CMD 5.1 Kom i gang For at tilgå CMD skal du åbne en web browser og indtaste URL en på dit CMD website i adressefeltet, hvorefter dialogboksen til log in vises. 1. Indtast dit brugernavn

Læs mere

VDI-GUIDE FOR AALESTRUP REALSKOLE

VDI-GUIDE FOR AALESTRUP REALSKOLE VDI-GUIDE FOR AALESTRUP REALSKOLE Af Martin Lohse Mikkelsen IT-vejleder - Side 1 af 37 Forord Dette dokument skal hjælpe dig med brugen af skolens VDI system. Et VDI-system er en virtuel computer, som

Læs mere

Google Chrome side 1 af13

Google Chrome side 1 af13 Google Chrome side 1 af13 Indholdsfortegnelse: Download Google Chrome... Side 2 Overblik... Side 3 Angiv startside... Side 7 Søg direkte i adresselinjen... Side 8 Bogmærker sider... Side 8 Bogmærkeadministratoren...

Læs mere

Installation og Drift. Aplanner for Windows Systemer Version 8.15.12

Installation og Drift. Aplanner for Windows Systemer Version 8.15.12 Installation og Drift Aplanner for Windows Systemer Version 8.15.12 Aplanner for Windows løsninger Anbefalet driftsopsætning Cloud løsning med database hos PlanAHead Alle brugere, der administrer vagtplaner

Læs mere

Web- og serverprogrammering

Web- og serverprogrammering Web- og serverprogrammering Introduktion til web- og serverprogrammering - dag 1 Overblik over WSP, eller: de 3+x sprog i webprogrammering (HTML, CSS, JavaScript, plus x serverside-sprog) Installation

Læs mere

Interaktionsudvikling

Interaktionsudvikling Projektopgave 3: Interaktionsudvikling CPH business, klasse: MulA2013 Projektansvarlige undervisere Thomas Hartmann MereteGeldermann lützen: Projekt produkt url: www.amalieardahl.dk/projekt3/index.html

Læs mere

JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007

JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007 JSP, Tomcat Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 10.october 2007 Hvad er JSP(Java Server Pages): Det er en teknik som er bygget ovenover Servlets teknikken, men fidusen er at det skal

Læs mere

Manual for installation og brug af Ad-aware version 2007

Manual for installation og brug af Ad-aware version 2007 Manual for installation og brug af Ad-aware version 2007 af Anette Behrendt Copyright 2007 og alle rettigheder forbeholdt. NB. Du kan aktivere links, ved at klikke på den tynde streg, så bliver du ført

Læs mere

Kravspecifikation For. Gruppen

Kravspecifikation For. Gruppen Kravspecifikation For Gruppen Indholdsfortegnelse 1. INDLEDNING...3 1.1 FORMÅL...3 1.2 REFERENCER...3 1.3 LÆSEVEJLEDNING...3 2. GENEREL BESKRIVELSE...4 2.1 SYSTEM BESKRIVELSE...4 2.2 SYSTEMETS FUNKTION...4

Læs mere

Hjælp under login på Mit DLR Oktober 2015

Hjælp under login på Mit DLR Oktober 2015 Hjælp under login på Mit DLR Oktober 2015 Jeg logger ind med bruger-id og nøglekort og får at vide, at der ikke er nogen sager i DLR Der er logget ind med forkert NemID. Vi oplever mange henvendelser,

Læs mere

Brugermanual. Tripple Track Fleet

Brugermanual. Tripple Track Fleet Brugermanual Tripple Track Fleet Version 3.15 Side 1 af 19 Indholdsfortegnelse Installation:... 3 Login:... 3 Se alle biler:... 4 Status skift:... 5 Historie:... 7 Punkt information:... 9 Find adresse:...

Læs mere

Advanced Word Template Brugermanual

Advanced Word Template Brugermanual Advanced Word Template Brugermanual Forord: Advanced Word Template er et værktøj, der anvendes sammen med Microsoft Word til at opbygge ensartet beskrivelser på en mere intelligent måde end Copy and Paste

Læs mere

Dansk Ride Forbund Stævnesystem 2 Installationsvejledning

Dansk Ride Forbund Stævnesystem 2 Installationsvejledning Dansk Ride Forbund Stævnesystem 2 Installationsvejledning Redigeret Marts 2009 DANSK RIDE FORBUND Stævnesystem 2 Installationsvejledning Side 1 af 19 Indholdsfortegnelse: 1. Minimumskrav 3 2. Download

Læs mere

Opstart og adgange til Ejersiden

Opstart og adgange til Ejersiden Opstart og adgange til Ejersiden Indhold Internet Explorer og andre browsere til Ejersiden... 1 Login til Ejersiden... 2 Første login til Ejersiden... 2 Ændring af kodeord ved første login... 3 Bestilling

Læs mere

Eksempel på transformation: XML -> RTF dokument:

Eksempel på transformation: XML -> RTF dokument: Eksempel på transformation: XML -> RTF dokument: RTF dokumenter er Rich Text dokumenter der kan formateres med farver og forskellige skrifttyper. I nogle tilfælde kan det være interessant at transformere

Læs mere

Civilstyrelsen. Lex Dania editor 2010. Installationsvejledning. Version: 1.0 2012-03-09

Civilstyrelsen. Lex Dania editor 2010. Installationsvejledning. Version: 1.0 2012-03-09 Installationsvejledning Version: 1.0 2012-03-09 Indhold 1 INDLEDNING... 3 1.1 HVAD ER LEX DANIA EDITOR 2010?... 3 1.2 FORUDSÆTNINGER FOR ANVENDELSE... 3 1.2.1 Hardware... 3 1.2.2 Software... 3 1.3 DISTRIBUTION

Læs mere

Programmering I Java/C#

Programmering I Java/C# Programmering I Java/C# Dit første projekt Datatekniker Intro to C# C# (C Sharp) Et enkelt, moderne, generelt anvendeligt, objektorienteret programmeringssprog Udviklet af Microsoft, ledet af danskeren

Læs mere

Manual og Hjælp Skoletasken 2

Manual og Hjælp Skoletasken 2 Manual og Hjælp Skoletasken 2 I Skoletasken 2 - Hjælp Indhold I Introduktion 1 Velkomst 2... 2 2 Systemkrav... 2 3 Installation... 3 4 Skoletasken... 8 II Opsætning 10 1 Systemopsætning... 10 2 Bogopsætning...

Læs mere

Kortforsyningen Rastertjenesten

Kortforsyningen Rastertjenesten KORT & MATRIKELSTYRELSEN Kortforsyningen Rastertjenesten Version 1.3, 2002-05-13 Indledning Kortforsyningens rastertjeneste kan via Internettet levere udsnit af en række af Kort & Matrikelstyrelsens kortværk

Læs mere

Installation og opsætning af Outlook klient til Dynamics CRM

Installation og opsætning af Outlook klient til Dynamics CRM Dynamics CRM 4.0 Bredana Systemudvikling A/S - How to Installation og opsætning af Outlook klient til Dynamics CRM Først velkommen til din hostede Dynamics CRM. Med Outlook klienten installeret får du

Læs mere

Få navn på analysenr. i excel-fil og ind i pivottabel med data fra qlikview

Få navn på analysenr. i excel-fil og ind i pivottabel med data fra qlikview Få navn på analysenr. i excel-fil og ind i pivottabel med data fra qlikview Opret en excel-fil med analysenr. og navn. Gemt som dataliste_til_pivottabeller Analysenr. skal stå i nr. orden, og cellen skal

Læs mere

JAR Øvelse nr. 2. JAR-Manual, Version 1.0. Avanceret søgning. Regionsvejledning

JAR Øvelse nr. 2. JAR-Manual, Version 1.0. Avanceret søgning. Regionsvejledning JAR Øvelse nr. 2 Avanceret søgning Regionsvejledning JAR-Manual, Version 1.0 Øvelse ID: 2 Øvelsesemne: Avanceret søgning Øvelsesbeskrivelse: Gør dig i stand til at bygge avancerede søgninger op. Formål:

Læs mere

Indholdsfortegnelse resultat- & kritikprogrammet.

Indholdsfortegnelse resultat- & kritikprogrammet. Indholdsfortegnelse resultat- & kritikprogrammet. Ringsekretærers indtastning af resultater og kritikker... 2 Kom i gang Opstart af programmet... 2 En anden bruger er i gang med ringen... 3 Dommer ændringer

Læs mere

PentaCon C5 External Storage Manager

PentaCon C5 External Storage Manager PentaCon C5 External Storage Manager Manual 1 Indhold Beskrivelse og krav... 3 Licens... 3 Installation... 4 Af-installation... 4 Start og anvendelse... 4 Lager... 5 Debitor... 6 Kreditor... 6 Eksport...

Læs mere

fotografisk kommunikation

fotografisk kommunikation XDANMARKS MEDIE- OG JOURNALISTHØJSKOLE CAMPUS KØBENHAVN Forprøve 2016 fotografisk kommunikation 1/2 Professionsbacheloruddannelsen i Visuel Kommunikation Studieretning: Fotografisk Kommunikation Del 1:

Læs mere

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0 Program Dokumentation PC Software Skrevet af Gruppen. Version 1.0 Indholds fortegnelse 1. INDLEDNING...3 1.1. FORMÅL...3 1.2. REFERENCER...3 1.3. VERSIONSHISTORIE...3 1.4. DEFINITIONER...3 1.5. DOKUMENTATIONENS

Læs mere

Vurdering af digitalt læringsmiddel:

Vurdering af digitalt læringsmiddel: Vurdering af digitalt læringsmiddel: Indholdsfortegnelse: 1) Beskrivelse af Photo Story 3.. 2 a. Trin 1.. 3 b. Trin 2.. 5 c. Trin 3.. 5 d. Trin 4.. 6 e. Trin 5.. 6 2) Konklusion. 7 Claus B. Jensen Side

Læs mere

Dynamicweb Exchange Opsætning

Dynamicweb Exchange Opsætning Brugervejledning Dynamicweb Exchange Opsætning OUTLOOK 2003 Document ID: UG-4008 Version: 1.30 2006.07.04 Dansk UG-4008 - Dynamicweb Exchange Opsætning, Outlook 2003 JURIDISK MEDDELELSE Copyright 2005-2006

Læs mere

Installation og administration af MarvinSketch. Anders Almlund Osted, Køge Gymnasium

Installation og administration af MarvinSketch. Anders Almlund Osted, Køge Gymnasium Installation og administration af MarvinSketch Anders Almlund Osted, Køge Gymnasium September 2015 1 Indholdsfortegnelse Administration af programmet... 3 Registrering... 3 Ansøg om undervisningslicens...

Læs mere

Sådan får du Salmebogen på CD-ROM til at fungere i Internet Explorer 7 både under Windows XP og Windows Vista

Sådan får du Salmebogen på CD-ROM til at fungere i Internet Explorer 7 både under Windows XP og Windows Vista Sådan får du Salmebogen på CD-ROM til at fungere i Internet Explorer 7 både under Windows XP og Windows Vista Beskrivelse af fejlen Salmebogen på CD-ROM har visse problemer med at fungere i Internet Explorer

Læs mere

Brugervejledning for. Telenor Dialer

Brugervejledning for. Telenor Dialer Brugervejledning for Telenor Dialer 1 Indholdsfortegnelse Funktionsbeskrivelse af Telenor Dialer... 5 Telenor Dialer OneNumber Mobile... 6 Telenor Dialer OneNumber.... 6 Installation af Telenor Dialer...

Læs mere

[MARKONLINE I CITRIX]

[MARKONLINE I CITRIX] 2012 [Type text] Udarbejdet af Udarbejdet for Optimering af MarkOnline I Citrix miljøer Indholdsfortegnelse Baggrundsinfo... 2 Symptomerne... 3 MarkOnline starter ikke... 3 MarkOnline startes, men download

Læs mere

Netkatalog upload. Forord: Formål:

Netkatalog upload. Forord: Formål: Netkatalog upload Forord: De data, I indsender som e-katalog, genbruges af SKI s kunder i de ordre, der sendes tilbage til Jer. Det er derfor vigtigt, både for kundes efterfølgende fakturakontrol; men

Læs mere

Guide. Administration af FDF.dk/Nyborg. 1. Udgave 2008. Ide og layout Christoffer S. Rasmussen

Guide. Administration af FDF.dk/Nyborg. 1. Udgave 2008. Ide og layout Christoffer S. Rasmussen Guide Administration af FDF.dk/Nyborg 1. Udgave 2008 Ide og layout Christoffer S. Rasmussen FDF.Dk/NyboRG Den nye hjemmeside for FDF Nyborg er baseret på et bloksystem. Det vil sige at det er super nemt

Læs mere

Krypter dine mails når det er nødvendigt

Krypter dine mails når det er nødvendigt Krypter dine mails når det er nødvendigt Af Thomas Bødtcher-Hansen Hvor og hvornår skal vi kryptere vores mails? De paranoide mennesker krypterer alle deres mails og de naive mennesker ingen af deres mails.

Læs mere

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Opbyg løsningen skridt for skridt ved hele tiden af vælge lige

Læs mere

Kom godt igang med Inventar registrering

Kom godt igang med Inventar registrering Kom godt igang med Inventar registrering (InventoryDB) (Med stregkodesupport) programmet fra PetriSoft Introduktion... 1 Inventar registrering... 2 Værktøjsudleje... 3 Service database til reperationer

Læs mere

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

PHP 3 UGERS FORLØB PHP, MYSQL & SQL PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at

Læs mere

0KAPITEL 2: UDLÆSNING TIL WORD OG EXCEL

0KAPITEL 2: UDLÆSNING TIL WORD OG EXCEL Kapitel 2: Udlæsning til Word og Excel 0KAPITEL 2: UDLÆSNING TIL WORD OG EXCEL 1Målsætninger Målsætningerne er at: Integrere med Microsoft Word. Integrere med Microsoft Excel. Integrere med andre Microsoft-produkter.

Læs mere

Wipigo Galleri. Brugsforvirring. Venstre side af startbillede efter der er logget ind (Højre side viser det/de gallerier der er oprettet).

Wipigo Galleri. Brugsforvirring. Venstre side af startbillede efter der er logget ind (Højre side viser det/de gallerier der er oprettet). Wipigo Galleri. Brugsforvirring Venstre side af startbillede efter der er logget ind (Højre side viser det/de gallerier der er oprettet). Kategorier/Gallerier/Albums, flere benævnelser for den samme ting.

Læs mere

Denne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS.

Denne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS. Denne guide er oprindeligt udgivet på Eksperten.dk XML i ASP Denne artikel gennemgår kort nogle mulighederne for brug af XML i ASP. Det sker ved brug af eksempler. Eksemplerne vil være i VBS. Den forudsætter

Læs mere

Extension udvikling i Mozilla Firefox. Henrik Gemal

Extension udvikling i Mozilla Firefox. Henrik Gemal Extension udvikling i Mozilla Firefox Henrik Gemal Side 1 Hvem er jeg? Web udvikler hos TDC Laver TDC.dk og TDCOnline.dk Laver HTML, CSS, PHP Med i Mozilla projektet i mange år Udviklet et par extensions

Læs mere

Tastevejledning Windows XP

Tastevejledning Windows XP Tastevejledning Windows XP Tastevejledningen dækker den danske udgave af Windows XP. Der er taget udgangspunkt i en standard installation, hvor der ikke er foretaget tilpasninger i skærmopsætning, valg

Læs mere

PSYKIATRIENS VIKARCENTER. MinTid. Quickguide. Version 7.0

PSYKIATRIENS VIKARCENTER. MinTid. Quickguide. Version 7.0 PSYKIATRIENS VIKARCENTER MinTid Quickguide Version 7.0 Psykiatriens Vikarcenter Vi glæder os til, at du kommer på MinTid. Systemet giver dig adgang til bedre planlægning, vagtbørsen og muligheden for at

Læs mere

SmartAir TS1000. Daglig brug

SmartAir TS1000. Daglig brug SmartAir TS1000 Daglig brug Indhold Brugere... 4 Opret brugere... 4 Brugerliste vinduet... 5 Knapper... 5 Grupper... 6 Søg bruger... 7 Rapport vinduet (brugere)... 7 Døre... 8 Opret døre... 8 Dørliste

Læs mere

EasyIQ ConnectAnywhere Release note

EasyIQ ConnectAnywhere Release note EasyIQ ConnectAnywhere Release note Version 2.4 Der er over det sidste år lavet en lang række forbedringer, tiltag og fejlrettelser. Ændringer til forudsætningerne: o Klienten skal ved førstegangs login

Læs mere

Installationsvejledning til ectrl

Installationsvejledning til ectrl Installationsvejledning til ectrl Følgende vejledning viser installationen på en computer med Windows 7. Den kan variere en smule fra computer til computer og kan se anderledes ud med andre styresystemer,

Læs mere

MS Visual Studio Basic 2010. En kort vejledning

MS Visual Studio Basic 2010. En kort vejledning Du kan hente programmet gratis her: MS Visual Studio Basic 2010 Express http://www.microsoft.com/visualstudio/eng/downloads#d-2010-express Tryk på Install Now og følg vejledningen. Indholdsfortegnelse

Læs mere

PSYKIATRIENS VIKARCENTER. MinTid. Quickguide. Version 6.0

PSYKIATRIENS VIKARCENTER. MinTid. Quickguide. Version 6.0 PSYKIATRIENS VIKARCENTER MinTid Quickguide Version 6.0 Psykiatriens Vikarcenter Vi glæder os til at du kommer på Min Tid. Systemet giver dig adgang til bedre planlægning, vagtbørsen og muligheden for at

Læs mere

ITD ecmr WEB Services. Af Allan Wisborg, IT Udvikler

ITD ecmr WEB Services. Af Allan Wisborg, IT Udvikler Af Allan Wisborg, IT Udvikler Til løsningen ecmr Det elektroniske fragtbrev udbydes en række offentlige WEB services. Dette er beskrivelsen af disse services og hvorledes de anvendes. 21. December 2015

Læs mere

MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007

MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007 MySQL i Java Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007 Hvad er MySQL? Det er et database system, som er gratis for os at bruge. Det er lidt mere besværligt i starten at bruge

Læs mere

Jobcenter Vinduet. Version 01.00 Light 2014

Jobcenter Vinduet. Version 01.00 Light 2014 Jobcenter Vinduet Version 01.00 Light 2014 Styrelsen for Arbejdsmarked og Rekruttering 2014 Jobcenter vinduet Jobcenter vinduet giver mulighed for, at det enkelte jobcenter kan kommunikere direkte til

Læs mere

DOM Document Object Model:

DOM Document Object Model: DOM Document Object Model:...1 Typer af noder i træet:...3 Reading:...4 document:...6 element:...7 attributter:...12 parser fejl:...13 XPATH:...13 Stier i XPATH:...13 Prædikater:...14 Operatorer:...15

Læs mere

Arkitektur for begyndere

Arkitektur for begyndere Denne guide er oprindeligt udgivet på Eksperten.dk Arkitektur for begyndere Denne artikel beskriver forskellige basale n-tier arkitekturer. Som man bør kende og have valgt inden man går igang med at udvikle

Læs mere

Umbraco installationsvejledning

Umbraco installationsvejledning på et ScanNet ASP Webhotel Indledning Beskrivelse Denne vejledning vil indeholde installation af CMS systemet Umbraco på et ASP Webhotel. Det dansk grundlagt Content Management System (CMS) Umbraco er

Læs mere

Der findes mange ting på nettet, som du kan hente ned på din computer bl.a. billeder, tekstdokumenter og installationsfiler til programmer.

Der findes mange ting på nettet, som du kan hente ned på din computer bl.a. billeder, tekstdokumenter og installationsfiler til programmer. Microsoft browser Edge Når du skal på internettet i Windows 10, bruger du som udgangspunkt programmet Microsoft Edge. Det er en helt ny, simpel internetbrowser med en række spændende funktioner. Du kan

Læs mere

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

PHP Snippets. De små korte. Skrevet af Daniel Pedersen PHP Snippets De små korte Skrevet af Daniel Pedersen Indhold PHP Snippets De små korte er en samling af små og praktiske kode eksempler med kort forklaring, som med formål at kunne benyttes til opsalgsværk

Læs mere

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere Integrationsmanual Anvendelse af webservice til kursusoversigt i Campus Brugervejledning til udviklere Moderniseringsstyrelsen Webservice manual til udviklere 2016 1 1. Indholdsfortegnelse Nyt kapitel

Læs mere

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel: Denne guide er oprindeligt udgivet på Eksperten.dk SQL og ASP En artikel omkring simpel SQL og hvordan disse opbygges, udformes og udføres, sådan at man kan få et brugbart resultat i ASP. Dette ligefra

Læs mere

Kom i gang med SAS STPbaserede

Kom i gang med SAS STPbaserede make connections share ideas be inspired Kom i gang med SAS STPbaserede webapplikationer Lars L. Andersson Chefkonsulent Webapplikationer Interaktion med serverbaserede data via skærmbilleder leveret gennem

Læs mere

KOM GODT I GANG MED. Desktop Mendeley Menuen er simpel og intuitiv. I Menuen Tools finder du web importer og MS Word plugin

KOM GODT I GANG MED. Desktop Mendeley Menuen er simpel og intuitiv. I Menuen Tools finder du web importer og MS Word plugin Mendeley er et program til håndtering af PDF er og referencer, som frit kan downloades fra internettet. Der er fri lagringskapacitet for en enkeltbruger op til en vis mængde data. Du kan hente programmet

Læs mere

Grafisk workflow. Se siden her: www.cormas.dk

Grafisk workflow. Se siden her: www.cormas.dk Grafisk workflow Se siden her: www.cormas.dk Dokumentation 4 Procesbeskrivelse 5 Inspirationssøgning 6 Skitser 8 Layout i Photoshop 9 Farver 10 Font 11 Flowchart 12 Wireframe 13 Storyboard 14 kontakt.html

Læs mere

LESSOR-5. Inquiry (teknisk beskrivelse) Tilgængelighed for andre systemer

LESSOR-5. Inquiry (teknisk beskrivelse) Tilgængelighed for andre systemer LESSOR-5 Inquiry (teknisk beskrivelse) Effektive og fleksible IT-løsninger til LØN, TID og HR Tilgængelighed for andre systemer LESSOR-5 Inquiry har til formål at gøre data i LESSOR-5 tilgængelig for andre

Læs mere

Brug Photo Story 3 en let introduktion

Brug Photo Story 3 en let introduktion Brug Photo Story 3 en let introduktion Denne vejledning forudsætter at programmet Photo Story 3 er installeret på din computer. Se andetsteds for vejledning i at installere programmet, der kan findes gratis

Læs mere

REFWORKS FAGKONSULENTENS VEJLEDNING

REFWORKS FAGKONSULENTENS VEJLEDNING REFWORKS FAGKONSULENTENS VEJLEDNING Nationale Kliniske Retningslinjer Version 09-02-2015 2015 Indholdsfortegnelse 1. Refworks og Nationale Kliniske Retningslinjer... 3 2. Ekstern adgang til RefWorks...

Læs mere

Installation af Elektronisk APV på flere PC er

Installation af Elektronisk APV på flere PC er Installation af Elektronisk APV på flere PC er Vejledning til installation af Elektronisk APV, når programmet skal installeres på flere PC er, der kobler sig op på en fælles server. 1 Installation af Elektronisk

Læs mere

KOMBIT Byg og Miljø FAQ. Byg og Miljø. Version 1.1 24. januar 2014 BHE

KOMBIT Byg og Miljø FAQ. Byg og Miljø. Version 1.1 24. januar 2014 BHE KOMBIT Byg og Miljø FAQ Byg og Miljø Version 1.1 24. januar 2014 BHE Indhold Login og rettigheder... 3 Aktiviteter, sager, projekter... 4 Regler... 5 Proces... 6 Kommunikation... 7 Filer... 8 Integration

Læs mere

Her ser i hvorledes man nemt kan installere en række nyttige programmer, uden at få andet end selv programmet installeret. på WWW.NINITE.

Her ser i hvorledes man nemt kan installere en række nyttige programmer, uden at få andet end selv programmet installeret. på WWW.NINITE. Når man nu har en frisk ny Windows installation, så gælder det om at tilpasse den så den er brugbar men også at få de hjælpe of vedligeholdes programmer som gør maskinen kan sikres mod diverse malware

Læs mere

FESD-standardiseringsgruppen Att: Palle Aagaard IT- og Telestyrelsen IT-strategisk kontor Holsteinsgade 63 2100 København Ø

FESD-standardiseringsgruppen Att: Palle Aagaard IT- og Telestyrelsen IT-strategisk kontor Holsteinsgade 63 2100 København Ø FESD-standardiseringsgruppen Att: Palle Aagaard IT- og Telestyrelsen IT-strategisk kontor Holsteinsgade 63 2100 København Ø Høringssvar vedr. FESD GIS-integrationsmodel version 2.0 Geodata Danmark har

Læs mere

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere

At lave dit eget spørgeskema

At lave dit eget spørgeskema At lave dit eget spørgeskema 1 Lectio... 2 2. Spørgeskemaer i Google Docs... 2 3. Anvendelighed af din undersøgelse - målbare variable... 4 Repræsentativitet... 4 Fejlkilder: Målefejl - Systematiske fejl-

Læs mere

Brugervejledning - til internetbaseret datakommunikation med PBS ved hjælp af HTTP/S-løsningen

Brugervejledning - til internetbaseret datakommunikation med PBS ved hjælp af HTTP/S-løsningen Payment Business Services PBS A/S Lautrupbjerg 10 P.O. 500 DK 2750 Ballerup T +45 44 68 44 68 F +45 44 86 09 30 pbsmailservice@pbs.dk www.pbs.dk PBS-nr. 00010014 CVR-nr. 20016175 Brugervejledning - til

Læs mere

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse. Mysqli Webintegrator Når vi arbejder med server-side scripting ( i vort tilfælde PHP), har vi ofte behov for at kunne tilgå data, som vi opbevarer i en database. Det kan f.eks. dreje sig om nyhederne i

Læs mere

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø EG Data Inform Byggebasen WCF og webservices Jens Karsø 10 Indholdsfortegnelse Byggebasen Services indledning... 2 Målsætning... 2 Valg af teknologier... 3 Kommunikationsmodel for byggebasen... 3 Services.byggebasen.dk...

Læs mere

har jeg hentet nedenstående anmeldelse af et godt program til

har jeg hentet nedenstående anmeldelse af et godt program til Software Fra design af hjemmesider: har jeg hentet nedenstående anmeldelse af et godt program til Wordpress er intet mindre end et genialt program til hjemmesider. For det første er det gratis, og for

Læs mere

Outlook 2010 Exchange-opsætning

Outlook 2010 Exchange-opsætning Manuel på Exchange 2010 (mailcloud.dk) Indledning Beskrivelse Med denne vejledning har du mulighed for manuelt at opsætte din Exchange konto i Outlook. Der tages udgangspunkt i at du allerede har Outlook

Læs mere

Brug af Office 365 på din Android-telefon

Brug af Office 365 på din Android-telefon Brug af Office 365 på din Android-telefon Startvejledning Tjek mail Sæt din Android-telefon op til at sende og modtage mail fra din Office 365-konto. Tjek din kalender, uanset hvor du er Hav altid styr

Læs mere

Lav dine egne hjemmesider/websider

Lav dine egne hjemmesider/websider Sider, der skal publiceres på World Wide Web, laves i et særligt format, html, som fortæller browseren, hvordan den skal vise tekst og billeder. Html (Hypertext markup language) er meget fleksibelt og

Læs mere

Installationsvejledning for CAB Service Platform med CABInstall

Installationsvejledning for CAB Service Platform med CABInstall Installationsvejledning for CAB Service Platform med CABInstall Innehåll INDLEDNING... 2 INSTALLATION... 3 AVANCERET INSTALLATION... 10 YDERLIGERE INFORMATION... 11 Proxy... 11 Side 1 af 12 Indledning

Læs mere

Brugervejledning til diverse i OS X

Brugervejledning til diverse i OS X Brugervejledning til diverse i OS X Gert Søndergaard 19. august 2003 Indholdsfortegnelse Indholdsfortegnelse...2 Introduktion til Mac OS X...3 Flere brugere på samme maskine...3 Dock - den gamle kvikstart...4

Læs mere

Flettebreve og Doc2mail

Flettebreve og Doc2mail Flettebreve og Doc2mail Denne vejledning beskriver hvordan du kan sende flettebreve via Doc2mail. I vejledningen er der vedlagt en række skabeloner du kan benytte til dette. Vejledningen er rettet mod

Læs mere

Installationsvejledning til LMeSmartClient

Installationsvejledning til LMeSmartClient Installationsvejledning til LMeSmartClient Indledning LMeSmartClient består af 2 "dele" - en "Tjeneste" og et klientprogram. Tjenesten tager sig af selve udvekslingen af data og klientprogrammet af opsætningen

Læs mere