*:96 Overheads. Nested distribution lists. Part 3d: Mailing lists. Modes of distribution to many recipients

Relevanta dokument
Inneh ll. CGI och CGI-programmering. Common Gateway Interface. Common Gateway Interface. Mera dynamisk WWW. Kompletterande l sningar

Vad är XSLT XSLT extensible Stylesheet Language Transformations

Datasäkerhet och integritet

XSLT. Extensible Stylesheet Language Transformations

Isolda Purchase - EDI

Introduk+on +ll programmering i JavaScript

XML. Extensible Markup Language

Lite mer om CGI-programmering

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

Voice over IP / SIP. Switching Costs SIP. Motivation for VoIP. Internet Telephony as PBX replacement. Internet Telephony Modes.

Webbteknik II. Föreläsning 5. Restless farewell. John Häggerud, 2011

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

WWW. Exempel på klientsidan. Överföring av en html-fil. Snyggare variant. Verkligt format. Meddelandeformat för begäran HTTP

Beijer Electronics AB 2000, MA00336A,

Exemple på Tentauppgifter Webbprogrammering

Michael Q. Jones & Matt B. Pedersen University of Nevada Las Vegas

Webbplats analys facebook.com

2.1 Installation of driver using Internet Installation of driver from disk... 3

JavaScript in SharePoint and not just for Apps. Wictor Wilén

Authentication Context QC Statement. Stefan Santesson, 3xA Security AB

F8 Webbteknologier 1. Dynamiska webbsidor

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

Uniform Resource Locator (URL) JavaServer Pages - JSP. Webbklienter. Webbserver. Hypertext Transfer Protocol (HTTP) HTTP Request

XML. XML is a method for putting structured data in a text file

SOA. Länkar +ll sidor om SOA h3p:// h3p://dsv.su.se/soa/

EDA095 HTML. Per Andersson. April 26, Lund University Innehåll: HTML, CSS, DOM, JavaScript

<sid nr="1" av="2" /> Stackenföreläsning: XML & XSLT: Intro. XML och XSLT

Översättning av galleriet. Hjälp till den som vill...

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

Björn Eiderbäck, Cristian Bogdan

Webbprogrammering. Sahand Sadjadee

Webbteknik II. Föreläsning 4. Watching the river flow. John Häggerud, 2011

Styrteknik: Binära tal, talsystem och koder D3:1

JAVASCRIPT-POWERED LOADRUNNER CHRISTIAN GERDES PERFORMANCE ENGINEER LIGHTS IN LINE AB

Laboration 1 XML, XPath, XSLT och JSON

SVENSK STANDARD SS-EN ISO 19108:2005/AC:2015

Christer Scheja TAC AB

DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION :15-13: 15

electiaprotect GSM SEQURITY SYSTEM Vesta EZ Home Application SMART SECURITY SYSTEMS! SVENSKA ios Android

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Information technology Open Document Format for Office Applications (OpenDocument) v1.0 (ISO/IEC 26300:2006, IDT) SWEDISH STANDARDS INSTITUTE

Signalering. Vad är signalering

Webbservrar, severskript & webbproduktion

Kompletterande exempel till XSLT

Application Note SW

Webbplats analys sarajacob3216.wordpress.com

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

Det finns en handledning till kortet på hemsidan. AVR STK500.

icore Solutions. All Rights Reserved.

Nätverk grunder Föreläsning 1: 1: Introduktion till Internet

E12 "Evil is going on"

Annonsformat desktop. Startsida / områdesstartsidor. Artikel/nyhets-sidor. 1. Toppbanner, format 1050x180 pxl. Format 1060x180 px + 250x240 pxl.

FÖRBERED UNDERLAG FÖR BEDÖMNING SÅ HÄR

Webbprogrammering grunder

HANTERING AV UPS CX

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Förändrade förväntningar

Nya möjligheter med M3 Technology. Björn Svensson, Björn Torold

*:96 (SU) and 2I1263 (KTH) Internet Application Protocols and Standards Exam

Nätverk och Java, grunder Föreläsning 0: 0: Introduktion till Internet

Installation av F13 Bråvalla

