Om XML och XSLT

Senast uppdaterad den 25 apr. 2024

Använd XML och XSLT med Dreamweaver-webbsidor.

Obs!

Användargränssnittet i Dreamweaver och senare har förenklats. Det kan därför hända att du inte hittar vissa av alternativen i den här artikeln i Dreamweaver och senare. Mer information finns i den här artikeln.

Använd XML och XSL med webbsidor

Extensible Markup Language (XML) är ett språk som låter dig strukturera information. Precis som HTML låter XML dig strukturera din information med hjälp av taggar, men XML-taggar är inte fördefinierade som HTML-taggar. Istället låter XML dig skapa taggar som bäst definierar din datastruktur (schema). Taggar är nästlade inom andra för att skapa ett schema med överordnade och underordnade taggar.Precis som de flesta HTML-taggar har alla taggar i ett XML-schema en öppnings- och stängningstagg.

I följande exempel visas den grundläggande strukturen för en XML-fil:

<?xml version="1.0">

<mybooks>

<book bookid="1">

<pubdate>03/01/2004</pubdate>

<title>Displaying XML Data with Adobe Dreamweaver</title>

<author>Charles Brown</author>

</book>

<book bookid="2">

<pubdate>04/08/2004</pubdate>

<title>Understanding XML</title>

<author>John Thompson</author>

</book>

</mybooks>

I det här exemplet innehåller varje mall-<book>-tagg tre underordnade taggar: <pubdate>, <title> och <author>. Men varje <book>-tagg är också en underordnad tagg till <mybooks>-taggen, som är en nivå högre i schemat. Du kan namnge och strukturera XML-taggar på vilket sätt som helst, förutsatt att du nästlar taggar korrekt inom andra och tilldelar varje öppningstagg en motsvarande stängningstagg.

XML-dokument innehåller ingen formatering – de är helt enkelt behållare för strukturerad information. När du har ett XML-schema kan du använda Extensible Stylesheet Language (XSL) för att visa informationen. På samma sätt som Cascading Style Sheets (CSS) låter dig formatera HTML, låter XSL dig formatera XML-data. Du kan definiera stilar, sidelement, layout och så vidare i en XSL-fil och bifoga den till en XML-fil så att när en användare visar XML-data i en webbläsare formateras data enligt det du har definierat i XSL-filen. Innehållet (XML-data) och presentationen (definierad av XSL-filen) är helt åtskilda, vilket ger dig större kontroll över hur din information visas på en webbsida. I grund och botten är XSL en presentationsteknik för XML, där den primära utdatan är en HTML-sida.

Extensible Stylesheet Language Transformations (XSLT) är ett delspråk av XSL som faktiskt låter dig visa XML-data på en webbsida och "transformera" den, tillsammans med XSL-stilar, till läsbar, stiliserad information i form av HTML. Du kan använda Dreamweaver för att skapa XSLT-sidor som låter dig utföra XSL-transformeringar med en programserver eller en webbläsare. I en XSL-transformering på serversidan gör servern arbetet med att transformera XML och XSL och visa det på sidan. I en transformering på klientsidan gör en webbläsare (såsom Internet Explorer) arbetet.

Strategin du slutligen väljer (transformeringar på serversidan kontra transformeringar på klientsidan) beror på vad du försöker uppnå som slutresultat, de tekniker som är tillgängliga för dig, nivån av åtkomst du har till XML-källfiler och andra faktorer. Båda inriktningarna har sina fördelar och begränsningar. Till exempel fungerar transformeringar på serversidan i alla webbläsare medan transformeringar på klientsidan är begränsade till endast moderna webbläsare (Internet Explorer 6, Netscape 8, Mozilla 1.8 och Firefox 1.0.2). Transformeringar på serversidan låter dig visa XML-data dynamiskt från din egen server eller från var som helst på webben, medan transformeringar på klientsidan måste använda XML-data som är lokalt lagrad på din egen webbserver. Slutligen kräver transformeringar på serversidan att du driftsätter dina sidor till en konfigurerad programserver, medan transformeringar på klientsidan endast kräver åtkomst till en webbserver.

