61
Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweis e wurde die Datei verschoben, 1 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft. Martin Brändle Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Embed Size (px)

DESCRIPTION

Dies ist ein alter Vortrag, gehalten an der FileMaker Konferenz 2006 Deutschland. Er könnte für Anfragende nützlich sein, die sich für RSS mit FileMaker interessieren. This is an old presentation given at FileMaker Conference 2006 in Germany. It could be useful for some requesters that are interested in RSS publishing with FileMaker.

Citation preview

Page 1: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

1 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft.

Martin Brändle

Grundlagen von XML, XSLT und Web 2.0 in

FileMaker Server Advanced 8

Page 2: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

2 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Inhalt

•  Custom Web Publishing •  Allgemeines zu XML •  Allgemeines zu XSLT

•  FileMaker XML und XSLT-Abfragen

•  Newsticker Demo

•  RSS

•  AJAX

Page 3: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

3 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Über mich

•  Informationsspezialist Chemie (prom. Chemiker, NDS Information + Dokumentation)

•  Informationszentrum Chemie Biologie Pharmazie, ETH Zürich Entwicklung: FileMaker: Datenbanken (Informationssystem CLICAPS) FileMaker Custom Web Publishing (CWP): CDML (prä-7), XML/XSLT (post-6) Websites Ausbildung: Studierende, Berufslehre I+D Fachspezialist Chemie: Erwerbung, Recherchen

•  e-Mail: braendle at chem dot ethz dot ch

Page 4: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

4 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

CWP Projekte mit XML/XSLT

•  CLICAPS Bibliotheksinformationssystem - http://www.clicaps.ethz.ch/ Unterstützte Suchen, Personalisierung, StarTree

•  Website Informationszentrum : CWP-Komponenten - http://www.infochembio.ethz.ch/

Newsticker, > 2000 RSS-Feeds für elektronische Zeitschriften und News

•  Literaturdatenbank für Seile und Seilbahnen - http://www.ropeways.ethz.ch/ AJAX-basierter Webshop

•  Artikelkatalog Chemieschalter - ���http://www.infochembio.ethz.ch/zv/zv_artikel_suche.html

Ca. 320‘000 Zugriffe / Woche (25% FileMaker CWP Zugriffe)

Page 5: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

5 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Über Sie

•  XML Import/Export mit XSLT? •  Erfahrungen mit Web Design und Publishing (HTML, CSS, JavaScript)? •  Projekte mit CDML (Claris Dynamic Markup Language)? •  FileMaker Server Advanced (FMSA)? •  XSLT Site Assistant? •  CDML-nach-XSLT Konversionstool? •  XML/XSLT vs. XML/PHP?

Page 6: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

6 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

CWP : Erzeugen von XML mit FMSA

DEMO

Page 7: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

7 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

XML

•  XML = eXtensible Markup Language •  Menge von Regeln zur Schaffung von Auszeichnungs- bzw. Markup-Sprachen •  Markup-Sprache = Menge von Symbolen (Tags) im Dokument

Benennung (Auszeichnung) einzelner Teile Abgrenzung einzelner Teile (Start-Tag, Ende-Tag)

<Meldung> <Titel>Nur noch 9 Tage bis zur FileMaker Konferenz 2006!</Titel>���<Absatz>Die zweitägige Konferenz bietet <nichtwichtig>vielfältige Informationen zu unterschiedlichstenThemen</nichtwichtig>. Sie haben erstmals die Möglichkeit, unter einer Auswahl von 3 parallelen Sessions Ihr maßgeschneidertes Programm selbst zusammen zu stellen. <Wichtig>Melden Sie sich gleich an und geben Sie uns Ihre Wünsche bekannt.</Wichtig></Absatz>

</Meldung>

Page 8: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

8 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Elemente: Die Bausteine von XML

•  Behälter für Text und Unterelemente��� <Text>Das ist im Element Text enthaltener Text</Text> <Aussen>Hier Text<Innen>und noch mehr Text</Innen> und wieder Text</Aussen> •  Syntax��� <Name Attribut1="Wert1" Attribut2="Wert2">Inhalt</Name> •  Leeres Element <Leer></Leer> ⇒ <Leer/> <Leer Attribut1="Wert1" Attribut2="Wert2"/>