PHP-presentation Dataföreningens Open Source-nätverk

Voice over IP / SIP. Motivation for VoIP. Johan Garcia. Datakommunikation II. Baserat på material från Henning Schulzrinne, Columbia University.

Webbserver och HTML-sidor i E1000 KI

Allmänna anvisningar: Skriv dina svar på svarsblanketten (se nästa sida) Markera och ange alla svar tydligt och entydigt efter instruktionerna.

Services + REST och OAuth

JAVASCRIPT. Beteende

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, Internet började med ARPANET

Quick Start Guide Snabbguide

Styrteknik : Funktioner och funktionsblock

Web Services. Cognitude 1

Measuring child participation in immunization registries: two national surveys, 2001

teknisk manual Direktbetalning handelsbanken.se/e-handel

Webbprogrammering grunder

Tentamen i Matematik 2: M0030M.

Paneler - VCPXX.2. Programmeringsmanual för VCP-paneler. Revision 2

RUTINBESKRIVNING FÖR INSTALLATION AV KAMERA

Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit.

Webbsidor och webbservrar

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Webbregistrering pa kurs och termin

LUNDS TEKNISKA HÖGSKOLA Institutionen för Elektro- och Informationsteknik

Arbeta med Selected Works en lathund

Hur hänger det ihop? För att kunna kommunicera krävs ett protokoll tcp/ip, http, ftp För att veta var man skall skicka

Styrteknik 7.5 hp distans: E-1000 och E-Designer

Retrieve a set of frequently asked questions about digital loans and their answers

TNMK30 - Elektronisk publicering

Föreläsning 4 IS1300 Inbyggda system

Server-kod. TDDD80 Mobila och sociala applikationer

Support for Artist Residencies

2.45GHz CF Card Reader User Manual. Version /09/15

Support Manual HoistLocatel Electronic Locks

Kurskod: TAIU06 MATEMATISK STATISTIK Provkod: TENA 15 August 2016, 8:00-12:00. English Version

Namn: (Ifylles av student) Personnummer: Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson

Integritetspolicy på svenska Integrity policy in English... 5

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: Mottagare: Visi Web kund

Transkript:

*:96 Overheads 1 Nested distribution lists 2 Part 3d: Mailing lists More about this course about Internet application protocols can be found at URL: http://www.dsv.su.se/jpalme/internet-course/intapp-prot-kurs.html Last update: 30 Jan 2006 Compendium 8 page 184 Modes of distribution to many recipients Server Server Expansion of Nested Mailing Lists Personal mailing list, expanded before sending Shared mailing list, expanded at the MTA responsible for this mailing list 4 Sender UA or MTA Sender UA or MTA MTA responsible for expanding this list Server To:xlist To:john, mary, eliza To:xlist To:john, mary, eliza Server Server xlist@foo.bar: john@foo.bar mary@foo.bar eliza@site.net xlist@foo.bar: john@foo.bar mary@foo.bar eliza@site.net

Compendium 8 page 185 Loop control for Nested Distribution Lists (1) Full expansion by the originating UA or MTA. (2a) Trace list on the envelope, use to stop incoming messages. (2b) Trace list on the envelope, use to stop outgoing messages. (3) Registration system. (4a) Storing Message-ID-s with DL expanders. (4b) Storing content checksums with DL expanders. X.400: Primarily 2a, Listserv: 4a and 4b, Usenet News: 4a List Headers (RFC 2369) Meta-standard! Not specify a protocol, but specify how a mail header can specify a protocol for common actions on mailing lists: List-Subscribe: <mailto:ietf-xml-mimerequest@imc.org?body=subscribe> List-Unsubscribe: <mailto:ietf-xmlmime-request@imc.org?body=unsubscribe> List-Help:<http://www.imc.org/ietf-xmlmime/> List-Archive: <http://www.imc.org/ietfxml-mime/mail-archive/> List-ID: <ietf-xml-mime.imc.org> 5 Mailing Lists in Internet Mail No standardized loop control for nested lists -request -convention SMTP sender = address of list maintainer Non-delivery reports sent to SMTP sender Originator Original sender: Mailing list: To: xlist From: John To: xlist From: John Mailing List Expander?? Non-delivery report To: xlist From: John To: member1 From: x-listowner Reply-To controversy Reply-To: My assistant... Note: Compare with Aliases Recipient Reply-To: This mailing list... Mail programs often have two reply commands, Reply to Sender and Reply to all. How should these two commands intepret the Reply-To header?? 6 8