En självstudiekurs om XML finns på www.adobe.com/go/vid0165_se.

XSL-omvandlingar via server

Dreamweaver tillhandahåller metoder för att skapa XSLT-sidor som låter dig utföra XSL-transformeringar på serversidan.När en programserver utför XSL-transformeringen kan filen som innehåller XML-data finnas på din egen server eller var som helst på webben. Dessutom kan vilken webbläsare som helst visa de transformerade data. Att driftsätta sidor för transformeringar på serversidan är dock något komplext och kräver att du har åtkomst till en programserver.

När du arbetar med XSL-transformeringar på serversidan kan du använda Dreamweaver för att skapa XSLT-sidor som genererar kompletta HTML-dokument (hela XSLT-sidor) eller XSLT-fragment som genererar en del av ett HTML-dokument. En hel XSLT-sida liknar en vanlig HTML-sida. Den innehåller en <body>-tagg och en <head>-tagg och låter dig visa en kombination av HTML- och XML-data på sidan. Ett XSLT-fragment är en kodbit som används av ett separat dokument och som visar formaterad XML-data. Till skillnad från en hel XSLT-sida är det en oberoende fil som inte innehåller någon <body>- eller <head>-tagg. Om du vill visa XML-data på en egen sida skulle du skapa en hel XSLT-sida och binda din XML-data till den. Om du å andra sidan ville visa XML-data i en viss del av en befintlig dynamisk sida—till exempel en dynamisk startsida för en sportbutik med sportresultat från ett RSS-flöde som visas på ena sidan av sidan—skulle du skapa ett XSLT-fragment och infoga en referens till det i den dynamiska sidan. Att skapa XSLT-fragment och använda dem tillsammans med andra dynamiska sidor för att visa XML-data är det vanligare scenariot.

Det första steget i att skapa dessa typer av sidor är att skapa XSLT-fragmentet.Det är en separat fil som innehåller layout, formatering och så vidare för XML-data som du slutligen vill visa i den dynamiska sidan. När du har skapat XSLT-fragmentet infogar du en referens till det i din dynamiska sida (till exempel en PHP- eller ColdFusion-sida).Den infogade referensen till fragmentet fungerar mycket som en Server Side Include (SSI) — den formaterade XML-datan (fragmentet) finns i en separat fil, medan en platshållare för fragmentet visas på den dynamiska sidan i designvyn.När en webbläsare begär den dynamiska sidan som innehåller referensen till fragmentet, bearbetar servern den inkluderade instruktionen och skapar ett nytt dokument där fragmentets formaterade innehåll visas istället för platshållaren.

A. Webbläsaren begär en dynamisk sida B. Webbservern hittar sidan och skickar den till applikationsservern C. Programservern söker på sidan efter instruktioner och hämtar XSLT-fragment D. Programservern utför transformeringen (läser XSLT-fragment, hämtar och formaterar xml-data) E. Programservern infogar transformerat fragment på sidan och skickar tillbaka den till webbservern F. Webbservern skickar den färdiga sidan till webbläsaren 

Du använder serverbeteendet XSL Transformation för att infoga referensen till ett XSLT-fragment på en dynamisk sida.När du infogar referensen genererar Dreamweaver en mapp includes/MM_XSLTransform/ i webbplatsens rotmapp som innehåller en körbiblioteksfil.Applikationsservern använder funktionerna som definieras i denna fil när den transformerar den specificerade XML-datan.Filen ansvarar för att hämta XML-data och XSLT-fragment, utföra XSL-transformeringen och mata ut resultaten på webbsidan.

Filen som innehåller XSLT-fragmentet, XML-filen som innehåller din data och den genererade runtime library-filen måste alla finnas på servern för att din sida ska visas korrekt.(Om du väljer en fjärr-XML-fil som din datakälla—en från ett RSS-flöde, till exempel—måste den filen naturligtvis finnas någonstans på Internet.)