Page 9: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

9 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Element-Erweiterungen: Attribute

•  Syntax Attributname="Wert" oder Attributname='Wert' Beispiel: <resultset count="232" fetch-size="10"> •  Ein Element darf jedes Attribut nur einmal enthalten Falsch: <Gruppe Person="Max" Person="Sonja" Person="Jonas"> Richtig: <Gruppe Personen="Max Sonja Jonas"> Richtig: <Gruppe Person1="Max" Person2="Sonja" Person3="Jonas"> Richtig: <Gruppe><Person>Max</Person><Person>Sonja</Person>

<Person>Jonas</Person></Gruppe>

Page 10: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

10 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

XML-Dokumente : Baumstruktur

<?xml version="1.0" encoding="UTF-8"?> <Fruechte> <!-- Kommentar: Hier folgen die einzelnen Fruechte --> <Frucht id="1">Apfel<Farbe>rot</Farbe></Frucht> <Frucht id="2">Zitrone<Farbe>gelb</Farbe></Frucht> </Fruechte>

XML-Deklaration

Page 11: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

11 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Zeichen-Entities

•  Vordefinierte Zeichen-Entities &amp; : & &apos; : ' &gt; : > &lt; : < &quot; : " •  Zahlendefinierte Zeichen-Entities : Unterstützung von Unicode in XML

Dezimal: &#8364; : € Sedezimal: &x20ac; : €

Page 12: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

12 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Namensräume

•  Namensraum = Gruppe von Element- und Attributnamen •  Vermeidung von Namenskonflikten Beispiel: Bank (Geldinstitut, Sitzgelegenheit, Untiefe) ���

•  Qualifizierte Elementnamen��� <Geldinstitute:Bank> und <Sitzgelegenheiten:Bank>

•  Namensraum-Deklaration

xmlns:Name="url" Beispiel: <xsl:stylesheet xmlns:fmrs="http://www.filemaker.com/xml/fmresultset" ...

Page 13: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

13 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Wohlgeformte XML-Dokumente

•  Jedes Element, das Text oder Elemente enthält, muss ein Start- und End-Tag haben

•  Der Tag eines leeren Elements muss vor der Abschlussklammer einen Schrägstrich / haben

•  Alle Attributwerte müssen in Anführungszeichen stehen •  Elemente dürfen sich nicht überlappen

<Beispiel>Richtiges <fett>Beispiel</fett> für Verschachtelung.</Beispiel>

<Beispiel>Falsches <fett>Beispiel</Beispiel> für Verschachtelung.</fett>

•  Keine isolierte Markupzeichen: < , ]]> und & •  Elementnamen dürfen nur mit Buchstaben und Unterstrichen _ beginnen •  Elementnamen dürfen nur Buchstaben, Zahlen, Bindestriche, Punkte,

Unterstriche enthalten, und Doppelpunkte für Namensräume

Page 14: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

14 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Sinn und Zweck von XML

•  W3C Standard •  Anwendungsspezifisch •  Eindeutige Strukturen •  Trennung von Inhalt und Präsentation ⇒ XSLT •  Fehlerüberprüfung möglich

Page 15: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

15 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

FMSA XML Abfragen

•  Merkmal der URL http://host/fmi/xml/fmresultset.xml?.... •  Allgemeiner Aufbau der URL (kursiv = optional)

http://host/fmi/xml/fmresultset.xml?-db=Datenbank&-lay=Layout���&Feld1.op=bw&Feld1=Wert1&Feld2.op=bw&Feld2=Wert2&-sortfield.1=Feldname���&-sortorder.1=ascend&-max=Anzahl_Datensätze&-befehl •  Häufige Befehle -find, -findall, -new, -edit (-edit braucht &-recid=Record_ID) Für alle Parameter und Befehle siehe FMSA CWP Handbuch, Anhang A!

Page 16: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

16 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

fmresultset XML grammar (1)