Compendium 8 page 186 9 Gatewaying Usenet News to Mailing Lists In Usenet news, the Newsgroups header indicates the name of the Newsgroup(s) to which this contribution was sent. Example: Newsgroups: alt.sex.fetisches.feet Some newsreaders provide a facility to answer personally by e- mail to only the author of a message. They sometimes copy the Newsgroups header to such answers. Some gateways between Usenet news and e-mail copy the Newsgroups header to the mail copy of a message, to indicate which newsgroups it comes from. Thus: The Newsgroups header has two different interpretations: 1. The newsgroup to which this message was also sent 2. The newsgroup of the message, which this is a personal reply to.

Innehåll Compendium 8 page 187 CGI och CGI-programmering Fredrik Kilander DSV Common Gateway Interface Common Gateway Interface (CGI) Alternativ för dynamiska WWW-sidor HTTP-servern CGI-processen Programmeringsspråk Säkerhet Applikationsdesign för WWW Common Gateway Interface Browser HTTP HTTP server CGI CGI process parameters stdin environment variables TCP/IP TCP/IP HTTP server process filename Local files loaded cgi executable stdout

CGI: en de facto standard Kompletterande lösningar Informell överenskommelse Beskriver server och CGI-program Internet draft version 1.1, Juni 1999, (utgången) Version 1.2 (inga framsteg sedan 1998). http://www.w3.org/cgi http://cgi-spec.golux.com HTTP server process Embedded interpreter Thread pool Conn. pool OS inte behöver inte starta en ny process. WWW-servern kan styra resursanvändningen. Java (Java Server Pages, servlets) ASP, Jscript, VBscript Custom browser Compendium 8 page 188 Dynamiska websidor i WWW-läsaren HTTP-servern Javascript, JScript, VBscript Java (applets) ActiveX Vendor plug-ins (Flash, Quicktime ) CGI är inte beroende av klientimplementationen WWW-läsaren och servern använder HTTP WWW-läsaren anropar med GET eller POST GET : hämta URL GET : www.bz.com/db.exe?nm=john+smith&tel=123+987 POST : skicka data till servern och få svar POST : <form action= http://www.bz.com/db.exe method= POST >

HTTP-servern CGI-programmet Compendium 8 page 189 Skicka URL eller exekvera CGI bestäms av serverns konfiguration. Hitta exekverbar fil och skapa en process. Initiera miljövariabler (environment). Skicka POST data till stdin. Starta processen. Skicka stdout till klienten. REQUEST_METHOD = GET params = QUERY_STRING CGI-programmet Läsa miljövariabler REQUEST_METHOD QUERY_STRING CONTENT_LENGTH REQUEST_METHOD = POST len = CONTENT_LENGTH params = read(stdin, len) Läsa miljövariabler. Läsa stdin (om POST). Avkoda parametrar. Formatera och skicka ett svar på stdout. Svaret är ett Internet-dokument SERVER_SOFTWARE SERVER_NAME GATEWAY_INTERFACE SERVER_PROTOCOL SERVER_PORT REQUEST_METHOD PATH_INFO PATH_TRANSLATED SCRIPT_NAME QUERY_STRING REMOTE_HOST REMOTE_ADDR AUTH_TYPE REMOTE_USER REMOTE_IDENT CONTENT_TYPE Fler miljövariabler CONTENT_LENGTH HTTP_ACCEPT HTTP_USER_AGENT HTTP_* http://hoohoo.ncsa.uiuc.edu/cgi/env.html