Du kan också använda Dreamweaver för att skapa hela XSLT-sidor för serversidiga transformeringar.En hel XSLT-sida fungerar på exakt samma sätt som ett XSLT-fragment, men när du infogar referensen till hela XSLT-sidan med hjälp av serverbeteendet XSL Transformation infogar du det fullständiga innehållet i en HTML-sida.Därför måste den dynamiska sidan (.cfm-, .php- eller .asp-sidan som fungerar som container-sidan) rensas från all HTML innan du infogar referensen.

Dreamweaver stöder XSL-transformeringar för ColdFusion-, ASP- och PHP-sidor.

Obs!

Din server måste vara korrekt konfigurerad för att utföra transformeringar på serversidan.Kontakta serveradministratören för mer information.

XSL-omvandlingar via klient

Du kan utföra XSL-omvandlingar på klienten utan att använda en programserver. Du kan använda Dreamweaver för att skapa en hel XSLT-sida som gör detta, men för klientomvandlingar måste du manipulera XML-filen som innehåller de data som du vill visa. Klientomvandlingar fungerar dessutom endast i moderna webbläsare (Internet Explorer 6, Netscape 8, Mozilla 1.8 och Firefox 1.0.2). 

Skapa först en hel XSLT-sida och koppla en XML-datakälla till den. (Du får en uppmaning i Dreamweaver att koppla datakällan när du skapar den nya sidan.) Du kan skapa en XSLT-sida från början eller så kan du konvertera en befintlig HTML-sida till en XSLT-sida. När du konverterar en befintlig HTML-sida till en XSLT-sida måste du koppla en XML-datakälla till den via panelen Bindningar (Fönster > Bindningar).

När du har skapat XSLT-sidan måste du länka den till XML-filen som innehåller XML-data genom att infoga en referens till XSLT-sidan i själva XML-filen (ungefär som om du skulle infoga en referens till en extern CSS-formatmall i <head>-avsnittet på en HTML-sida). Besökarna på platsen måste visa XML-filen (inte XSLT-sidan) i en webbläsare. När besökarna på platsen tittar på sidan utför webbläsaren XSL-omvandlingen och visar XML-data formaterade av den länkade XSLT-sidan.

Förhållandet mellan de länkade XSLT- och XML-sidorna är lika begreppsmässigt, men skiljer sig från den externa modellen för CSS/HTML-sidor. När du har en HTML-sida med innehåll (t.ex. text) använder du en extern formatmall för att formatera innehållet. HTML-sidan avgör innehållet och den externa CSS-koden, som användaren aldrig ser, avgör presentationen. Med XSLT och XML är situationen den omvända. XML-filen (som användaren aldrig ser i obearbetat format) avgör innehållet medan XSLT-sidan avgör presentationen. XSLT-sidan innehåller tabeller, layout, bilder, osv. som vanlig HTML oftast innehåller. När en användare tittar på XML-filen i en webbläsare formaterar XSLT-sidan innehållet.

A. Webbläsaren begär en XML-fil B. Servern svarar genom att skicka XML-filen till webbläsaren C. Webbläsaren läser XML-direktivet och anropar XSLT-filen D. Servern skickar XSLT-filen till webbläsaren E. Webbläsaren transformerar XML-data och visar dem i webbläsaren 

När du använder Dreamweaver för att länka en XSLT- sida till en XML-sida infogar Dreamweaver lämplig kod åt dig överst på XML-sidan.Om du äger XML-sidan som du länkar till (det vill säga om XML-filen uteslutande finns på din webbserver) behöver du bara använda Dreamweaver för att infoga lämplig kod som länkar de två sidorna.När du äger XML-filen är XSL-transformeringarna som utförs av klienten helt dynamiska.Det vill säga, närhelst du uppdaterar datan i XML-filen kommer all HTML-utdata som använder den länkade XSLT- sidan att automatiskt uppdateras med den nya informationen.

Obs!

XML- och XSL-filerna du använder för klientsidans transformeringar måste finnas i samma katalog.Om de inte gör det kommer webbläsaren att läsa XML-filen och hitta XSLT-sidan för transformeringen, men kommer att misslyckas med att hitta resurser (stilmallar, bilder och så vidare) definierade av relativa länkar på XSLT-sidan.