<?xml version="1.0" encoding="UTF-8"?> <fmresultset xmlns="http://www.filemaker.com/xml/fmresultset" version="1.0"> <error code="0"/> <product build="06/14/2006" name="FileMaker Web Publishing Engine" ��� version="8.0.4.128"/> <datasource database="Mitteilungen_fmi" date-format="MM/dd/yyyy" ��� layout="WWW_Meldungen" table="Meldungen" time-format="HH:mm:ss" ��� timestamp-format="MM/dd/yyyy HH:mm:ss" total-count="232"/> <metadata> <field-definition auto-enter="no" global="no" max-repeat="1" name="Aktiv" not- ��� empty="no" result="text" type="calculation"/> ... <relatedset-definition table="Meldungen_CT_Keywords"> <field-definition auto-enter="no" global="no" max-repeat="1" ��� name="Keywords::Keyword_de" not-empty="no" result="text" type="normal"/> </related-definition> </metadata>

Fehlercode

Layoutinfo

Prolog..........................................

Page 17: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

17 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

fmresultset XML grammar (2)

<resultset count="3" fetch-size="2"> <record mod-id="13" record-id="233"> <field name="Aktiv"> <data>ja</data> </field> ... <relatedset count="4" table="Meldungen_CT_Keywords"> <record mod-id="0" record-id="558"> <field name="Keywords::Keyword_de"> <data>FileMaker</data> </field> ... </record> ... </relatedset> ... </record> ... </resultset>

</fmresultset>

Datensätze (0 ... mehrere) ���Feld (1 ... mehrere) Felddaten (1 ... mehrere Wiederholungen)

Portal (0 ... mehrere) Portaldatensätze (0 ... Mehrere)

Daten......................................................

Page 18: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

18 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

XSLT

•  XSLT = eXtensible Stylesheet Language : Transformations •  W3C Standard •  Sprache, um die Struktur von XML-Dokumenten zu transformieren

d.h. XSLT braucht immer XML (fast immer ...) •  Resultat der Transformation:

XML, HTML (als XHTML), Text, irgendetwas (BLOB)

Page 19: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

19 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

FMSA CWP mit XML/XSLT

Page 20: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

20 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

FMSA XSLT Abfragen

•  Merkmal der URL http://host/fmi/xsl/stylesheetname.xsl?-grammar=fmresultset&.... •  Allgemeiner Aufbau der URL (kursiv = optional)

http://host/fmi/xsl/stylesheetname.xsl?-grammar=fmresultset&-db=Datenbank &-lay=Layout&Feld1.op=bw&Feld1=Wert1&Feld2.op=bw&Feld2=Wert2���&-sortfield.1=Feldname&-sortorder.1=ascend&-max=Anzahl_Datensätze&-befehl •  Häufige Befehle -find, -findall, -new, -edit (-edit braucht &-recid=Record_ID), -process Für alle Parameter und Befehle siehe FMSA CWP Handbuch, Anhang A!

Page 21: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

21 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

XSLT : Eigenschaften

•  In XML definiert <xsl:for-each select="/fmrs:fmresultset/fmrs:resultset/fmrs:record”>

<xsl:variable name="record" select="current()"/> <xsl:value-of select="$record/fmrs:field[@name = 'Feld1' ]/fmrs:data[1]"/> </xsl:for-each>

•  Deklarativ anstelle prozedural (nicht wie C++, Java, JavaScript, PHP, ...) Transformation wird beschrieben. ���XSLT-Prozessor entscheidet, wie am effizientesten transformiert wird. ���

•  Regelbasiert Templat-basierte Regeln die für Muster, die im Input vorkommen, greifen und dann den Output generieren. Reihenfolge der Deklaration egal.

Page 22: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

22 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Allgemeine Struktur eines Stylesheets

<?xml version="1.0" encoding="UTF-8"?> <?xml-processing-instruction (optional)?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

Namensraumdeklarationen ...> <!-- Kommentar --> <!-- Include-Dateien (optional mit xsl:include) --> <!-- Variablen-Deklarationen (optional mit xsl:variable) --> <xsl:output method="html" encoding="UTF-8"/> <xsl:template match="/fmrs:fmresultset"> <!-- HTML Code erzeugen --> <!-- HTML Code erzeugen --> </xsl:template> <!-- evtl. Untertemplate (aka Unterroutinen) --> </xsl:stylesheet>

Kop

fber

eich Top-Level-

Elemente .........

Page 23: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

23 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

XSLT versus PHP

<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0"...> <xsl:output method="html" encoding="UTF-8"/> <xsl:template match="/fmrs:fmresultset"> <xsl:variable name="record" select=“$record/