CGI-programmet Avkoda parametrarna (URL encoding, RFC 2396) GET: www.bz.com/db.exe?name=%c5ke+%d6rn&age=22 POST: name=%c5ke+%d6rn&age=22 Parametersträngen: name=%c5ke+%d6rn&age=22 Avkoda CGI-parametrarna name=%c5ke+%d6rn&age=22 1. Dela upp vid & name=%c5ke+%d6rn&age=22 s ::= namn = [värde] [ & namn = [värde]]... name=%c5ke+%d6rn age=22 Compendium 8 page 190 Avkoda CGI-parametrarna name=%c5ke+%d6rn&age=22 2. Dela upp vid = name=%c5ke+%d6rn age=22 Avkoda CGI-parametrarna name=%c5ke+%d6rn&age=22 3. Byt + mot (blank) name %c5ke+%d6rn age 22 name %c5ke+%d6rn age 22 name %c5ke %d6rn age 22

Avkoda CGI-parametrarna name=%c5ke+%d6rn&age=22 4. Byt %xx mot tecken name %c5ke %d6rn age 22 name Åke Örn age 22 Avkoda CGI-parametrarna 1. Dela upp vid & (par av namn och värden) 2. Dela upp vid = (mellan namn och värde) 3. Byt + mot (blank) 4. Byt %xx mot tecken (hexadecimal kod) Färdiga rutiner finns ofta att tillgå Compendium 8 page 191 CGI-programmets respons Parsed Header Output (HTTP-servern kollar) <header> [ <blank line> <body>] T ex: Header Blank line Body Content-type: text/html Status: 200 OK <html> <head>... MIME-type CR LF Vad ett CGI-script måste göra (v 1.1) Avvisa ej understödda metoder* med Status: 405 Method Not Allowed * GET POST DELETE HEAD PUT OPTIONS TRACE extension-method

Vad ett CGI-script bör göra (v 1.1) Programmeringsspråk CGI Compendium 8 page 192 Vara beredd på att dö närsomhelst (svårt!) Hantera PATH_INFO eller svara 404 Not Found Verifiera CONTENT_TYPE (indataformat) Vara vaksam på //,. och.. i sökvägar Inte generera relativa länkar utan <BASE> Sända headerns CGI-fält så snart som möjligt och före HTTP-fält Språk inbäddade i HTTP-servern Nästan vilket språk som helst: Perl-script ( cgi-script ) Shell-script C, C++ (lång utvecklingstid) Java Java Server Pages Java (Java Server Pages, servlets) ASP (Active Server Pages) Servermoduler Källkoden innehåller text till klienten (HTML) och anrop till script-språk (vanligtvis Java). <H1>Welcome to Our Store</H1> <SMALL>Welcome, <!-- User name is "New User" for first-time visitors --> <% out.println(utils.getusernamefromcookie(request)); %> To access your account settings, click <A HREF="Account-Settings.html">here.</A> </SMALL>

Active Server Pages (ASP) Active Server Pages (ASP) Compendium 8 page 193 Microsoft Internet Information Server IIS Körs i HTTP-servern (snabb start) Blandar flera språk och syntaxer i samma källkod: ASP-script, VBScript, JScript, SSI (servern), VBScript, JScript, JavaScript, HTML, CSS (klienten). Servermoduler + total kontroll + effektivt - lång utveckling - kan hänga servern - kan vara svårt att avlusa - dålig portabilitet pga bindning till server + snabb utveckling + samma funktionalitet som CGI + bra stöd för databaskopplingar (VBscript) - kan hänga servern - svårt att avlusa - ingen modularitet, trasslig syntax - klarar inte hög belastning Säkerhet Det som CGI-programmet får göra kan också besökarna göra. Förhindra buffer overruns (rutinbibliotek) Kolla alla indata, inklusive CONTENT_LENGTH. Låt aldrig indata exekveras utan inspektion. Förbjud allt och släpp in det som är tillåtet, inte tvärtom. Logga, och analysera loggarna.