Om du inte äger XML-sidan som du länkar till (till exempel om du vill använda XML-data från ett RSS-flöde någonstans på webben) är arbetsflödet lite mer komplicerat.För att utföra klientsidans transformeringar med XML-data från en extern källa måste du först hämta XML-källfilen till samma katalog där din XSLT-sida finns.När XML-sidan finns på din lokala plats kan du använda Dreamweaver för att lägga till lämplig kod som länkar den till XSLT-sidan och lägga upp båda sidorna (den hämtade XML-filen och den länkade XSLT-sidan) på din webbserver.När användaren visar XML-sidan i en webbläsare formaterar XSLT-sidan innehållet, precis som i föregående exempel.

Nackdelen med att utföra XSL-transformeringar på klientsidan på XML-data som kommer från en extern källa är att XML-datan endast är delvis "dynamisk." XML-filen som du hämtar och ändrar är bara en "ögonblicksbild" av filen som finns någon annanstans på webben. Om den ursprungliga XML-filen ute på webben ändras måste du hämta filen igen, länka den till XSLT-sidan och publicera XML-filen på din webbserver igen. Webbläsaren renderar endast den data som den tar emot från XML-filen på din webbserver, inte datan som finns i den ursprungliga XML-källfilen.

XML-data och upprepade element

XSLT-objektet Repeating Region låter dig visa återkommande element från en XML-fil inom en sida. Alla regioner som innehåller en XML-data- platshållare kan omvandlas till en upprepad region. De vanligaste regionerna är dock en tabell, en tabellrad eller en serie tabellrader.

Följande exempel visar hur XSLT-objektet Repeating Region tillämpas på en tabellrad som visar menyinformation för en restaurang. Den första raden visar tre olika element från XML-schemat: objekt, beskrivning och pris. När XSLT-objektet Repeating Region tillämpas på tabellraden och sidan bearbetas av en programserver eller en webbläsare, upprepas tabellen med unik data infogad i varje ny tabellrad.

När du tillämpar ett XSLT-objekt av typen Repeating Region på ett element i Dokumentfönstret visas en tunn, flikad, grå kontur runt den upprepade regionen. När du förhandsgranskar ditt arbete i en webbläsare (Arkiv > Förhandsgranskning i webbläsare) försvinner den grå konturen och markeringen expanderar för att visa de angivna återkommande elementen i XML-filen, som i den föregående illustrationen.

När du lägger till XSLT-objektet Repeating Region på sidan förkortas längden på XML-dataplatshållaren i Dokumentfönstret. Det beror på att Dreamweaver uppdaterar XPath-uttrycket (XML Path language) för XML-dataplatshållaren så att det är relativt till sökvägen för det återkommande elementet.

Till exempel är följande kod för en tabell som innehåller två dynamiska platshållare, utan att ett XSLT-objekt av typen Repeating Region tillämpas på tabellen:

<table width="500" border="1">

<tr>

<td><xsl:value-of select="rss/channel/item/title"/></td>

</tr>

<tr>

<td><xsl:value-of select="rss/channel/item/description"/></td>

</tr>

</table>

Följande kod är för samma tabell med XSLT-objektet Repeating Region tillämpad på den:

<xsl:for-each select="rss/channel/item">

<table width="500" border="1">

<tr>

<td><xsl:value-of select="title"/></td>

</tr>

<tr>

<td><xsl:value-of select="description"/></td>

</tr>

</table>

</xsl:for-each>

I det föregående exemplet har Dreamweaver uppdaterat XPath för objekten som faller inom upprepningsområdet (title & description) för att vara relativ till XPath i de omslutande <xsl:for-each>-taggarna, snarare än hela dokumentet.

Dreamweaver genererar kontextrelativa XPath-uttryck i andra fall också.Om du till exempel drar en XML-dataplatshållare till en tabell som redan har ett XSLT-objekt för upprepningsområde tillämpad på sig, visar Dreamweaver automatiskt XPath relativ till den befintliga XPath i de omslutande <xsl:for-each>-taggarna.