fmrs:fmresultset/fmrs:resultset/���fmrs:record[1]“/>

<html> <head>....</head> <body> <p>Guten Morgen, </p> <p> <xsl:value-of select="$record/fmrs:field[@name =

'Vorname']/fmrs:data[1]"/> </p> </body> </html> </xsl:template> </xsl:stylesheet>

<html> <?php require_once('FileMaker.php'); $fm = new FileMaker(‘meine_db'); $findCommand =& $fm->newFindAllCommand('Form

View'); // je nachdem 20-40 Zeilen für Query! $result = $findCommand->execute(); $records = $result->getRecords(); $record = $records[1]; ?> <head>....</head> <body> <p>Guten Morgen, </p> <p> <?php echo $record->getField(‘Vorname'); ?> </p> </body> </html>

XSLT erzeugt alles PHP speist ein

Page 24: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

24 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

XSLT - Wichtige Elemente

•  <xsl:value-of select="XPath-Ausdruck, Ausdruck oder Datentyp"/> für Ausgabe •  <xsl:template match="XPath-Ausdruck"> für Templatregeln •  <xsl:for-each select="XPath-Ausdruck"> für Loops •  <xsl:choose> für Verzweigungen •  <xsl:attribute name="attributname"> zum Setzen von Elementattributen •  <xsl:copy-of select="XPath-Ausdruck"/> zum Kopieren ganzer XML-Fragmente

Page 25: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

25 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Auswahl von XML-Elementen: XPath

•  XSLT und XPath bedingen sich gegenseitig! XPath = W3C Standard •  XPath-Ausdrücke zum Auswählen von Knoten (Elemente, Attribute) eines XML-Baums •  XPath verwendet Pfade und Achsen. Wir verwenden abgekürzte Notationen . relativ im Kontext: Der aktuelle Knoten record relativ im Kontext: alle record-Kinderknoten /fmrs:fmresultset/fmrs:resultset absolut: Alle resultset-Kinder des Kindelements fmresultset���

des Wurzelelements fmrs:resultset/fmrs:record relativ im Kontext: Alle record-Kinder von resultset fmrs:error/@code relativ im Kontext: Das Attribut code des Elements error fmrs:record[2] relativ im Kontext: Das zweite record-Kindelement fmrs:field[@name = 'Vorname'] relativ im Kontext: Das Element field mit Attribut name, ���

dessen Attributwert Vorname ist (Test-Ausdruck) •  XPath-Ausdrücke auch für Berechnungen und Vergleiche <xsl:value-of select="($x + $y) div 10"/> <xsl:value-of select="$x != 'Vergleichstring'/>

Page 26: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

26 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

„Kontext“ in XSLT

•  Statischer Kontext Hängt von Position des Ausdrucks im Stylesheet ab Bsp. Globale Variablen (Kopf-Bereich) Bsp. Lokale Variable (Kind von xsl:template oder Unterelement)

•  Dynamischer Kontext Gegenwärtiger Wert der Variable Gegenwärtige Position im XML-Baum der Quelle, umfasst: Knoten (xsl:for-each, xsl:apply-templates) Kontext-Knoten (normalerweise gleich wie gegenwärtiger Knoten) Kontext-Position (abfragbar über position(), ��� bestimmt durch Durchlauf in xsl:for-each )

Kontext-Grösse (Anzahl der Knoten in der gegenwärtigen Knotenliste)

Page 27: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

27 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Datentypen in XSLT

•  Dynamische Typen, assoziiert mit Werten anstelle von Variablen

•  Boolean: true(), false()

•  Zahlen: Bsp. -10, 0, 9999999999, 1 div 0, NaN

•  Strings: Bsp. 'Text', 'Abk&amp;uuml;rzung'

•  Node-sets: Satz von Knoten eines XML-Baums oder Kombination

Page 28: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

28 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Beispiel: Newsticker

•  Zeigt neueste Meldungen an •  Entfernt nicht mehr aktuelle Meldungen nach einem Verfalldatum •  Anreisser (mehr ...) und Detailanzeige •  Zweisprachig •  Suchfunktion •  RSS NewsFeed •  AJAX-basierte Auswahl nach Schlagworten •  E-mailing einzelner News