Applikationsdesign för WWW Applikationsdesign för WWW WWW är i grunden tillståndslöst. Tillstånd behövs i t ex dialoger. Cookies, dolda fält Var försiktig med finesser Hur stor är användargruppen? Vilken utrustning har de? Vilka krav ställer applikationen på dem? Vad kan man förvänta sig av dem? Compendium 8 page 194 Applikationsdesign för WWW Applikationsdesign för WWW Enkla användargränssnitt: Använd inte mer teknik än som krävs. Undvik skärmrullning. Använd multipla indikatorer: ledtexter, färger, bilder Grundlig HTML-kodning: Följ en (1) standard. Stäng alla markörer som får stängas (XHTML). Koda speglade indata i formulär. Använd analysverktyg. Kolla med många www-klienter.

XSL parts XSL The Extensible Stylesheet Language Family XSL Transformations (XSLT) XML Path Language (XPath) XSL Formatting Objects (XSL-FO) Compendium 8 page 195 XSL process view http:www.w3c.org/style/xsl XSL conceptual view An XML document has a tree structure XSLprocessor XMLdocument output XSLprocessor output XSLstyle sheet XSLstyle sheet Traverse the XML tree Decide on output in each node

XSL conceptual view XML sample An XML document has a tree structure XSLstyle sheet The programmer writes a set of templates. Each template may match zero, one or more nodes. The body of a template may specify output, or other templates to try in sequence. The body of a template may also select any part of the tree and generate data from it, or apply templates to it. The syntax is XML. <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <acas:context-state id="global" xmlns:acas="urn:acas:%2f%2fdsv.su.se"> <acas:contextelement> <acas:value datatype="float" unit="celcius">21.2</acas:value> <acas:time>2004-04-04 18:57 CET</acas:time> <acas:source uri="acas://dsv.su.se">//sensors/k2lab/t2</acas:source> </acas:contextelement> <acas:contextelement> <acas:value datatype="float" unit="celcius">20.7</acas:value> <acas:time>2004-04-04 18:58 CET</acas:time> <acas:source uri="acas://dsv.su.se">//sensors/k2lab/t1</acas:source> </acas:contextelement> </acas:context-state> Compendium 8 page 196 Namespace XML sample Namespace XML sample <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <acas:context-state id="global" xmlns:acas="urn:acas:%2f%2fdsv.su.se"> <acas:contextelement> <acas:value datatype="float" unit="celcius">21.2</acas:value> <acas:time>2004-04-04 18:57 CET</acas:time> <acas:source uri="acas://dsv.su.se">//sensors/k2lab/t2</acas:source> </acas:contextelement> <acas:contextelement> <acas:value datatype="float" unit="celcius">20.7</acas:value> <acas:time>2004-04-04 18:58 CET</acas:time> <acas:source uri="acas://dsv.su.se">//sensors/k2lab/t1</acas:source> </acas:contextelement> </acas:context-state> <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <acas:context-state id="global" xmlns:acas="urn:acas:%2f%2fdsv.su.se"> <acas:contextelement> <acas:value datatype="float" unit="celcius">21.2</acas:value> <acas:time>2004-04-04 18:57 CET</acas:time> <acas:source uri="acas://dsv.su.se">//sensors/k2lab/t2</acas:source> </acas:contextelement> <acas:contextelement> <acas:value datatype="float" unit="celcius">20.7</acas:value> <acas:time>2004-04-04 18:58 CET</acas:time> <acas:source uri="acas://dsv.su.se">//sensors/k2lab/t1</acas:source> </acas:contextelement> </acas:context-state> Attributes