Förhandsgranska XML-data

När du använder Förhandsgranskning i webbläsare (Arkiv > Förhandsgranskning i webbläsare) för att förhandsgranska XML-data som du har infogat i ett XSLT-fragment eller en hel XSLT-sida, skiljer sig motorn som utför XSL-transformationen från situation till situation.För dynamiska sidor som innehåller XSLT-fragment utför programservern alltid transformeringen.Vid andra tillfällen kan antingen Dreamweaver eller webbläsaren utföra transformationen.

Följande tabell sammanfattar situationerna när du använder Förhandsgranskning i webbläsare, och motorer som utför respektive transformationer:

Typ av sida som förhandsgranskats i webbläsare

Dataomvandling utförd av

Dynamisk sida som innehåller XSLT-avsnitt

Programserver

XSLT-avsnitt eller hel XSLT-sida

Dreamweaver

XML-fil med länk till hel XSLT-sida

Webbläsare

Följande ämnen ger riktlinjer för att hjälpa dig avgöra lämpliga förhandsgranskningsmetoder, baserat på dina behov.

Förhandsvisa sidor för serveromvandlingar

I fallet med transformationer på serversidan transformeras innehållet som webbplatsbesökaren slutligen ser av din applikationsserver.När du bygger XSLT och dynamiska sidor för användning med transformationer på serversidan är det alltid att föredra att förhandsgranska den dynamiska sida som innehåller XSLT-fragmentet istället för XSLT-fragmentet självt.I det förra scenariot använder du applikationsservern, vilket säkerställer att din förhandsgranskning är konsekvent med vad dina webbplatsbesökare kommer att se när de besöker din sida.I det senare scenariot utför Dreamweaver transformationen, och kan ge något inkonsekventa resultat.Du kan använda Dreamweaver för att förhandsgranska ditt XSLT-fragment medan du bygger det, men du kan se de mest exakta resultaten av datarendering om du använder applikationsservern för att förhandsgranska din dynamiska sida efter att du har infogat XSLT-fragmentet.

Förhandsvisa sidor för klientomvandlingar

I fallet med transformationer på klientsidan transformeras innehållet som webbplatsbesökaren slutligen ser av en webbläsare.Du åstadkommer detta genom att lägga till en länk från XML-filen till XSLT-sidan.Om du öppnar XML-filen i Dreamweaver och förhandsgranskar den i en webbläsare, tvingar du webbläsaren att ladda XML-filen och utföra transformationen.Detta ger dig samma upplevelse som den som din webbplatsbesökare har.

Att använda detta tillvägagångssätt gör det dock svårare att felsöka din sida eftersom webbläsaren transformerar XML:en och genererar HTML:en internt. Om du väljer webbläsarens alternativ Visa källa för att felsöka den genererade HTML:en kommer du bara att se den ursprungliga XML:en som webbläsaren tog emot, inte den fullständiga HTML:en (taggar, stilar och så vidare) som används för att rendera sidan.För att se den fullständiga HTML:en när du visar källkoden måste du istället förhandsgranska XSLT-sidan i en webbläsare.

Förhandsvisa hela XSLT-sidor och XSLT-avsnitt

När du skapar hela XSLT-sidor och XSLT-fragment vill du förhandsgranska ditt arbete för att säkerställa att din data visas korrekt.Om du använder Förhandsgranskning i webbläsare för att visa en hel XSLT-sida eller ett XSLT-fragment utför Dreamweaver transformeringen med hjälp av en inbyggd transformeringsmotor. Denna metod ger dig snabba resultat och gör det enklare för dig att stegvis bygga och felsöka din sida. Det ger också dig möjlighet att visa den fullständiga HTML-koden (taggar, stilar och så vidare) genom att välja alternativet Visa källa i webbläsaren.

Obs!

Denna förhandsgranskningsmetod används vanligtvis när du börjar bygga XSLT-sidor, oavsett om du använder klienten eller servern för att transformera din data.