Download: http://www.infochembio.ethz.ch/download/newsticker.zip

Page 29: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

29 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Newsticker

DEMO

Page 30: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

30 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Newsticker: Entwicklungszyklen

•  Schritt 0 : Erstellen des Website-Templats •  Schritt 1 : Aktivieren der Datenbank, einfache Abfrage, Anzeige der aktuellen News •  Schritt 1+ : Refactoring - Auftrennen in Module •  Schritt 2 : Detailanzeige - cmdl2xsl_utilities-Bibliothek •  Schritt 2+ : Nachladen von XML - document()-Funktion •  Schritt 3 : Einführen der Suche - Vom FM XML Query zum Formular •  Schritt 3+ : Smarte Suche : Logs, Stoppwortfilterung, Wiederverwendung •  Schritt 4 : RSS Feed •  Schritt 4+ : RSS optimiert •  Schritt 5 : AJAX für dynamische Themenwahl •  Schritt 6 : E-mails

Download: http://www.infochembio.ethz.ch/download/newsticker.zip

Page 31: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

31 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Schritt 0 : Website-Templat

•  Erzeugen in einer Webseiten-Erstellungssoftware, bspw. Macromedia Dreamweaver

•  Erzeugte Seiten müssen im XHTML-Format sein Dreamweaver: Menu Datei > Konvertieren > XHTML 1.0 Transitional

Page 32: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

32 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Schritt 1 : Einfache Abfragen

•  XML und XSLT CWP einschalten •  Datenbank CWP fähig machen

Erweiterte Privilegien einstellen: fmxslt, fmxml WICHTIG fmxml immer mit passwort-geschütztem Account, sonst Sicherheitsrisiko!

•  Layouts für CWP erstellen WICHTIG Nur benötigte Felder für Suchen und Resultate aufnehmen

•  XHTML in Stylesheet-Vorlage einfüllen

Page 33: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

33 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Was kommt wohin?

•  XSLT-Stylesheets Relativ zum Verzeichnis, in welchem FileMaker Server installiert ist: Web Publishing/xslt-template-files/ oder Unterverzeichnisse desselben���

•  XML-Dateien, die nachgeladen werden Web Publishing/xslt-template-files/ oder Unterverzeichnisse desselben���

•  Alle statischen Dateien (HTML, CSS, JavaScript, GIF, JPG, PNG, ...) ins Verzeichnis der Webdateien , das im Webserver bezeichnet wurde, z.B. /Library/Webserver/Documents (OS X) ���oder ~/Sites (OS X, Personal Web Sharing) oder frei wählbares Verzeichnis (OS X Server, Windows Server)

Page 34: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

34 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

XSLT: Variablen

Variable deklarieren (Variante 1, effizient) <xsl:variable name="meinevar" select=""/> <xsl:variable name="meinstring" select="'Text in einfachen Hochkommata'"/>! Variable deklarieren (Variante 2, mächtig, aber ineffizient) <xsl:variable name="meinevar">

<!-- irgendein XSLT-Konstrukt --> </xsl:variable> Variable verwenden mit $name: <xsl:value-of select="$meinevar"/>

Page 35: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

35 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

XSLT: Loops mit xsl:for-each

<xsl:for-each select="/fmrs:fmresultset/fmrs:resultset/fmrs:record”> <!-- Aktuelles Element und alle Unterelemente mit current() wählen --> <xsl:variable name="record" select="current()"/> <!-- Position im Kontext mit position() wählen --> <xsl:variable name="nummer" select="position()"/> <!-- Nummer - Feld1 - Feld2 - Zeilenumbruch ausgeben --> <xsl:value-of select="$nummer"/> <xsl:text> - </xsl:text> <xsl:value-of select="$record/fmrs:field[@name = 'Feld1' ]/fmrs:data[1]"/> <xsl:text> - </xsl:text> <xsl:value-of select="$record/fmrs:field[@name = 'Feld2' ]/fmrs:data[1]"/> <br/> </xsl:for-each>

Page 36: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

36 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Wichtige Xpath- und XSLT-Funktionen

•  String-Manipulation concat(), contains(), normalize-space(), starts-with(), string-length(), substring(), substring-before(), substring-after()

•  Aggregation count(), sum()

•  Boole‘sche Funktionen false(),true(),not()