Compendium 8 page 197 Namespace XML sample <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <acas:context-state id="global" xmlns:acas="urn:acas:%2f%2fdsv.su.se"> <acas:contextelement> <acas:value datatype="float" unit="celcius">21.2</acas:value> <acas:time>2004-04-04 18:57 CET</acas:time> <acas:source uri="acas://dsv.su.se">//sensors/k2lab/t2</acas:source> </acas:contextelement> <acas:contextelement> <acas:value datatype="float" unit="celcius">20.7</acas:value> <acas:time>2004-04-04 18:58 CET</acas:time> <acas:source uri="acas://dsv.su.se">//sensors/k2lab/t1</acas:source> </acas:contextelement> </acas:context-state> Attributes Values XSLT sample The The xsl:stylesheet xsl:stylesheet element element wraps wraps the the whole whole document document <?xml version="1.0" encoding="iso-8859-1"?> <!-- q_one.xsl --> <!-- 08-mar-2004/FK --> <xsl:stylesheet xmlns:acas="urn:acas:%2f%2fdsv.su.se" xmlns:xsl="http://www.w3.org/1999/xsl/transform" exclude-result-prefixes="acas" version="1.0"> <xsl:output method="text" encoding="iso-8859-1" standalone="yes"/> <xsl:template match="/acas:context-state"> select="acas:contextelement/acas:value[@unit='geo']"/> select="acas:contextelement/acas:value[@unit='celcius']"/> <xsl:template match="acas:contextelement/acas:value[@unit='geo']"> <xsl:text>location OF </xsl:text> <xsl:value-of select="../acas:source"/> <xsl:text> IS </xsl:text> <xsl:value-of select="."/> <xsl:text> </xsl:text> XSLT sample <?xml version="1.0" encoding="iso-8859-1"?> <!-- q_one.xsl --> <!-- 08-mar-2004/FK --> <xsl:stylesheet xmlns:acas="urn:acas:%2f%2fdsv.su.se" xmlns:xsl="http://www.w3.org/1999/xsl/transform" exclude-result-prefixes="acas" version="1.0"> <xsl:output method="text" encoding="iso-8859-1" standalone="yes"/> <xsl:template match="/acas:context-state"> select="acas:contextelement/acas:value[@unit='geo']"/> select="acas:contextelement/acas:value[@unit='celcius']"/> <xsl:template match="acas:contextelement/acas:value[@unit='geo']"> <xsl:text>location OF </xsl:text> <xsl:value-of select="../acas:source"/> <xsl:text> IS </xsl:text> <xsl:value-of select="."/> <xsl:text> </xsl:text> XSLT sample Declaration Declaration of of namespace namespace in in input input XML XML <?xml version="1.0" encoding="iso-8859-1"?> <!-- q_one.xsl --> <!-- 08-mar-2004/FK --> <xsl:stylesheet xmlns:acas="urn:acas:%2f%2fdsv.su.se" xmlns:xsl="http://www.w3.org/1999/xsl/transform" exclude-result-prefixes="acas" version="1.0"> <xsl:output method="text" encoding="iso-8859-1" standalone="yes"/> <xsl:template match="/acas:context-state"> select="acas:contextelement/acas:value[@unit='geo']"/> select="acas:contextelement/acas:value[@unit='celcius']"/> <xsl:template match="acas:contextelement/acas:value[@unit='geo']"> <xsl:text>location OF </xsl:text> <xsl:value-of select="../acas:source"/> <xsl:text> IS </xsl:text> <xsl:value-of select="."/> <xsl:text> </xsl:text>