•  Information über den Kontext current(), last(), position()

•  XML-Dokument laden document()

Keine Angabe eines Namensraums nötig!

Page 37: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

37 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Schritt 1+: Refactoring

•  Modularisierung: Integration von Seitenteilen in separate Stylesheets Kopf mit Breadcrumb : header_de.xsl, header_en.xsl Resultate : results_de.xsl, results_en.xsl

Fuss : footer_de.xsl, footer_en.xsl

•  Einbinden der Stylesheets in Hauptseite mit <xsl:include href="url">

•  Aufruf der Teile mit <xsl:call-template name="name">

Page 38: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

38 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

XSLT: Subroutinen

•  Subroutinen über benannte Template implementieren���

<xsl:template name="meine_subroutine">��� <xsl:param name="uebergabe1"/>��� <xsl:param name="uebergabe2"/>��� <!-- hier etwas tun -->���</xsl:template>

•  Aufruf der Subroutine���

<!-- hier etwas tun --> <xsl:call-template name="meine_subroutine"> <xsl:with-param name="uebergabe1" select="$var1"/> <xsl:with-param name="uebergabe2" select="XPath-Ausdruck2"/>���</xsl:call template> <!-- hier etwas tun -->

Übergebene Parameter

Übergabeparameter

Page 39: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

39 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

FileMaker XSLT Erweiterungsfunktionen

•  Namensraum muss in <xsl:stylesheet xmlns:fmxslt="xalan://com.fmi.xslt.ExtensionFunctions“> spezifiziert werden

•  Angabe des fmxslt: Namensraumpräfixes •  Beispiele

Stringmanipulation: fmxslt:url_encode(), fmxslt:url_decode() u.a. Datumsfunktionen: fmxslt:convert_datetime() u.a. e-Mail: fmxslt:send_email()

Siehe FMSA CWP Handbuch, S. 65ff ; XSLT Reference.fp7

Page 40: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

40 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Schritt 2 : Aufruf der Detailseite

•  Verwendung des Templats get-link in der Bibliothek cdml2xsl_utilities.xsl

•  Falls Bibliothek nicht vorhanden Dummy-CDML generieren (wie: siehe lib/results_de.xsl) Mit CDML-XSLT Konversionstool konvertieren, erzeugt cdml2xsl_utilities.xsl

•  Siehe: FMSA CWP Handbuch, Anhang C, insbesonders S. 139ff.

Page 41: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

41 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Schritt 2+: Nachladen von Dokumenten

•  Verwendung der XSLT-Funktion document() und Abspeichern in einer Variable

•  <xsl:variable name="xmlbaum" select="document('url')"/> •  Verwendung von $xmlbaum an beliebiger Stelle im Stylesheet

•  document() akzeptiert nur wohlgeformtes XML

Page 42: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

42 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Schritt 3: Suche

•  XSLT-Abfrage in Formular umwandeln &Parameter=Wert Paare ⇒

<input type="..." name="Parameter" value="Wert"/>

Page 43: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

43 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Schritt 3+ : Smarte Suche

•  Stoppwort-Filterung •  Automatisch erzeugte Logdatei •  Einsatz von fmxslt:set_status_code() und fmxslt:set_header() zur

Beeinflussung des HTTP-Headers (FMSA CWP Handbuch, S. 76)

•  Weitere Möglichkeiten Abfrage umformulieren (CLICAPS, Seilbahnliteratur) Abfragen in mehreren Tabellen gleichzeitig (CLICAPS) Abfrageanalyse (CLICAPS) Unterstützte Abfragen (Meinen Sie? in CLICAPS) History-Funktion Alerts

Page 44: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

44 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Schritt 4 : RSS

•  RSS = Familie von Nachrichtenformaten in XML, Transport über HTTP RSS 0.9, 1.0 RDF Site Summary RSS 0.91, 1.0 Rich Site Summary RSS 2.0 Really Simple Syndication ATOM 1.0 Standard der IETF (versucht Probleme mit eingebettetem���

HTML zu lösen)

•  Content-Syndication (Mehrfach-Verwendung von Inhalten) •  Braucht NewsReader oder RSS-fähigen Browser (Safari, FireFox, IE7) •  RSS 0.9-2.0 siehe Ben Hammersley, Content Syndication with RSS, O'Reilly, 2003 •  Beispiel: Erzeugen von RSS 1.0

Page 45: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

45 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

RSS 1.0 Grundstruktur

<rdf:RDF ...> <channel rdf:about="channel_url"> <title>Titel</title> <description>Zusammenfassung des Feeds</description> <link>URL der Feed-Website</link> <items> <rdf:Seq> <rdf:item resource="URI des Items 1"/> <rdf:item resource="URI des Items 2"/> </rdf:Seq> </items> </channel> <item/> <item/> </rdf:RDF>

Kanal: Feed-Spezifikation

Inhalt der einzelnen Meldungen

Page 46: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

46 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Schritt 4+ : RSS optimiert

•  Stetiges Pollen durch NewsReader ⇒ RSS-Meldungen fressen Bandbreite ⇒ Server wird durch Abfragen belastet���

•  Lösung: Meldungen nur schicken, wenn sich etwas geändert hat NewsReader lesen HTTP-Header aus: ��� Not-Modified Statuscode (304) und Modified-Since Meldung

NewsReader senden If-Modified-Since Meldung im HTTP-Header Verwenden der fmxslt:set_status_code(), fmxslt:get_header() und fmxslt:set_header() Erweiterungsfunktionen zur Optimierung

Page 47: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

47 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Web 2.0

•  Tim O'Reilly, What is Web 2.0 : Design Patterns and Business Models for the Next Generation of Software, 2005 http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html

•  Prinzipen Web als Plattform Kollektive Aktivität ermöglichen (RSS, Blogs, Wikis, User Tagging, User Content)

Datengetriebene Applikationen Ende des Software-Release-Zyklus - Co-Entwicklung durch Benutzer Einfache Programmiermodelle und Protokolle (z.B. AJAX, RSS, REST) Software für verschiedene Devices Rich Internet Applications : AJAX als Schlüsselkomponente

•  Kritische Sicht: http://en.wikipedia.org/wiki/Web_2

Page 48: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

48 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Schritt 5: AJAX

•  AJAX = Asynchronous JavaScript And XML •  Umfasst mehrere Technologien

Präsentation über XHTML und CSS Dynamische Anzeige und Interaktion via Document Object Model (DOM) Datenaustausch und -manipulation über XML und XSLT Asynchrones Laden/Schreiben von Daten über XMLHttpRequest-Objekt Verbindung der Komponenten über JavaScript

•  Prinzipien von AJAX Browser enthält Anwendung, nicht Inhalt Server liefert Daten, nicht Inhalt Interaktion des Benutzers ist flüssig und ununterbrochen

Page 49: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

49 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

AJAX: XMLHttpRequest()-Objekt

•  Von neueren Browsern unterstütztes API •  Laden und Schreiben von XML-Daten über HTTP •  Ursprünglich von Microsoft entwickelt, jetzt W3C Draft •  Dokumentation

http://en.wikipedia.org/wiki/XMLHttpRequest http://www.w3.org/TR/XMLHttpRequest/

•  Diskussion anhand Beispielcode (Crane, Pascarello, Ajax in Action, Manning, 2006)

•  Verwendung der OpenSource JavaScript Bibliothek prototype.js

Page 50: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

50 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

AJAX: DOM

•  Document Object Model (DOM) erschliesst geladene Webseite für JavaScript •  Hierarchischer Baum von Dokumentknoten •  Zugang in JavaScript über Methoden der document- und node-Objekte

document.createElement() document.createTextNode() document.createAttribute() document. getElementById() appendChild() Siehe http://de.selfhtml.org/javascript/objekte/

•  Alternativ: "Methode des armen Mannes" Verwendung der innerHTML Eigenschaft

Page 51: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

51 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Schritt 6: E-mails

•  Einsatz von AJAX und fmxslt:send_email()

Page 52: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

52 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Anhang

Anhang

Page 53: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

53 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Werkzeuge: FMSA

•  FileMaker Site Assistant •  FileMaker CDML Converter •  Query String Reference.fp7 •  XSLT Reference.fp7 •  FMSA8_Custom_Web-Handbuch.pdf

Page 54: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

54 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Werkzeuge: Editoren