Compendium 8 page 198 XSLT sample <?xml version="1.0" encoding="iso-8859-1"?> <!-- q_one.xsl --> <!-- 08-mar-2004/FK --> <xsl:stylesheet xmlns:acas="urn:acas:%2f%2fdsv.su.se" Type Type of of output output xmlns:xsl="http://www.w3.org/1999/xsl/transform" exclude-result-prefixes="acas" version="1.0"> <xsl:output method="text" encoding="iso-8859-1" standalone="yes"/> <xsl:template match="/acas:context-state"> select="acas:contextelement/acas:value[@unit='geo']"/> select="acas:contextelement/acas:value[@unit='celcius']"/> <xsl:template match="acas:contextelement/acas:value[@unit='geo']"> <xsl:text>location OF </xsl:text> <xsl:value-of select="../acas:source"/> <xsl:text> IS </xsl:text> <xsl:value-of select="."/> <xsl:text> </xsl:text> XSLT sample <?xml version="1.0" encoding="iso-8859-1"?> <!-- q_one.xsl --> <!-- 08-mar-2004/FK --> <xsl:stylesheet Expressions xmlns:acas="urn:acas:%2f%2fdsv.su.se" Expressions that that select select and and compose compose are are written xmlns:xsl="http://www.w3.org/1999/xsl/transform" written in in the the XPath XPath language. language. exclude-result-prefixes="acas" version="1.0"> <xsl:output method="text" encoding="iso-8859-1" standalone="yes"/> <xsl:template match="/acas:context-state"> select="acas:contextelement/acas:value[@unit='geo']"/> select="acas:contextelement/acas:value[@unit='celcius']"/> <xsl:template match="acas:contextelement/acas:value[@unit='geo']"> <xsl:text>location OF </xsl:text> <xsl:value-of select="../acas:source"/> <xsl:text> IS </xsl:text> <xsl:value-of select="."/> <xsl:text> </xsl:text> XSLT sample <?xml version="1.0" encoding="iso-8859-1"?> <!-- q_one.xsl --> <!-- 08-mar-2004/FK --> <xsl:stylesheet xmlns:acas="urn:acas:%2f%2fdsv.su.se" xmlns:xsl="http://www.w3.org/1999/xsl/transform" Template Template to to match match exclude-result-prefixes="acas" root root of of input input tree tree version="1.0"> <xsl:output method="text" encoding="iso-8859-1" standalone="yes"/> <xsl:template match="/acas:context-state"> select="acas:contextelement/acas:value[@unit='geo']"/> select="acas:contextelement/acas:value[@unit='celcius']"/> <xsl:template match="acas:contextelement/acas:value[@unit='geo']"> <xsl:text>location OF </xsl:text> <xsl:value-of select="../acas:source"/> <xsl:text> IS </xsl:text> <xsl:value-of select="."/> <xsl:text> </xsl:text> XSLT sample <?xml version="1.0" encoding="iso-8859-1"?> <!-- q_one.xsl --> <!-- 08-mar-2004/FK --> <xsl:stylesheet xmlns:acas="urn:acas:%2f%2fdsv.su.se" xmlns:xsl="http://www.w3.org/1999/xsl/transform" exclude-result-prefixes="acas" version="1.0"> <xsl:output method="text" encoding="iso-8859-1" standalone="yes"/> <xsl:template match="/acas:context-state"> Output Output can can be be constants constants in in the the stylesheet stylesheet select="acas:contextelement/acas:value[@unit='geo']"/> or or derived derived from from the the input. input. select="acas:contextelement/acas:value[@unit='celcius']"/> <xsl:template match="acas:contextelement/acas:value[@unit='geo']"> <xsl:text>location OF </xsl:text> <xsl:value-of select="../acas:source"/> <xsl:text> IS </xsl:text> <xsl:value-of select="."/> <xsl:text> </xsl:text>

XSLT element samples xsl:template - defines a template xsl:value-of - take the value of an XPath expression xsl:text - text constant xsl:apply-templates - recurse on a selected set of nodes xsl:template <order> <id>1234</id> <customer>alice</customer>... </order> <xsl:template match= order >... Compendium 8 page 199 xsl:apply-templates <order> <id>1234</id> <customer>alice</customer>... </order> xsl:value-of <order> <id>1234</id> <customer>alice</customer>... </order> <xsl:template match= order > select= customer /> <xsl:template match= order > select= customer /> <xsl:template match= customer > <xsl:value-of select=. />

xpath <xsl:template match= order > select= customer /> <xsl:template match= customer > <xsl:value-of select=. /> Axis, location paths, expressions ancestor ancestor-or-self attribute child descendent descendent-or-self following following-sibling namespace parent preceding preceding-sibling self xpath axis Axis are are used in in location paths. Paths can can be be absolute or or relative. Axis describe subsets of of nodes. Axis + expression = node set set Compendium 8 page 200 xpath expression page heading para para heading para <page> <heading>...</heading> <para>...</para> <para>...</para> <heading>...</heading> <para>...</para> </page>... select= child::para[position()=1]... xpath core function library number last() number position() number count(node-set) string local-name(node-set?) string namespace-uri(node-set?) string name(node-set?) string string(object?) string concat(string, string, string*) boolean starts-with(string, string) boolean contains(string, string) string substring-before(string, string)...

XSL in Java javax.xml.parsers.* javax.xml.transform.* org.w3c.dom.* org.xml.sax.* End Compendium 8 page 201 All in in Java SDK 1.4