•  Adobe Macromedia Dreamweaver 8 (WYSIWYG, unterstützt XSLT) •  Altova XMLSpy (MS Windows) •  <oXygen/> XML Editor 2.0 (MS Windows, Mac OS X, Linux, Java Web,

Eclipse)

•  cladonia XML Exchanger 3.2 Lite (Java-basiert, gratis für nicht-kommerzielle Nutzung)

•  Einfache Texteditoren wie Barebones TextWrangler, Notepad, vi, ...

Page 55: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

55 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Werkzeuge: XSLT-Prozessoren

•  Saxon : http://saxon.sourceforge.net/ •  Apache Xalan : http://xalan.apache.org/

Page 56: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

56 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Literatur

•  Michael Kay, XSLT - Programmer‘s Reference, 2. Auflage, Wiley, 2003 •  Beverly Voth, FileMaker Pro 6 : Developer's Guide to XML/XSL, Wordware,

2003

•  Sal Mangano, XSLT Cookbook, O'Reilly, 2003 •  Erik T. Ray, Einführung in XML, O'Reilly, 2001 •  Ben Hammersley, Content Syndication with RSS, O'Reilly, 2003 •  Dave Crane, Eric Pascarello, AJAX in Action, Manning, 2005

Page 57: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

57 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

Websites

•  XSLT FAQ - http://www.dpawson.co.uk/xsl/index.html •  FMForums, XML/XSLT Subforum - http://www.fmforums.com/ •  FileMaker Forum - http://www.filemaker.de/forum/ •  W3C XSLT 1.0 Recommendation - http://www.w3.org/TR/xslt •  W3C XPath 1.0 Recommendation - http://www.w3.org/TR/xpath •  W3C DOM - http://www.w3.org/DOM/ •  Prototype Javascript Framework (mit AJAX) - http://prototype.conio.net/ •  Rico JavaScript Library - http://openrico.org/ •  RSS Feed Validator - http://feedvalidator.org/ •  SELFHTML (HTML und JavaScript zum Selberlernen) - http://de.selfhtml.org/

Page 58: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

58 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

XSLT : Besonderheiten (1)

•  XSLT erlaubt keine Seiteneffekte. Seiteneffekt = Funktion oder Prozedur ändert eigene Umgebung ⇒  Richtige Anzahl und Reihenfolge der Aufrufe

Definitionen wie <xsl:choose> <xsl:when test="$x = true()"><xsl:variable name="str" select="'abc'"/></xsl:when> <xsl:otherwise><xsl:variable name="str" select="'def'"/></xsl:otherwise> </xsl:choose>

gehen nicht!

Lösung: Umdrehen <xsl:variable name="str"> <xsl:choose> <xsl:when test="$x = true()"><xsl:value-of select='"abc'"/></xsl:when> <xsl:otherwise><xsl:value-of select="'def'"/></xsl:otherwise> </xsl:choose> </xsl:variable>

Page 59: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

59 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

XSLT : Besonderheiten (2)

•  ... keine Seiteneffekte ���

Zuweisungen wie <xsl:variable name="x" select="$x + 1"/> (analog zu x = x + 1) gehen nicht! Lösung: Rekursive Programmierung, Wechsel des Kontexts

•  XSLT ist erweiterbar JavaScript, Java Siehe FMSA CWP Handbuch, S. 86

Page 60: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

60 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

XSLT: Verzweigungen mit xsl:choose

<xsl:choose> <xsl:when test="/fmrs:fmresultset/fmrs:error/@code = 0"> <!-- Zeige Resultate an --> </xsl:when> <xsl:when test="/fmrs:fmresultset/fmrs:error/@code = 102"> <!-- Zeige Text für Fehler 102 an --> </xsl:when> <xsl:otherwise> <!-- Bringe alternative Fehlermeldung --> </xsl:otherwise> </xsl:choose>

Page 61: Grundlagen von XML, XSLT und Web 2.0 in FileMaker Server Advanced 8

Das verknüpfte Bild kann nicht angezeigt werden. Möglicherweise wurde die Datei verschoben,

61 1.12.2006 FileMaker Konferenz 2006 Mehr Möglichkeiten. Mehr Chancen. Mehr Geschäft

FMSA XML-Antworten debuggen

•  Einfügen der Zeile <textarea cols="80" rows="20"><xsl:copy-of select="."/></textarea>