Chapitre 6 Conception de feuilles de style FileMaker XSLT. Filemaker Server 10
Vous trouverez ci-dessous de brèves informations sur Server 10. Ce guide explique comment publier des bases de données FileMaker Server sur Internet ou un intranet en utilisant les langages XML et XSLT. Il couvre le développement de solutions de publication Web personnalisées, la configuration de bases de données pour la publication Web, l'accès aux données XML et la conception de feuilles de style FileMaker XSLT.
Chapitre 6
Conception de feuilles de style FileMaker XSLT
Le présent chapitre fournit des informations sur la structure des feuilles de style FileMaker XSLT et sur l'utilisation des fonctions d'extension FileMaker XSLT.
Utilisation des feuilles de style XSLT avec le moteur de publication Web
Lors de la conception et de l'utilisation de feuilles de style XSLT pour effectuer des requêtes de données
FileMaker XML par l'intermédiaire du moteur de publication Web, prenez en compte les points énoncés ci-après.
1
Pour utiliser une feuille de style XSLT avec le moteur de publication Web, vous devez indiquer le nom de la feuille de style dans une URL. Si vous ne spécifiez pas de nom ou que le moteur de publication Web ne parvient pas à localiser ni à analyser la feuille de style, le moteur de publication Web affiche une page
1
Le nom du fichier de feuille de style et le nom du dossier de stockage doivent présenter un codage URL au format UTF-8 Si votre feuille de style doit être compatible avec les anciens navigateurs Web, limitez les noms aux caractères ASCII.
1
Vous devez indiquer la grammaire FileMaker XML à utiliser sous la forme d'un paramètre de requête dans l'URL ou d'un paramètre de requête défini de façon statique dans l'instruction de traitement
<?xslt-cwp-query?> . Si vous ne spécifiez aucune grammaire XML, le moteur de publication Web
1
Les paramètres de requête identifiant les données FileMaker XML sur lesquelles vous souhaitez faire porter les requêtes peuvent être spécifiés soit dans l'URL, soit sous la forme d'un paramètre de requête défini de façon statique dans l'instruction de traitement <?xslt-cwp-query?>. Consultez les rubriques
1
Vous pouvez éventuellement spécifier le codage de texte d'une requête XSLT en utilisant le paramètre de requête –encoding. Si vous n'indiquez aucun codage, le moteur de publication Web utilise son paramètre
1
Si vous le souhaitez, vous pouvez définir une méthode de sortie via l'attribut de méthode de l'élément
<xsl:output>. Si vous n'indiquez aucune méthode de sortie, le moteur de publication Web utilise le format de sortie HTML. Vous pouvez également spécifier le codage de la page de sortie au moyen de l'attribut de codage de l'élément <xsl:output>. Si vous n'indiquez aucun codage, le moteur de publication Web utilise le paramètre de codage de texte par défaut pour les pages de sortie. Consultez la section
« Définition d'une méthode de sortie et du codage correspondant », page 60.
1
Vous pouvez éventuellement préciser le codage de texte des emails envoyés par le moteur de publication
Web par l'intermédiaire d'un paramètre de fonction pour la fonction d'extension fmxslt:send_email().
Consultez la section « Envoi d'emails à partir du moteur de publication Web », page 68.
54 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Pour concevoir une requête, le moteur de publication Web commence par utiliser les paramètres et les commandes de requête éventuellement définis de façon statique dans l'instruction de traitement facultative
<?xslt-cwp-query?> . La commande de requête et les paramètres de requête statiques constituent la requête de base. L'instruction de traitement <?xslt-cwp-query?> n'est pas requise dans une feuille de style, mais sa requête de base prévaut sur tout autre paramètre ou toute autre commande de requête correspondants spécifiés dans la chaîne de requête URL. Le moteur de publication Web ajoute ensuite à la requête de base dans la chaîne de requête URL une commande de requête ou des paramètres de requête supplémentaires non définis dans l'instruction de traitement <?xslt-cwp-query?>. Le moteur de publication Web utilise cette requête pour obtenir les données FileMaker XML et les renvoyer à votre programme ou à votre navigateur Web selon la méthode de sortie que vous avez choisie ou au format HTML.
A propos de la base de référence des fonctions d'extension FileMaker XSLT
Cette version intègre une base de données FileMaker appelée XSLT Reference.fp7 contenant de brèves descriptions et des exemples de chacune des fonctions d'extension FileMaker XSLT. Cette base de données de référence des fonctions se trouve dans le répertoire suivant de toutes les machines de votre déploiement
FileMaker Server (maîtres ou subordonnées).
Mac OS
/Library/FileMaker Server/Example/XSLT
Windows
<lecteur>:\Program Files\FileMaker\FileMaker Server\Examples\XSLT où <lecteur> correspond au lecteur principal servant au démarrage de votre système.
A propos des solutions de démarrage FileMaker XSLT
Cette version intègre une solution de démarrage FileMaker XSLT proposant un exemple de ce qu'il est possible de réaliser avec les solutions XSLT. Cette solution de démarrage XSLT se trouve dans le répertoire suivant de toutes les machines de votre déploiement FileMaker Server (maîtres ou subordonnées).
Mac OS
/Library/FileMaker Server/Example/XSLT/Starter Solution
Windows
<lecteur>:\Program Files\FileMaker\FileMaker Server\Examples\XSLT\Starter Solution où <lecteur> correspond au lecteur principal servant au démarrage de votre système.
A propos de la syntaxe d'URL des feuilles de style FileMaker XSLT
La syntaxe d'URL pour l'utilisation des feuilles de style FileMaker XSLT avec le moteur de publication
Web est la suivante :
<scheme>://<host>[:<port>]/fmi/xsl/[<path>/]<stylesheet.xsl>[?<query string>] où :
1
<protocole> peut correspondre au protocole HTTP ou HTTPS.
1
<host> correspond à l'adresse IP ou au nom de domaine de l'hôte sur lequel le serveur Web est installé.
1
<port> est facultatif et spécifie le port utilisé par le serveur Web. Si aucun port n'est précisé, le port par défaut du protocole est utilisé (port 80 pour HTTP ou port 443 pour HTTPS).
1
<path> est facultatif et spécifie le ou les dossiers présents dans le répertoire xslt-template-files dans lequel se situe la feuille de style XSLT.
Chapitre 6
|
Conception de feuilles de style FileMaker XSLT 55
1
<stylesheet.xsl> est le nom de fichier de la feuille de style XSLT.
1
<query string> peut correspondre à la combinaison d'une commande de requête et d'un ou de plusieurs paramètres de requête pour la Publication Web personnalisée avec XSLT. Consultez les rubriques
« Noms corrects utilisés dans les chaînes de requête ». Si la feuille de style spécifiée intègre une
instruction de traitement <?xslt-cwp-query?> , la commande et les paramètres de requête statiques définis prévalent sur tout autre paramètre ou toute autre commande de requête correspondants, spécifiés dans la
Remarque
La syntaxe d'URL, notamment les noms de commande et de paramètre de requête, applique la distinction majuscules-minuscules, à l'exception des parties de la chaîne de requête. La majorité des adresses URL sont en minuscules, à l'exception des noms de grammaire en majuscules FMPXMLRESULT et
FMPXMLLAYOUT. Pour plus d'informations sur les règles de distinction majuscules-minuscules applicables
Voici un exemple d'URL utilisant une feuille de style FileMaker XSLT avec le moteur de publication Web : http://192.168.123.101/fmi/xsl/my_template/my_stylesheet.xsl?–grammar=fmresultset&–db=mydatabase
&–lay=mylayout&–findall
A propos de la syntaxe d'URL relative aux objets multimédias dans les solutions XSLT
Dans un document XML généré pour une solution XSLT, la syntaxe permettant de faire référence à un objet multimédia n'est pas la même pour les rubriques Multimédia stockant l'objet proprement dit dans la base de données que pour les rubriques Multimédia stockant une référence à l'objet.
1
Si une rubrique Multimédia stocke l'objet lui-même dans la base de données, l'élément <data> de la rubrique utilise la syntaxe d'URL ci-après pour faire référence à l'objet :
<data>/fmi/xsl/cnt/data.<extension>?<query string></data> où <extension> est l'extension du nom de fichier qui identifie le type d'objet, par exemple .jpg ou .mov. Pour
Par exemple :
<data>/fmi/xsl/cnt/data.jpg?–db=products&–lay=sales&–field=product_image(1)&–recid=2</data>
Remarque
Dans le document XML généré pour une rubrique Multimédia, la valeur du paramètre de requête -field est un nom de rubrique qualifié complet. Le nombre entre parenthèses indique le nombre de répétitions pour la rubrique Multimédia. Il est généré à la fois pour les rubriques multivaluées et pour
Pour extraire les données Multimédia de la base de données, utilisez la syntaxe suivante :
<scheme>://<host>[:<port>]/fmi/xsl/cnt/data.<extension>?<query string>
Par exemple : http://www.company.com/fmi/xsl/cnt/data.jpg?–db=products&–lay=sales&–field=product_image(1)&–recid=2
56 Publication Web personnalisée de FileMaker Server avec XML et XSLT
1
Si une rubrique Multimédia stocke une référence de fichier au lieu d'un objet proprement dit, l'élément
<data> de la rubrique contient un chemin d'accès relatif faisant référence à l'objet. Par exemple, si le fichier logo.jpg se trouvait dans le sous-dossier Web du dossier FileMaker Pro, l'élément <data> de la rubrique Multimédia est le suivant :
<data>/images/logo.jpg</data>
Remarque
L'objet multimédia référencé doit être stocké dans le dossier FileMaker Pro Web lorsque l'enregistrement est créé ou modifié, puis doit être copié ou déplacé dans un dossier possédant le même
1
Si une rubrique Multimédia est vide, l'élément <data> de la rubrique est également vide.
Utilisation de chaînes de requête dans les feuilles de style FileMaker XSLT
Lors de l'utilisation d'une chaîne de requête dans une URL ou dans l'instruction de traitement <?xslt-cwp-query?> d'une feuille de style FileMaker XSLT, vous pouvez inclure un paramètre et une commande de requête définis quels qu'ils soient pour requérir des données XML d'une base de données FileMaker. Consultez la section
« Utilisation de chaînes de requête FileMaker pour rechercher des données XML », page 39.
Vous pouvez également utiliser les commandes et les paramètres de requête ci-après définis pour une utilisation exclusive avec des feuilles de style FileMaker XSLT.
Utilisez ce nom de commande ou de paramètre de requête XSLT
–grammar
–encoding
–process
–token
Pour
Spécifier la grammaire XML pour les requêtes XSLT-CWP ou
pour les feuilles de style XSLT. Consultez la section «
Spécification d'une grammaire XML pour une feuille de style
Commentaire
Ce paramètre de requête est requis dans toutes les requêtes
XSLT.
Indiquer le codage du texte pour une requête. Consultez la
section « Définition du codage du texte dans les requêtes », page 59.
Ce paramètre de requête est facultatif dans toutes les requêtes
XSLT.
Traiter une feuille de style sans effectuer de requêtes de
Cette commande de requête requiert le paramètre de requête
–grammar.
Transmettre des valeurs entre des pages sans utiliser de sessions
ni de cookies. Consultez la section « Utilisation du paramètre
–token pour transmettre des informations entre plusieurs feuilles de style », page 61.
Ce paramètre de requête est facultatif dans toutes les requêtes
XSLT.
Spécification d'une grammaire XML pour une feuille de style FileMaker XSLT
La grammaire XML recommandée pour la Publication Web personnalisée avec XSLT est la grammaire
FMPXMLLAYOUT. Pour accéder aux listes de valeurs et aux informations d'affichage des rubriques dans
des modèles, utilisez la grammaire FMPXMLLAYOUT. Consultez la section « Utilisation des grammaires
FileMaker XML », page 35. Vous ne pouvez pas utiliser la grammaire FMPDSORESULT pour la Publication
Web personnalisée avec XSLT.
Pour indiquer la grammaire applicable à une feuille de style FileMaker XSLT, utilisez le paramètre de requête –grammar dans une URL ou sous la forme d'un paramètre de requête défini de façon statique dans l'instruction de traitement <?xslt-cwp-query?> .
Chapitre 6
|
Conception de feuilles de style FileMaker XSLT 57
Par exemple, dans un URL : http://192.168.123.101/fmi/xsl/my_template/my_stylesheet.xsl?–grammar=fmresultset&–db=mydatabase
&–lay=mylayout&–findall
Par exemple, dans une instruction de traitement :
<?xslt-cwp-query params="–grammar=fmresultset&–db=mydatabase&–lay=mylayout&–findall"?>
Important
Si vous ne spécifiez pas de grammaire XML pour une feuille de style FileMaker XSLT, le
message d'erreur « QUERY -ER0001 » s'affiche. Consultez la section annexe B, « Codes d'erreur de la
Publication Web personnalisée ».
A propos des espaces de nom et des préfixes dans les feuilles de style
FileMaker XSLT
L'utilisation d'espaces de nom XSLT uniques permet d'identifier les balises XSLT par l'application pour laquelle elles ont été conçues. Dans l'élément <xsl:stylesheet> situé au début de toutes les feuilles de style
FileMaker XSLT, déclarez les espaces de nom pour les fonctions d'extension FileMaker XSLT et pour les grammaires spécifiques que vous utilisez dans la feuille de style.
Si vous utilisez
Grammaire XML fmresultset
Déclarez l'espace de nom
xmlns:fmrs="http://www.filemaker.com/xml/fmresultset"
Grammaire FMPXMLRESULT
Grammaire FMPXMLLAYOUT xmlns:fmp="http://www.filemaker.com/fmpxmlresult" xmlns:fml="http://www.filemaker.com/fmpxmllayout"
Pour la grammaire de requête XML xmlns:fmq="http://www.filemaker.com/xml/query"
Pour les fonctions d'extension
FileMaker XSLT xmlns:fmxslt="xalan://com.fmi.xslt.ExtensionFunctions"
Utilisez le préfixe
fmrs fmp fml fmq fmxslt
Vous devez également déclarer l'espace de nom ci-après car il est requis dans chaque feuille de style
FileMaker XSLT : xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
Voici quelques exemples de déclarations d'espaces de nom :
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fmrs="http://www.filemaker.com/xml/fmresultset" xmlns:fml="http://www.filemaker.com/fmpxmllayout" xmlns:fmq="http://www.filemaker.com/xml/query" xmlns:fmxslt="xalan://com.fmi.xslt.ExtensionFunctions" exclude-result-prefixes="xsl fmrs fmq fml fmxslt">
Utilisation de commandes et de paramètres de requête définis de façon statique
Vous pouvez empêcher l'utilisation non autorisée de commandes et de paramètres de requête avec votre feuille de style FileMaker XSLT en définissant de façon statique les commandes et les paramètres de requête que vous souhaitez utiliser pour les requêtes de données XML. Si des commandes et des paramètres de requête sont définis de façon statique dans une feuille de style, ils prévalent sur tout autre paramètre ou commande de requête correspondant qu'un client tente de spécifier dans la chaîne de requête URL.
58 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Les feuilles de style générées par XSLT Site Assistant utilisent les commandes et paramètres de requêtes définis de façon statique. L'utilisation des paramètres et des commandes de requête statiques avec FileMaker est recommandée car il s'agit du meilleur moyen d'améliorer la sécurité de votre solution.
Pour définir les commandes et les paramètres de requête de façon statique, utilisez l'instruction de traitement suivante au début de votre feuille de style FileMaker XSLT :
<?xslt-cwp-query params="query string-fragment"?> où : query string-fragment est une chaîne contenant les paires nom-valeur au format suivant : name=value&name2=value2.... où : name est une chaîne correspondant au nom d'une commande de requête, d'un paramètre de requête ou d'une rubrique de base de données. value est une valeur de chaîne de longueur arbitraire. Pour les paramètres de requête et les noms de rubrique, utilisez la valeur spécifique que vous souhaitez définir, telle que –db=products. Pour les commandes de requête, n'indiquez pas le signe = ni même une valeur après le nom de la commande,
codage dans la balise <xsl:output>. Si aucun codage n'est spécifié, le moteur de publication Web applique son codage par défaut.
Le séparateur entre deux paires nom-valeur doit correspondre au caractère Et commercial (&).
Par exemple, supposons que vous utilisiez l'instruction de traitement suivante dans la feuille de style my_stylesheet.xsl :
<?xslt-cwp-query params="–db=products&–lay=sales&–grammar=fmresultset&productname=the%20item&–find"?>
Cet exemple d'instruction de traitement oblige toutes les requêtes concernant la feuille de style my_stylesheet.xsl à utiliser la grammaire fmresultset avec la base de données products et le modèle sales, puis à exécuter une requête –find avec la rubrique productname configurée sur la valeur the%20item.
Si un client effectue la requête ci-après à l'aide de la feuille de style my_stylesheet.xsl : http://server.company.com/fmi/xsl/my_stylesheet.xsl?–lay=revenue&city=London&–edit le moteur de publication Web traite la requête XML suivante : http://server.company.com/fmi/xml/fmresultset.xml?–db=products&–lay=sales&productname=the%20item&city=
London&–find
La commande et les paramètres de requête définis de façon statique prévalent sur le paramètre de requête
–lay=revenue et sur la commande de requête –edit fournis par le client. La rubrique city n'étant pas définie de façon statique dans l'instruction de traitement, le moteur de publication Web insère dans la requête XML la valeur London pour cette rubrique.
Chapitre 6
|
Conception de feuilles de style FileMaker XSLT 59
Définition du codage du texte dans les requêtes
Le moteur de publication Web effectue les étapes ci-après dans l'ordre indiqué jusqu'à ce qu'il détermine le codage d'une requête XSLT :
1. Le moteur vérifie si l'attribut de jeu de caractères est défini dans l'en-tête de requête Content-Type.
2. Le moteur vérifie si vous avez spécifié un codage avec le paramètre de requête –encoding. Vous pouvez indiquer ce paramètre dans une URL ou sous la forme d'un paramètre de requête défini de façon statique dans l'instruction de traitement <?xslt-cwp-query?>. La valeur du paramètre –encoding désigne le codage appliqué au reste des paramètres de la requête. Les valeurs correctes pour ce paramètre sont répertoriées dans le tableau ci-après. Par exemple : http://192.168.123.101/fmi/xsl/template/my_stylesheet.xsl?–db=products–lay=sales&–grammar=fmresultset
&–encoding=Shift_JIS&–findall
3. Le moteur de publication Web utilise le paramétrage en cours de son option de codage de texte par défaut requêtes et pages de sortie. Lorsque le moteur de publication Web est installé pour la première fois, le codage de texte par défaut initial pour les requêtes correspond à UTF-8. Vous pouvez modifier ce paramétrage à l'aide de l'Admin Console. Consultez l'Aide de FileMaker Server.
Une fois que le moteur de publication Web a déterminé le codage, il applique ce dernier et aucune autre opération n'est effectuée pour définir le codage. Par exemple, si l'attribut de jeu de caractères est défini dans l'en-tête de requête Content-Type, le moteur de publication Web n'utilise pas la valeur du paramètre de requête –encoding.
Le codage de texte spécifié par l'intermédiaire de l'une des méthodes ci-dessus doit appliquer l'un des codages suivants :
Codage
US-ASCII
ISO-8859-1
ISO-8859-15
ISO-2022-JP
Shift_JIS
UTF-8
Description
Jeu de caractères ASCII de base habituellement utilisé pour les emails en anglais au format texte brut.
Jeu de caractères Latin 1 habituellement utilisé pour les pages Web et les emails contenant des caractères latins et nécessitant des caractères ASCII en majuscules.
Jeu de caractères Latin 9, quasiment identique au jeu de caractères Latin 1, complété par l'ajout du symbole
Euro €.
Codage japonais ISO habituellement utilisé pour les emails en japonais.
Codage japonais habituellement utilisé pour les pages Web en japonais.
Codage Unicode Format 8 bits. L'utilisation du codage UTF-8 pour les emails et les pages Web devient de plus en plus fréquente car les principaux navigateurs et clients de messagerie prennent désormais ce codage en charge. Le codage UTF-8 reconnaissant l'intégralité de la gamme des caractères Unicode, il prend en charge des pages dans n'importe quelle langue.
Remarques
1
Lorsque le moteur de publication Web est installé pour la première fois, le codage de texte par défaut
utilisé par le moteur de publication Web est ISO-8859-1. Vous pouvez modifier ce paramétrage à l'aide de l'Admin Console.
1
Vous pouvez également configurer le codage des emails au moyen de la fonction d'extension
60 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Définition d'une méthode de sortie et du codage correspondant
Vous pouvez définir une méthode de sortie ainsi que le codage des pages de sortie en utilisant les attributs de méthode et de codage de l'élément <xsl:output>. Ces deux attributs sont facultatifs.
L'attribut de méthode spécifie le type de sortie, à savoir html, text ou xml. Aucun autre type de méthode n'est pris en charge. Si vous n'indiquez pas de méthode, le moteur de publication Web utilise le format html.
L'attribut de codage désigne le codage des pages de sortie. Vous pouvez spécifier l'un des codages répertoriés dans le tableau de la section précédente. Si vous n'indiquez aucun codage, le moteur de publication Web utilise son paramètre de codage de texte par défaut pour les pages de sortie.
Par exemple :
<xsl:output method="html" encoding="ISO-8859-1"/>
Si vous n'utilisez pas l'élément <xsl:output> dans une feuille de style, le moteur de publication Web sort les pages HTML en utilisant le paramètre de codage de texte par défaut en vigueur pour les pages de sortie.
A propos du codage des feuilles de style XSLT
Outre le codage des requêtes et des pages de sortie, le codage de vos feuilles de style XSLT doit être spécifié dans l'attribut de codage de la déclaration XML au début de la feuille de style. Vous pouvez utiliser l'un des
codages de texte répertoriés dans le tableau de la , page 59.
Par exemple, la déclaration ci-après spécifie le codage de feuille de style UTF-8 :
<?xml version="1.0" encoding="UTF-8"?>
Si vous ne précisez pas le codage des feuilles de style, le moteur de publication Web applique le codage UTF-8.
Traitement des requêtes XSLT n'adressant pas de requêtes à FileMaker
Server
Vous pouvez utiliser la commande de requête –process pour traiter les requêtes XSLT ne portant pas sur les données de la base de données ou dans le cas où votre feuille de style ne requiert pas d'informations propres
à la base, telles que des enregistrements, des noms de rubrique ou des noms de modèle. L'utilisation de la commande –process dans ces types de situations contribue à réduire la charge de travail de FileMaker Server.
Par exemple, vous pouvez utiliser la commande –process pour :
1
charger une feuille de style générant une page statique, si aucune information de base de données n'est requise ;
1
charger une feuille de style créant un enregistrement, si la feuille de style ne requiert aucune information de base de données ou de modèle, telle qu'une liste de valeurs ;
1
utiliser une fonction d'extension telle que fmxslt:send_email() ne requérant aucune donnée de la base de données ;
1
accéder aux informations stockées dans une session si aucune information de base de données n'est requise.
La commande –process renvoie un document XML contenant des informations produit relatives au moteur de publication Web.
Le seul paramètre requis pour la commande –process est le paramètre –grammar, et vous devez utiliser les grammaires fmresultset ou FMPXMLRESULT.
Par exemple : http://192.168.123.101/fmi/xsl/my_template/my_stylesheet.xsl?–grammar=fmresultset&–process
Chapitre 6
|
Conception de feuilles de style FileMaker XSLT 61
Utilisation du paramètre –token pour transmettre des informations entre plusieurs feuilles de style
Vous pouvez utiliser le paramètre de requête –token dans une URL ou sous la forme d'une commande de requête définie de façon statique pour transmettre toute information définie par l'utilisateur entre différentes feuilles de style sans utiliser de sessions ni de cookies. Le paramètre de requête –token est facultatif avec toutes les commandes de requête.
La valeur de ce paramètre définie par l'utilisateur peut correspondre à n'importe quelle chaîne de caractères présentant un codage URL. Par exemple : http://192.168.123.101/fmi/xsl/template/my_stylesheet.xsl?–db=products&–lay=sales&–grammar=fmresultset
&–token.D100=Pending&–findall
Important
N'utilisez pas le paramètre de requête –token pour transmettre des données confidentielles.
Pour récupérer la valeur du paramètre de requête –token, utilisez l'instruction <xsl:param name="request-
query" />. Consultez la section « Accès aux demandes d'informations dans une requête », page 62.
Utilisation des fonctions d'extension et des paramètres FileMaker XSLT
Les fonctions d'extension FileMaker XSLT sont définies dans l'espace de nom fmxslt. Veillez à inclure une déclaration de l'espace de nom fmxslt dans l'élément <xsl:stylesheet> au début d'une feuille de style XSLT.
Les fonctions d'extension FileMaker XSLT ont été conçues pour pouvoir être utilisées dans une feuille de style XSLT sous la forme d'un appel de fonction dans une instruction XPath. Les instructions XPath sont utilisées comme valeurs de l'attribut de sélection et de l'attribut de test dans de nombreux éléments XSLT.
Par exemple, supposons que vous souhaitiez vérifier l'en-tête User-Agent pour déterminer le navigateur utilisé. Pour ce faire, vous pouvez utiliser une variable contenant la valeur de l'en-tête User-Agent :
<xsl:variable name="user-agent" select="fmxslt:get_header('User-Agent')"/>
Dans le cas des fonctions d'extension renvoyant une valeur, la valeur est retournée dans le type XSLT spécifié. La plupart des fonctions renvoient des chaînes, mais d'autres renvoient un ensemble de nœuds pouvant être traversés.
Remarque
Cette section décrit les fonctions d'extension et les paramètres FileMaker XSLT et comporte quelques exemples. Pour obtenir d'autres exemples de chaque fonction, consultez la base de référence
A propos des paramètres XSLT propres à FileMaker définis par le moteur de publication Web
Lors du traitement d'une requête, le moteur de publication Web définit dynamiquement les valeurs des paramètres XSLT propres à FileMaker ci-après. Vous pouvez utiliser les valeurs de ces paramètres dans votre feuille de style au moyen de l'élément <xsl:param>.
Paramètre XSLT propre à FileMaker
<xsl:param name="request-query"/>
Pour plus d'informations, consultez la section
« Accès aux demandes d'informations dans une requête » disponible dans la
section suivante.
« Obtention d'informations client », page 63.
<xsl:param name="client-ip"/>
<xsl:param name="client-user-name"/>
<xsl:param name="client-password"/>
<xsl:param name="xml-base-uri"/>
« Utilisation du paramètre URI de base du moteur de publication Web », page 63.
<xsl:param name="authenticated-xml-base-uri">
« Utilisation du paramètre URI de base authentifié », page 63.
62 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Accès aux demandes d'informations dans une requête
Vous pouvez utiliser un paramètre FileMaker XSLT pour accéder aux informations de requête dans une requête sous la forme de données URL ou HTML. Par exemple, vous avez la possibilité d'accéder aux informations de requête en cours pour déterminer l'emplacement actuel dans un jeu d'enregistrements trouvés, puis de créer des liens vers l'enregistrement précédent et suivant.
Le paramètre FileMaker XSLT ci-après permet d'accéder à la totalité des commandes de requête et des paramètres de requête utilisés pour les requêtes de données FileMaker XML par l'intermédiaire du moteur de publication Web :
<xsl:param name="request-query"/>
A l'exception des noms de rubrique, le moteur de publication Web renvoie tous les noms de commande et de paramètre de requête en minuscules. La mise en majuscules des noms de rubrique est conservée.
Un fragment de document XML est chargé dans le paramètre -query de la requête dans la grammaire suivante :
<!DOCTYPE query [
<!ELEMENT query (parameter)*>
<!ATTLIST query action CDATA #REQUIRED>
<!ELEMENT parameter (#PCDATA)>
<!ATTLIST parameter name CDATA #REQUIRED>
]
Remarque
Les informations de requête sont définies dans l'espace de nom fmq="http://www.filemaker.com/ xml/query". Veillez à inclure une déclaration de l'espace de nom fmq dans l'élément <xsl:stylesheet> au
Par exemple, supposons que vous souhaitiez accéder aux commandes et aux paramètres de requête dans la requête suivante : http://192.168.123.101/fmi/xsl/my_stylesheet.xsl?–db=products&–lay=sales&–grammar=fmresultset&–token.1=abc123
&–findall
Si vous insérez l'instruction <xsl:param name="request-query" /> avant la section de modèle, le moteur de publication Web stocke le fragment de document XML suivant dans ce paramètre :
<query action="my_stylesheet.xsl" xmlns="http://www.filemaker.com/xml/query">
<parameter name="–db">products</parameter>
<parameter name="–lay">sales</parameter>
<parameter name="–grammar">fmresultset</parameter>
<parameter name="–token.1">abc123</parameter>
<parameter name="–findall"></parameter>
</query>
Vous pouvez ensuite utiliser le paramètre de requête -query pour accéder à la valeur d'un paramètre -token transmise dans une URL au moyen d'une expression XPath. Par exemple :
$request-query/fmq:query/fmq:parameter[@name = '–token.1']
Chapitre 6
|
Conception de feuilles de style FileMaker XSLT 63
Obtention d'informations client
Les paramètres FileMaker XSLT ci-après vous permettent d'obtenir des informations sur les clients Web
(adresse IP, nom d'utilisateur et mot de passe) à partir du moteur de publication Web :
<xsl:param name="client-ip"/>
<xsl:param name="client-user-name"/>
<xsl:param name="client-password">
Insérez ces instructions de paramètre dans votre feuille de style XSLT avant le début de l'élément
<xsl:template>.
Ces paramètres fournissent les informations d'authentification de l'utilisateur Web au moment où une feuille de style est programmée pour charger des documents XML supplémentaires protégés par mot de passe.
Consultez la section « Chargement de documents supplémentaires », page 64. L'utilisateur Web doit
indiquer le nom d'utilisateur et le mot de passe initialement définis au moyen de la boîte de dialogue
Pour plus d'informations et d'exemples d'utilisation de ces trois paramètres FileMaker XSLT, consultez la base de référence des fonctions d'extension FileMaker XSLT.
Utilisation du paramètre URI de base du moteur de publication Web
Le moteur de publication Web définit le paramètre URI (Uniform Resource Identifier) de base comme étant l'hôte et le port sur lesquels le moteur de publication Web est installé. L'identificateur URI de base permet de résoudre les requêtes de données XML à partir de bases de données FileMaker en fonction de l'hôte du moteur de publication Web.
Pour accéder au paramètre URI de base du moteur de publication Web, insérez l'instruction ci-après dans votre feuille de style XSLT, avant le début de l'élément <xsl:template> :
<xsl:param name="xml-base-uri"/>
Vous pouvez ensuite utiliser le paramètre URI de base pour la feuille de style active par l'intermédiaire de la variable $xml-base-uri pour chaque nouvelle requête de données FileMaker XML. Par exemple, utilisez le paramètre URI de base dans la requête de données XML supplémentaires ci-après :
<xsl:variable name="layout_information" select="document(concat($xml-base-uri,'/fmi/xml/FMPXMLLAYOUT.xml?
–db=products&–lay=sales&–view'))" />
Utilisation du paramètre URI de base authentifié
Le paramètre authenticated-xml-base-uri associe les fonctionnalités des paramètres client-user-name et client-password au paramètre xml-base-uri :
<xsl:param name="authenticated-xml-base-uri"/>
Utilisez ce paramètre pour charger un autre document XML protégé par mot de passe et requérant les mêmes nom d'utilisateur et mot de passe que ceux spécifiés dans la requête d'origine en cours de traitement.
Pour obtenir un exemple, consultez la section « Chargement de documents supplémentaires. »
Insérez cette instruction de paramètre dans votre feuille de style XSLT avant le début de l'élément <xsl:template>.
Si les valeurs des paramètres client-user-name et client-password ne sont pas vides, le paramètre authenticated-xml-base-uri prend la valeur suivante : http://username:password@hostname:port
Si les valeurs des paramètres client-user-name et client-password sont vides, le paramètre authenticatedxml-base-uri prend la même valeur que le paramètre xml-base-uri.
64 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Chargement de documents supplémentaires
Pour charger un document XML supplémentaire pendant le traitement d'une feuille de style XSLT, utilisez la fonction XSLT standard document() avec un identificateur URI pour le document XML. La fonction document() renvoie les données XML requises sous la forme d'un ensemble de nœuds pouvant être stockés dans un élément <xsl:variable>.
Pour charger un document XML contenant des données issues d'une base de données FileMaker, utilisez la fonction document() avec les commandes et les paramètres de requête FileMaker. Par exemple :
<xsl:variable name="other-data" select="document(concat($xml-base-uri,'/fmi/xml/FMPXMLLAYOUT.xml?
–db=products&–lay=sales&–view'))" />
Pour charger un autre document XML protégé par mot de passe et requérant les mêmes nom d'utilisateur et mot de passe que ceux spécifiés dans la requête d'origine en cours de traitement, utilisez le paramètre authenticatedxml-base-uri. Ce paramètre spécifie les nom d'utilisateur et mot de passe dans l'identificateur URI transmis à la fonction document().
Par exemple :
<xsl:variable name="other-data" select="document(concat($authenticated-xml-base-uri,
'/fmi/xml/FMPXMLLAYOUT.xml?–db=products&–lay=sales&–view'))"/>
Pour charger un document XML protégé par mot de passe et requérant un nom d'utilisateur et un mot de passe différents de ceux spécifiés dans la requête parente, utilisez la syntaxe ci-après pour spécifier le nom d'utilisateur et le mot de passe dans l'identificateur URI transmis à la fonction document() : http://username:password@hostname/path?querystring
Pour charger un document XML non basé sur une base de données FileMaker, utilisez la fonction document() sans les commandes ni les paramètres de requête FileMaker. Par exemple :
<xsl:variable name="other-data" select="document('http://server.company.com/data.xml')" />
Si vous utilisez la fonction document() avec un URL relatif, le moteur de publication Web tente de charger le document XML à partir du système de fichiers local à l'emplacement relatif de la feuille de style. Par exemple, supposons qu'une feuille de style située dans le sous-dossier mystylesheetsdu dossier xslt-template-files contienne la fonction document() ci-après avec une URL relative :
<xsl:variable name="mydoc" select="document('mystylesheets/mydoc.xml')" />
Le moteur de publication Web tentera de charger le document mydoc.xml depuis le sous-dossier mystylesheetsdu dossier xslt-template-files dans le système de fichiers local.
Remarque
Lorsque vous utilisez le paramètre URI de base du moteur de publication Web, ce dernier prend uniquement en charge HTTP. Lorsque vous chargez un document à partir d'un serveur externe, le moteur de publication Web prend en charge HTTP et HTTPS.
Chapitre 6
|
Conception de feuilles de style FileMaker XSLT 65
Utilisation des informations de modèle d'une base de données dans une feuille de style
Vous pouvez intégrer les informations de modèle d'une base de données FileMaker dans une feuille de style en demandant ces informations au moyen de la grammaire FMPXMLLAYOUT, puis en les chargeant dans une variable par l'intermédiaire de la fonction XSLT document() :
<xsl:variable name="layout" select="document(concat($xml-base-uri,'/fmi/xml/FMPXMLLAYOUT.xml?–view'))" />
Par exemple, supposons que vous souhaitiez créer un menu déroulant pour une rubrique appelée Color contenant des valeurs issues d'une liste de valeurs à deux rubriques intitulée shirts, définie dans un modèle de base de données FileMaker. Supposons que la première rubrique de la liste de valeurs à deux rubriques stocke le numéro d'ID de la couleur (par exemple « 100 ») et que la seconde rubrique stocke le nom associé de la couleur (par exemple « Light Green »). Voici comment vous pouvez utiliser la fonction document() pour charger les informations du modèle dans une variable XSLT, en même temps que l'attribut DISPLAY pour afficher la valeur de la seconde rubrique dans une liste de valeurs à deux rubriques :
<xsl:variable name="layout" select="document(concat($xml-base-uri,'/fmi/xml/FMPXMLLAYOUT.xml?–db=products
&–lay=sales&–view'))" />
<select size="1">
<xsl:attribute name="name">Color</xsl:attribute>
<option value="">Select One...</option>
<xsl:for-each select="$layout/fml:FMPXMLLAYOUT/fml:VALUELISTS/fml:VALUELIST[@NAME = 'shirts']/ fml:VALUE">
<option>
<xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
<xsl:value-of select="@DISPLAY"/>
</option>
</xsl:for-each>
</select>
Utilisation de la fonction de mise du contenu en mémoire tampon
Lorsque la fonction de mise du contenu en mémoire tampon est désactivée, le moteur de publication Web retourne les résultats d'une conversion XSLT directement au client. La fonction de mise du contenu en mémoire tampon est toujours désactivée, à moins que vous ne l'activiez explicitement. Si vous activez cette fonction, le moteur de publication Web stocke le contenu converti jusqu'à la fin de la totalité de la conversion.
La fonction de mise du contenu en mémoire tampon est requise pour les feuilles de style XSLT manipulant des en-têtes. Les en-têtes étant écrits avant le corps de la réponse, ce dernier doit être stocké en mémoire tampon pour que les informations d'en-tête ajoutées puissent être incluses.
Il existe quatre fonctions d'extension FileMaker nécessitant la mise en mémoire tampon des résultats de conversion XSLT :
1
1
fmxslt:set_header() : Consultez la section « Utilisation des fonctions d'en-tête », page 70.
1
fmxslt:set_status_code () : Consultez la section « Utilisation des fonctions d'en-tête », page 70.
1
Pour que ces fonctions d'extension FileMaker fonctionnent correctement, vous devez insérer l'instruction de traitement XSLT ci-après dans le document de premier niveau pour la requête :
<?xslt-cwp-buffer buffer-content="true"?>
66 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Important
Si vous utilisez une feuille de style de base contenant une autre feuille de style, la feuille de base doit inclure l'instruction de traitement <?xslt-cwp-buffer?>. Cette instruction est ignorée si elle est utilisée dans une feuille de style incluse dans une autre feuille.
L'utilisation de cette instruction de traitement pour mettre la réponse en mémoire tampon offre l'avantage de permettre au moteur de publication Web de déterminer la longueur de la réponse et de définir l'en-tête
Content-Length dans cette dernière. La mise en mémoire tampon de la réponse peut réduire les performances du moteur de publication Web.
Utilisation de sessions du moteur de publication Web pour stocker des informations d'une requête à l'autre
Vous pouvez utiliser les sessions côté serveur du moteur de publication Web pour suivre et stocker tout type d'informations entre deux requêtes. Les sessions vous permettent de créer une application Web pouvant conserver des états en utilisant des éléments d'information persistants arbitraires entre les requêtes. Par exemple, des informations client utilisateur entrées sur la première page d'un formulaire peuvent être stockées dans une session, puis réutilisées pour remplir les valeurs d'une autre page du formulaire.
Par défaut, le moteur de publication Web utilise un cookie pour stocker l'ID de la session. Pour prendre en charge les clients n'autorisant pas les cookies, vous pouvez utiliser la fonction fmxslt:session_encode_url() pour ajouter l'ID de session à l'URL. Pour garantir une parfaite compatibilité dans tous les types de situations, il est recommandé de coder toutes les URL inscrites sur la page avec la fonction fmxslt:session_encode_url().
Cette fonction insère dans votre URL un paramètre précédé d'un point-virgule intitulé jsessionid, correspondant à l'identificateur de la session associée d'un client donné.
Par exemple, au lieu d'insérer sur une page le lien ci-après :
<a href="my_stylesheet.xsl?–db=products&–lay=sales&–grammar=fmresultset&–findall">hyperlinked text</a> vous devez coder tous les liens d'une page de la façon suivante :
<a href="{fmxslt:session_encode_url('my_stylesheet.xsl?–db=products&–lay=sales&–grammar=fmresultset
&–findall')}">hyperlinked text</a>
Si le client n'autorise pas les cookies, la page inclut :
<a href="my_stylesheet.xsl;jsessionid=<session id>?–db=products&–lay=sales&–grammar=fmresultset&–findall"> hyperlinked text</a>
Si le moteur de publication Web détecte que le client autorise les cookies, la fonction fmxslt:session_encode_url() stocke l'ID de session dans un cookie et non dans l'URL.
Remarque
Les informations de session ne sont pas conservées après le redémarrage du moteur de publication Web.
Chapitre 6
|
Conception de feuilles de style FileMaker XSLT 67
Utilisation des fonctions d'extension de session
Utilisez les fonctions d'extension de session ci-après pour manipuler les variables de session. Un objet de session peut stocker une chaîne, un nombre, une valeur booléenne ou un ensemble de nœuds. L'utilisation d'un ensemble de nœuds vous permet de créer une structure de données en XML, puis de la stocker entre les requêtes dans l'objet de session.
Fonction d'extension de session
fmxslt:session_exists(String session-name) fmxslt:create_session(String session-name) fmxslt:invalidate_session(String session-name) booléen fmxslt:set_session_timeout(String session-name, Number timeout) booléen fmxslt:session_encode_url(String url)
Résultat
booléen booléen chaîne fmxslt:set_session_object(String session-name,
String name, Object value) objet XSLT
(nombre, chaîne, valeur booléenne ou ensemble de nœuds)
Description
Recherche l'existence d'une session portant le nom spécifié.
Crée une session portant le nom indiqué et présentant le délai d'expiration par défaut défini au moyen de l'Admin Console.
Consultez l'Aide de FileMaker Server.
Remarque
Cette fonction requiert l'instruction de traitement
Déclenche l'arrivée à expiration immédiate de la session.
Définit le délai d'expiration de la session en secondes.
Le délai d'expiration par défaut des sessions est défini au moyen de l'Admin Console.
Code une URL avec l'ID de la session si le client ne prend pas en charge les cookies ; dans le cas contraire, cette fonction renvoie une URL d'entrée.
Stocke un objet XSLT (nombre, chaîne, valeur booléenne ou ensemble de nœuds) sous une session, réutilisable par la suite au moyen de la fonction fmxslt:get_session_object ().
Cette fonction renvoie également l'objet précédemment stocké sous le nom d'objet de session spécifié. Si aucun objet n'a été stocké sous ce nom, la fonction renvoie un objet Null.
Remarque
La fonction d'extension set_session_object() ne permet de stocker que des valeurs de type chaîne ; elle interprète tous les objets reçus comme des chaînes. Si la conversion de l'objet en chaîne est impossible, aucune valeur n'est alors stockée dans la session et le code d'erreur de la fonction d'extension est défini sur 10100 (erreur de session inconnue). Si vous tentez de définir un objet de session en utilisant une chaîne nulle ou vide, vous obtiendrez également le code d'erreur 10100 (erreur de session inconnue). Pour effacer une variable de session, supprimez-la de la session en utilisant la fonction remove_session_object() .
Récupère un objet XSLT à partir de la session.
fmxslt:get_session_object(String session-name,
String name) objet XSLT fmxslt:remove_session_object(String session-name, String name) objet XSLT Renvoie puis supprime un objet XSLT provenant de la session.
Voici un exemple de création d'une session et de stockage d'une couleur favorite dans la session :
<xsl:variable name="session">
<xsl:choose>
<xsl:when test="not (fmxslt:session_exists(string($session-name)))">
<xsl:value-of select="fmxslt:create_session(string($session-name))"/>
</xsl:when>
<xsl:otherwise>true</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="favorite-color" select="fmxslt:set_session_object(string($session-name), 'favorite-color', string($color))"/>
68 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Important
1
Pour vous assurer que les utilisateurs sont déconnectés d'une base de données après avoir terminé une session, utilisez la fonction fmxslt:invalidate_session () pour déclencher l'arrivée à expiration immédiate de la session.
1
Si vous utilisez des rubriques de type Global ou un script définissant ou modifiant un état, vous devez utiliser l'Admin Console pour activer l'option Sessions de base de données XSLT pour le moteur de publication Web. Dans le cas contraire, les valeurs des rubriques Global et les états ne seront pas conservés entre les requêtes. Consultez l'Aide de FileMaker Server.
1
Si vous accédez à un autre fichier de base de données à l'aide des sessions du moteur de publication Web, les valeurs des rubriques de type Global ne sont pas préservées. Le moteur de publication Web ferme le premier fichier avant d'ouvrir le second. Une autre possibilité consiste pour vous à accéder aux données depuis le second fichier de base de données en utilisant un modèle dans le premier fichier de base de données.
Envoi d'emails à partir du moteur de publication Web
Vous pouvez utiliser le moteur de publication Web pour générer des emails, ce qui se révèle d'une grande utilité pour les solutions Web personnalisées. Pour envoyer un email à partir du moteur de publication Web, utilisez l'une des trois fonctions d'extension fmxslt:send_email () ci-après dans une feuille de style XSLT.
Ces fonctions vous permettent d'envoyer un ou plusieurs messages distincts. Les fonctions fmxslt:send_email ()
étant contenues dans la feuille de style XSLT du moteur de publication Web au niveau du serveur, un client ne peut pas envoyer de emails non autorisés à l'aide du moteur de publication Web.
Fonction d'extension de messagerie
électronique Résultat
fmxslt:send_email(String smtpFields,
String corps) booléen fmxslt:send_email(String smtpFields,
String body, String encoding) fmxslt:send_email(String smtpFields,
String xsltFile, Node xml, boolean includeImages) booléen booléen
Description
Envoie un email en texte brut d'une longueur quelconque à partir du moteur de publication Web en utilisant le codage de texte par défaut de ce dernier pour les emails
Envoie un email en texte brut d'une longueur quelconque en utilisant l'un des codages de texte suivants : US-ASCII, ISO-
8859-1, ISO-8859-15, ISO-2022-JP, Shift_JIS, UTF-8. Pour plus d'informations sur ces codages, consultez la section
« Définition du codage du texte dans les requêtes », page 59.
Envoie un email HTML en utilisant le codage spécifié par l'attribut de codage de l'élément <xsl:output> dans la feuille de style. Si l'attribut de codage n'est pas inclus dans l'élément
<xsl:output>, le moteur de publication Web utilise son codage de texte par défaut pour les emails.
Remarques
1
Dans chacune des trois formes de la fonction fmxslt:send_email (), le paramètre smtpFields est une chaîne présentant un codage URL d'une longueur quelconque contenant les informations d'adresse et d'objet au format ci-après, reposant sur RFC 2368, le protocole URL mailto : username@host?name1=value1&name2=value2...
où username@host désigne un destinataire. Les paires nom/valeur peuvent être spécifiées dans n'importe quel ordre et sont définies de la façon suivante :
1
from=username@host (ne doit apparaître qu'une seule fois). La rubrique from doit être spécifiée.
1
to=username@host. Utilisez cette paire nom/valeur pour indiquer des destinataires supplémentaires.
1
reply-to=username@host (ne peut apparaître qu'une seule fois)
Chapitre 6
|
Conception de feuilles de style FileMaker XSLT 69
1
cc=username@host
1
bcc=username@host
1
subject=string (ne peut apparaître qu'une seule fois)
Si les rubriques from, reply-to ou subject sont spécifiées plusieurs fois, l'email n'est pas envoyé, la valeurfalse() est renvoyée par la fonction et le code d'état d'erreur approprié est défini.
1
Le moteur de publication Web vérifie la syntaxe de toutes les adresses électroniques indiquées. Ces dernières doivent être spécifiées sous la forme suivante : [email protected] ou quoted identifier entre guillements<[email protected]> où tld désigne un quelconque domaine de premier niveau tel que com ou net. Si l'une des rubriques contient une adresse électronique incorrecte, l'email n'est pas envoyé et le code d'état d'erreur approprié est défini.
1
Les différentes valeurs du paramètre smtpFields, telles que l'objet, doivent correspondre à une chaîne présentant un codage URL. Par exemple, le caractère & doit être spécifié sous la forme & et les espaces vides doivent être indiqués sous la forme %20. La totalité de la chaîne correspondant au paramètre smtpFields doit présenter un codage XML. (Consultez l'exemple situé à la fin de cette section.)
1
Pour chacune de ces fonctions, la valeur true() est renvoyée si l'email est correctement envoyé ; dans le cas contraire, la valeur false() est renvoyée.
1
Pour les emails en français, le moteur de publication Web utilise le codage de texte par défaut initial
ISO-8859-1. Vous pouvez modifier ce paramétrage au moyen de l'Admin Console. Consultez l'Aide de FileMaker Server.
1
La fonction fmxslt:send_email(String smtpFields, String xsltFile, Node xml, boolean includeImages) envoie un email constitué de données XML qui est traité par la feuille de style d'email que vous spécifiez dans cette fonction.
1
Pour le paramètre xsltFile, indiquez le nom de la feuille de style d'email en entrant une URL relative pour le fichier principal de feuille de style de traitement correspondant à la requête.
1
Pour le paramètre xml, indiquez le nœud parent des données XML que vous souhaitez utiliser avec la feuille de style d'email. Pour envoyer un email en utilisant les données XML affichées dans le navigateur, fournissez simplement l'expression XPath pour la racine du document : "/". Si vous souhaitez utiliser un autre document XML, commencez par charger ce dernier avec la fonction document(), puis transmettez le document dans la fonction fmxslt:send_email().
1
Pour le paramètre includeImages, indiquez la valeur booléenne true() pour que le moteur de publication Web contienne toutes les images spécifiées en tant que pièces jointes dans le marquage
HTML de l'email. Ce paramètre inclut aussi bien les images de base de données FileMaker que les images non associées à des bases de données provenant d'autres emplacements. Le moteur de publication Web change les URL des images pour faire référence aux pièces jointes. L'utilisation de fichiers image volumineux ou nombreux peut ralentir les performances. Si vous indiquez la valeur false () pour ce paramètre, le moteur de publication Web ne change pas les URL des images. Si les
URL sont absolues, le client de messagerie tentera de charger les images à partir du serveur Web.
Voici un exemple d'utilisation de la fonction fmxslt:send_email(String smtpFieldsd, String xsltFile, Node xml, boolean includeImages) dans une instruction XPath, par exemple dans l'élément <xsl:if> : fmxslt:send_email('[email protected]?subject=project%20status&[email protected]
&[email protected]','my_mail_template.xsl', /, true())
Pour plus d'informations sur le paramétrage du moteur de publication Web pour la connexion à un serveur
SMTP, consultez l'aide de FileMaker Server.
70 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Utilisation des fonctions d'en-tête
Vous pouvez utiliser la fonction fmxslt:get_header() pour lire les informations des en-têtes de réponse et de requête HTTP, ainsi que la fonction fmxslt:set_header() pour écrire des informations dans les en-têtes. Ces fonctions sont utiles si le client peut utiliser les informations d'en-tête pour récupérer des informations du serveur Web ou que vous avez besoin de définir un en-tête HTTP pour d'autres raisons.
Fonction d'extension d'en-tête
fmxslt:get_header(String name) fmxslt:set_header(String name, String value) fmxslt:set_status_code(Number status-code)
Résultat
chaîne vide vide
Description
Renvoie la valeur d'en-tête spécifiée
Définit la valeur d'en-tête spécifiée
Définit le code d'état HTTP
Remarques
1
Le nom utilisé dans les fonctions fmxslt:get_header() et fmxslt:set_header() , ainsi que la valeur indiquée dans la fonction fmxslt:set_header(), correspondent à une chaîne d'une longueur quelconque.
1
Les fonctions fmxslt:set_header() et fmxslt:set_status_code() requièrent l'instruction de traitement
L'exemple qui suit illustre comment définir la valeur de l'en-tête. Supposons que vous utilisiez une feuille de style pour sortir une vCard. Lorsqu'un navigateur tente de charger la page de feuille de style, il existe un risque que ce navigateur interprète le fichier .xsl comme une feuille de style et non comme une vCard. Si vous utilisez l'en-tête intitulé Content-Disposition, vous pouvez indiquer qu'il existe une pièce jointe portant l'extension .vcf.
<xsl:value-of select="fmxslt:set_header('Content-Disposition','attachment;filename=test.vcf')" />
Utilisation des fonctions d'extension de cookie
Les fonctions d'extension de cookie vous permettent de récupérer ou de définir des cookies stockés dans le navigateur Web du client.
Fonction d'extension de cookie
fmxslt:get_cookie(String name) fmxslt:get_cookies() fmxslt:set_cookie(String name, String value) fmxslt:set_cookie(String name, String value,
Number expires, String path, String domain)
Résultat Description
ensemble de nœuds
Renvoie l'ensemble de nœuds COOKIE contenant le nom de cookie spécifié.
ensemble de nœuds
Renvoie l'ensemble de nœuds COOKIE avec tous les cookies fournis par le client.
vide
Stocke le cookie spécifié dans le navigateur du client avec la valeur indiquée. vide
Stocke le cookie spécifié dans le navigateur du client avec toutes les valeurs disponibles pour un cookie. Le paramètre Expires indique le nombre de secondes avant l'arrivée à expiration du cookie.
Remarques
1
Les fonctions fmxslt:get_cookie() et fmxslt:get_cookies() renvoient un ensemble de nœuds présentés dans la structure suivante :
<!ELEMENT cookies (cookie)*>
<!ATTLIST cookie xmlns CDATA #FIXED "http://www.filemaker.com/xml/cookie">
<!ELEMENT cookie (#PCDATA)>
<!ATTLIST cookie name CDATA #REQUIRED>
Chapitre 6
|
Conception de feuilles de style FileMaker XSLT 71
1
L'espace de nom XML pour l'ensemble de nœuds de cookies est "http://www.filemaker.com/xml/cookie".
Vous devez déclarer l'espace de nom et indiquez un préfixe pour l'espace de nom.
1
Toutes les valeurs de paramètre indiquées dans les fonctions fmxslt:set_cookie doivent être valides ; dans le cas contraire, le navigateur Web ignorera les requêtes fmxslt:set_cookie.
1
Dans toutes les fonctions de cookie, la longueur des paramètres de chaîne est illimitée.
1
Les deux formes de la fonction fmxslt:set_cookie() requièrent l'instruction de traitement <?xslt-cwp-
Exemple : get_cookie
L'exemple suivant récupère un cookie appelé preferences ainsi que sa valeur :
<xsl:variable name="pref_cookie" select="fmxslt:get_cookie('preferences')"/>
<xsl:value-of select="concat('Cookie Name = ', $pref_cookie/fmc:cookies/fmc:cookie/@name)"/> <br/>
<xsl:value-of select="concat('Cookie Value = ', $pref_cookie/fmc:cookies/fmc:cookie)"/>
Exemple : set_cookie
Voici un exemple de définition d'un cookie avec toutes les valeurs :
<xsl:variable name="storing_cookie" select="fmxslt:set_cookie ('text1', 'text2', 1800, 'my_text', 'my.company.com')" />
Utilisation des fonctions d'extension de manipulation de chaînes
Les fonctions d'extension de manipulation de chaînes vous permettent de modifier le codage de chaînes de n'importe quelle longueur.
Fonction d'extension de manipulation de chaînes
fmxslt:break_encode(String value)
Résultat
chaîne fmxslt:html_encode(String value) fmxslt:url_encode(String value) chaîne chaîne
Description
Renvoie une chaîne présentant un codage de césures HTML.
Les caractères tels que & (Et commercial) sont remplacés par
&. Les caractères de début de nouvelle ligne tels que les sauts de ligne et les retours chariot sont remplacés par <br/>.
Cette fonction ne fonctionne que si l'attribut disable-outputescaping des éléments <xsl:value-of> et <xsl:text> est défini sur yes (disable-output-escaping="yes").
Remarque
Pour inclure un saut de ligne ou un retour chariot dans la chaîne à laquelle s'applique la fonction fmxslt:break_encode(), vous devez utiliser les caractères d'échappement ci-après dans la chaîne : “ (pour un saut de ligne) ou (pour un retour chariot). Vous ne pouvez pas inclure de saut de ligne ni de retour chariot dans la chaîne en appuyant sur la touche Retour de votre éditeur de texte.
Renvoie une chaîne présentant un codage HTML ; les caractères tels que & (Et commercial) sont remplacés par
&.
Renvoie une chaîne présentant un codage URL. Le codage de l'URL est utilisé pour transmettre les caractères sur Internet, particulièrement les URL. Par exemple, le & (Et commercial) codé en URL correspond à %26. Si un caractère réservé est utilisé dans votre href, utilisez cette fonction pour coder votre chaîne en URL.
72 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Fonction d'extension de manipulation de chaînes Résultat
fmxslt:url_encode(String value, String encoding) chaîne fmxslt:url_decode(String value) chaîne fmxslt:url_decode(String value, String encoding) chaîne
Description
Renvoie une chaîne à codage URL utilisant le codage de caractères que vous spécifiez pour le paramètre codage, à savoir : US-ASCII, ISO-8859-1, ISO-8859-15, ISO-2022-JP,
Shift_JIS ou UTF-8.
Utilisez cette fonction lorsque vous savez qu'un serveur Web attendra un autre codage de caractères que celui utilisé dans votre feuille de style active. Par exemple, supposons que la page d'accueil de votre site Web soit affichée en UTF-8, mais que les utilisateurs puissent cliquer sur un lien pour accéder à une page en japonais. Si la requête inclut des caractères japonais et que les pages en japonais utilisent le codage
Shift_JIS, il est préférable de coder la chaîne en Shift_JIS.
Renvoie une chaîne ayant fait l'objet d'un décodage URL à partir d'une chaîne URL précédemment codée.
Renvoie une chaîne ayant fait l'objet d'un décodage URL et utilisant le codage de caractères que vous spécifiez pour le paramètre codage, à savoir : US-ASCII, ISO-8859-1, ISO-
8859-15, ISO-2022-JP, Shift_JIS ou UTF-8.
Utilisez cette fonction lorsque vous devez spécifier le codage de caractères utilisé dans une chaîne codée en URL afin de décoder correctement cette chaîne. Par exemple, même si votre site Web utilise le codage ISO-8859-1, il est possible que des utilisateurs soumettent un formulaire utilisant un autre codage de caractères.
Comparaison de chaînes au moyen d'expressions régulières Perl 5
La fonction d'extension fmxslt:regex_contains() vous permet de comparer des chaînes au moyen d'expressions régulières Perl 5. Une comparaison par expressions régulières est une fonction de correspondance de texte avancée vous permettant de déterminer si une chaîne correspond à un schéma spécifié. La syntaxe de cette fonction est la suivante : fmxslt:regex_contains(String input, String pattern) où input est une chaîne et pattern une expression régulière Perl 5. Pour plus d'informations sur la syntaxe des expressions régulières Perl 5, consultez le site www.perldoc.com. La fonction fmxslt:regex_contains() renvoie une valeur booléenne.
Utilisez cette fonction si vous avez besoin d'une fonction de manipulation de chaînes plus élaborée que celle fournie par le langage XSLT standard. Par exemple, vous pouvez déterminer si une valeur de rubrique contient un numéro de téléphone ou une adresse électronique valide en comparant la chaîne à une expression régulière Perl 5.
Voici un exemple d'utilisation de cette fonction pour déterminer si une valeur de rubrique contient des adresses électroniques correctement structurées :
<xsl:variable name="email" select="'[email protected]'"/>
<xsl:if test="fmxslt:regex_contains($email,'^\w+[\w-\.]*\@\w+((-\w+)|(\w*))\.[a-z]{2,3}$')">Valid Email</xsl:if>
Si le moteur de publication Web ne parvient pas à analyser le schéma, l'état d'erreur est configuré sur le code
d'erreur 10311. Consultez la section « Numéros des codes d'erreur des fonctions d'extension XSLT de
Chapitre 6
|
Conception de feuilles de style FileMaker XSLT 73
Recherche de valeurs dans une rubrique formatée sous forme de case à cocher
La fonction d'extension ci-après vous permet de déterminer si une valeur spécifique appartenant à une liste de valeurs de case à cocher est stockée dans une rubrique de la base de données FileMaker : fmxslt:contains_checkbox_value(String valueString, String valueListEntry) où valuestring est une expression XPath spécifiant la rubrique et valueListEntry indique la valeur recherchée.
Si la valeur spécifiée est stockée dans la rubrique, cette fonction booléenne renvoie la valeur true(). Dans le cas contraire, elle retourne la valeur false(). Vous pouvez utiliser cette fonction pour déterminer si l'attribut checked d'un formulaire HTML doit ou non afficher une case à cocher comme étant activée.
Par exemple, supposons que l'une des rubriques d'un modèle de base de données FileMaker comporte les options de case à cocher suivantes :
[ ] Rouge
[ ] Bleu
[ ] Vert
[ ] Petit
[ ] Moyen
[ ] Grand
Si un utilisateur ne sélectionne que la valeur Rouge, la rubrique doit contenir la chaîne RougeRouge. Pour déterminer si la rubrique contient la chaîne Bleu, vous pourriez utiliser l'appel de fonction suivant : fmxslt:contains_checkbox_value(<field value node>,'Bleu') où <field value node> est l'expression XPath pour l'élément <data> correspondant à la rubrique de type case
à cocher. Dans cet exemple, la fonction renverrait la valeur « false ».
Une application courante de cette fonction consiste à afficher la liste des valeurs de case à cocher dans une page Web et à activer les cases à cocher de la page Web qui sont sélectionnées dans la base de données. Par exemple, les instructions HTML et XSLT ci-après créent un ensemble de cases à cocher pour une rubrique intitulée style en utilisant une liste de valeurs appelée color_size :
<xsl:variable name="field-value" select="fmrs:field[@name='style']/fmrs:data" />
<xsl:for-each select="$valuelists[@NAME = 'color_size']/fml:VALUE">
<input type="checkbox">
<xsl:attribute name="name">style</xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
<xsl:if test="fmxslt:contains_checkbox_value($field-value,.)">
<xsl:attribute name="checked">checked</xsl:attribute>
</xsl:if>
</input><xsl:value-of select="."/><br/>
</xsl:for-each>
Les instructions HTML et XSLT de cet exemple afficheraient les cases à cocher ci-après sur une page Web, avec les valeurs Rouge et Moyen sélectionnées :
[x] Rouge
[ ] Bleu
[ ] Vert
[ ] Petit
[x] Moyen
[ ] Grand
74 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Utilisation des fonctions d'extension de date, d'heure et de jour
Vous disposez de fonctions d'extension vous permettant de récupérer la date, l'heure ou le jour en cours et de comparer deux dates, deux heures ou deux jours.
Les fonctions dans la table suivante utilisent les formats fm sans tenir compte des paramètres régionaux.
Les formats fm sont MM/jj/aaaa pour la date, HH:mm:ss pour l'heure et MM/jj/aaaa HH:mm:ss pour l'horodatage.
Pour réarranger les valeurs des résultats dans un format différent ou préférentiel, utilisez les fonctions de calcul ou JavaScript.
Fonction d'extension de date, d'heure ou de jour Résultat
fmxslt:get_date() chaîne fmxslt:get_date(String format) chaîne fmxslt:get_time() fmxslt:get_time(String format) fmxslt:get_day() fmxslt:get_day(String format) fmxslt:get_fm_date_format() fmxslt:get_short_date_format() fmxslt:get_long_date_format() fmxslt:get_fm_time_format() fmxslt:get_fm_timestamp_format() fmxslt:get_short_time_format() fmxslt:get_long_time_format() fmxslt:get_short_day_format() fmxslt:get_long_day_format() chaîne chaîne chaîne chaîne chaîne chaîne chaîne chaîne chaîne chaîne chaîne chaîne chaîne fmxslt:compare_date(String date1, String date2) Nombre
Description
Renvoie la date du jour au format fm.
Renvoie la date du jour au format spécifié. Entrez la chaîne
« short », « long » ou « fm » pour le paramètre format.
Renvoie l'heure du jour au format fm.
Renvoie l'heure en cours au format spécifié. Entrez la chaîne « short », « long » ou « fm » pour le paramètre format.
Renvoie le jour en cours au format court.
Renvoie le jour en cours au format spécifié. Entrez la chaîne
« short » ou « long » pour le paramètre format.
Renvoie la chaîne de formatage pour le format de date
« fm » : « MM/jj/aaaa »
Renvoie la chaîne de formatage pour le format de date court
« MM/jj/aa »
Renvoie la chaîne de formatage pour le format de date long
« MMMM j aaaa »
Renvoie la chaîne de formatage pour le format d'heure
« fm » : « HH:mm:ss »
Renvoie la chaîne de formatage pour le format d'horodatage « fm » :
« MM/jj/aaaa HH:mm:ss »
Renvoie la chaîne de formatage pour le format d'heure court : « h:mm a »
Renvoie la chaîne de formatage pour le format d'heure long
« h:mm:ss a z »
Renvoie la chaîne de formatage pour le format de jour court
« EEE »
Renvoie la chaîne de formatage pour le format de jour long
« EEEE »
Cette fonction compare deux valeurs de date. Elle renvoie une valeur négative si date1 est antérieure à date2. Elle renvoie une valeur positive si date1 est postérieure à date2.
Elle renvoie la valeur 0 si date1 est identique à date2. Les deux dates doivent être spécifiées au format de date « fm ».
Chapitre 6
|
Conception de feuilles de style FileMaker XSLT 75
Fonction d'extension de date, d'heure ou de jour Résultat
fmxslt:compare_time(String time1, String time2) Nombre fmxslt:compare_day(String day1, String day2) Nombre
Description
Cette fonction compare deux valeurs d'heure. Elle renvoie une valeur négative si time1 est antérieure à time2. Elle renvoie une valeur positive si time1 est postérieure à time2. Elle renvoie la valeur 0 si time1 est identique à time2. Les deux heures doivent
être spécifiées au format d'heure « fm ».
Cette fonction compare deux valeurs de jour. Elle renvoie une valeur négative si day1 est antérieur à day2. Elle renvoie une valeur positive si day1 est postérieure à day2.
Elle renvoie la valeur 0 si day1 est identique à day2. Les deux jours doivent être spécifiés au format de jour court.
Les fonctions du tableau ci-après utilisent des chaînes de formatage de date personnalisées spécifiant un
Fonction d'extension de date, d'heure ou de jour Résultat
fmxslt:get_datetime(String dateFormat) chaîne fmxslt:convert_datetime(String oldFormat, String newFormat, String date) chaîne fmxslt:compare_datetime(String dateFormat1,
String dateFormat2, String date1, String date2) nombre
Description
Renvoie la date et l'heure en cours en utilisant les chaînes de format de date et d'heure.
Convertit la date spécifiée dans l'ancien format (oldFormat) indiqué en chaîne utilisant le nouveau format (newFormat) défini. Les chaînes oldFormat et newFormat doivent être spécifiées en utilisant les chaînes de format de date et d'heure.
Cette fonction compare date1 à date2 en décodant ces dates selon leurs formats de date respectifs. Elle renvoie une valeur négative si date1 est antérieure à date2. Elle renvoie une valeur positive si date1 est postérieure à date2. Elle renvoie la valeur 0 si date1 est identique à date2. Les chaînes dateFormat1 et dateFormat2 doivent être spécifiées en utilisant les chaînes de format de date et d'heure.
Détails concernant les chaînes de format de date et d'heure
Les formats de date et d'heure sont spécifiés par des chaînes de schéma de date et d'heure. Dans les chaînes de schéma de date et d'heure, les lettres non indiquées entre guillemets de A à Z et de a à z sont interprétées comme des lettres de schéma représentant les composants d'une chaîne de date ou d'heure.
Les lettres de schéma définies sont les suivantes (tous les autres caractères de A à Z et de a à z sont réservés) :
F
C a
A k w
W
D d
Lettre
G y
M
Composant de date ou d'heure PowerPoint
Indicateur de l'ère Texte
Année
Mois de l'année
Année
Mois
Semaine de l'année
Semaine du mois
Jour de l'année
Jour du mois
Nombre
Nombre
Nombre
Nombre
Jour de la semaine dans le mois
Jour de la semaine
Indicateur am/pm
Heure du jour (0-23)
Heure du jour (1-24)
Nombre
Texte
Texte
Nombre
Nombre
27
2
189
10
Exemples
ap. J.-C.
1996 ; 96
Juillet ; Juil. ; 07
2 mercredi ; mer
PM
0
24
76 Publication Web personnalisée de FileMaker Server avec XML et XSLT s
S z
Z
Lettre
K h m
Composant de date ou d'heure PowerPoint
Heure au format am/pm (0-11) Nombre
Heure au format am/pm (1-12)
Minutes
Nombre
Nombre
Secondes
Millisecondes
Fuseau horaire
Fuseau horaire
Nombre
Nombre
Fuseau horaire général
Fuseau horaire RFC 822
Exemples
0
12
30
55
978
Heure avancée du Pacifique ; PDT
-0800
Les lettres de schéma sont généralement répétées car leur nombre détermine la présentation exacte :
1
Texte
: Pour le formatage, si le nombre de lettres de schéma est au moins égal à quatre, la forme complète est utilisée ; dans le cas contraire, la forme courte ou abrégée est appliquée si elle existe. Pour l'analyse, les deux formes sont acceptées, indépendamment du nombre de lettres de schéma.
1
Nombre
: Pour le formatage, le nombre de lettres de schéma est le nombre de chiffres minimal, et les nombres plus courts sont remplis avec des zéros pour atteindre ce nombre. Pour l'analyse, le nombre de lettres de schéma est ignoré, à moins qu'il ne soit requis pour séparer deux rubriques adjacentes.
1
Année
: Pour le formatage, si le nombre de lettres de schéma est égal à deux, l'année est tronquée après deux chiffres ; dans le cas contraire, elle est interprétée comme une valeur.
Pour l'analyse, si le nombre de lettres de schéma est supérieur à 2, l'année est interprétée de façon littérale, quel que soit le nombre de chiffres. Ainsi, si vous utilisez le schéma « MM/jj/aaaa », l'analyse de la chaîne « 01/11/12 » produit le résultat 11 janvier, 12 ap. J.-C.
Pour l'analyse avec le schéma d'année abrégé (« y » ou « yy »), l'année abrégée doit être interprétée par rapport au siècle en ajustant les dates comme étant comprises dans les 80 années qui précèdent et les 20 années qui succèdent à la date de création de l'instance de format de date. Par exemple, si vous utilisez un schéma MM/jj/aa et une instance de format de date créée le 1er janvier 1997, l'analyse de la chaîne
« 01/11/12 » produit le résultat 11 janvier 2012, tandis que la chaîne « 05/04/64 » serait interprétée comme correspondant au 4 mai 1964. Pendant l'analyse, seules les chaînes composées d'exactement deux chiffres sont analysées dans le siècle par défaut. Toute autre chaîne numérique, telle qu'une chaîne d'un seul chiffre, de trois chiffres ou davantage, ou de deux chiffres n'incluant pas que des chiffres (par exemple, « -1 »), est interprétée de façon littérale. Ainsi, l'analyse des chaînes « 01/02/3 » ou « 01/02/003 » utilisant le même schéma produit le résultat 2 janvier 3 ap. J.-C. De la même façon, la chaîne « 01/02/-3 » est analysée comme correspondant au 2 janvier 4 av. J.-C.
1
Mois
: Si le nombre de lettres de schéma est supérieur ou égal à trois, le mois est interprété comme du texte ; dans le cas contraire, il est interprété comme un nombre.
1
Fuseau horaire général
: Les fuseaux horaires sont interprétés comme du texte s'ils comportent des noms. Pour les fuseaux horaires représentant une valeur de correction TMG, la syntaxe utilisée est la suivante :
1
GMTOffsetTimeZone.
TMG Signe Heures:Minutes
1
Signe. + ou -
1
Heures.
Chiffre
ou
Chiffre Chiffre
1
Minutes.
Chiffre Chiffre
1
Chiffre. L'une des valeurs suivantes : 0 1 2 3 4 5 6 7 8 9
Chapitre 6
|
Conception de feuilles de style FileMaker XSLT 77
Le paramètre
Heures
doit être compris entre 0 et 23, et le paramètre
Minutes
entre 00 et 59. Le format est indépendant de la langue utilisée et les chiffres doivent être extraits du bloc Latin de base du standard
Unicode.
Pour l'analyse, les fuseaux horaires RFC 822 sont également acceptés.
1
Fuseau horaire RFC 822
: Pour le formatage, le format de fuseau horaire RFC 822 à 4 chiffres est utilisé :
1
RFC822TimeZone.
Signe HeuresDeuxChiffres Minutes
1
TwoDigitHours.
Chiffre Chiffre
Le paramètre
TwoDigitHours
doit être compris entre 00 et 23. Les autres définitions sont considérées comme des fuseaux horaires généraux.
Pour l'analyse, les fuseaux horaires généraux sont également acceptés.
Les exemples ci-après présentent la façon dont les schémas de date et d'heure sont interprétés aux Etats-
Unis. Les date et heure utilisées sont : 04-07-2001 12:08:56 heure locale des Etats-Unis, fuseau horaire Heure du Pacifique.
Schéma de date et d'heure
"yyyy.MM.dd G 'at' HH:mm:ss z"
"EEE, MMM d', 'yy"
"h:mm a"
"hh 'o' 'clock' a, zzzz"
"K:mm a, z"
"yyyyy.MMMMM.dd GGG hh:mm aaa"
"EEE, d MMM yyyy HH:mm:ss Z"
"yyMMddHHmmssZ "
Résultat
2001.07.04 ap. J.-C. at 12:08:56 PDT mer., juil. 4, '01
12:08 PM
12 o'clock PM, Heure avancée du Pacifique
0:08 PM, PDT
02001.juillet.04 ap. J.-C. 12:08 PM mer., 4 juil. 2001 12:08:56 -0700
010704120856-0700
Copyright 2003 Sun Microsystems, Inc. Reproduit avec autorisation.
Vérification de l'état d'erreur des fonctions d'extension
Vous pouvez utiliser la fonction d'extension ci-après dans une feuille de style XSLT pour rechercher l'état d'erreur de la dernière fonction d'extension FileMaker XSLT utilisée et pour gérer les erreurs survenant pendant le traitement de vos pages : fmxslt:check_error_status()
Lorsque vous utilisez la fonction fmxslt:check_error_status(), le moteur de publication Web renvoie la valeur de code d'erreur active de la dernière fonction invoquée sous la forme d'un nombre, puis redéfinit l'état d'erreur sur 0 (« Pas d'erreur »). Pour plus d'informations sur les valeurs de code d'erreur, consultez la section
« Numéros des codes d'erreur des fonctions d'extension XSLT de FileMaker », page 113.
Utilisation de la fonction de journalisation
L'élément XSLT standard <xsl:message> vous permet de consigner les entrées de journal dans le fichier
78 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Utilisation du traitement des langages de script côté serveur
Le transformateur XSLT intégré au moteur de publication Web prend en charge le traitement des langages de script côté serveur. En conséquence, vous pouvez utiliser JavaScript pour développer des fonctions ayant vos propres extensions et qui pourront être directement appelées depuis une feuille de style XSLT.
Deux bibliothèques Java sont installées pour activer cette fonctionnalité :
1
bsf.jar : cette bibliothèque permet au transformateur XSLT de se connecter aux langages de script.
1
js.jsr : cette bibliothèque est une mise en œuvre JavaScript complète provenant du projet Mozilla.
Grâce à ces bibliothèques, vous pouvez créer des fonctions ayant vos propres extensions au sein du code de votre feuille de style XSLT. Ces fonctions d'extension peuvent mettre en œuvre n'importe quelle logique de script et sont à préférer à XSLT et à Xpath pour réaliser des fonctions logiques.
Vous trouverez des informations plus détaillées sur la prise en charge des extensions du transformateur
XSLT sur le site Web des extensions Apache Xalan à l'adresse suivante : http://xml.apache.org/xalan-j/extensions.html
Définition d'une fonction d'extension
Pour définir une fonction d'extension au sein de votre feuille de style :
1. Définissez l'espace de nom de l'extension.
Ajoutez l'espace de nom xalan pour informer le transformateur XSLT de prendre en charge les composants d'extension, en fournissant le nom de votre propre espace de nom de fonction d'extension.
L'exemple suivant utilise fmp-ex comme préfixe de l'espace nom de la fonction d'extension.
<xsl:stylesheet version="1.0" xmlns:xsl=http://www.w3.org/1999/XSL/Transform xmlns:xalan=http://xml.apache.org/xslt xmlns:fmp-ex="ext1" exclude-result-prefixes="xsl xalan fmp-ex">
2. Définissez le composant d'extension et les fonctions d'extension avec le code qui met réellement en œuvre votre fonction d'extension.
<xalan:component prefix="fmp-ex" functions="getValueColor">
<xalan:script lang="javascript"> function getValueColor(value) { if (value > 0) return ("#009900"); else return ("#CC0000");
}
</xalan:script>
</xalan:component>
Cet exemple renvoie une valeur couleur en fonction d'une valeur d'entrée. Si la valeur d'entrée est supérieure à 0, la couleur renvoyée est Vert ("#009900") ; dans le cas contraire, si la valeur est inférieure
à 0, la couleur renvoyée est red ("#CC0000").
Remarque
L'élément <xalan:component> doit être un enfant de l'élément <xsl:stylesheet>.
Chapitre 6
|
Conception de feuilles de style FileMaker XSLT 79
3. Utilisez la fonction d'extension au sein de la feuille de style.
Les exemples suivants montrent comment appeler une fonction d'extension utilisant une instruction Xpath.
Ce premier exemple devrait définir la couleur de la police sur Vert ("#009900").
<font color=”{fmp-ex:getValueColor(50)}”>The value is 50</font>
Ce second exemple devrait définir la couleur de la police sur red ("#CC0000").
<font color=”{fmp-ex:getValueColor(-500)}”>The value is -500</font>
Exemple de fonction d'extension
La fonction JavaScript simple utilisée dans le processus ci-dessus aurait pu être mise en œuvre en utilisant une instruction <xsl:choose>. Cependant, la vraie force de l'utilisation d'une extension de script est que vous pouvez créer une fonction qui ne peut pas être mise en œuvre dans XSLT ou Xpath seul.
Par exemple, supposons que vous souhaitez créer un site portail intranet pour votre entreprise et que vous voulez y inclure des informations sur les cours boursiers actuels. Il existe des listes de cours en
XML mais ne sont généralement accessibles qu'au moyen d'une licence commerciale. Toutefois, vous pouvez télécharger les données boursières depuis le site Web de Yahoo!, dans un document au format
CSV (Comma Separated Values). La fonction document() XPath peut importer le contenu provenant de sources XML mais vous devez pour cela convertir le contenu CSV en XML. Une solution consiste à utiliser
JavaScript pour télécharger les informations sur les cours boursiers au format CSV, à analyser le fichier, puis à extraire les données.
Cette URL montre la syntaxe de récupération d'un cours boursier depuis le site Web de Yahoo!, sous forme de fichier CSV : http://quote.yahoo.com/d/quotes.csv?s=<ticker>&f=l1gh&e=.csv où <ticker> représente le code de l'action dont vous tentez de récupérer les données.
Les données renvoyées se présentent sous la forme de trois nombres séparés par des virgules, par exemple :
31.79,31.17,32.12 où la première valeur correspond au dernier cours d'échange, la seconde valeur, au cours le plus bas, et enfin la troisième valeur, le cours le plus haut.
L'exemple ci-dessous montre une fonction d'extension XSLT JavaScript qui récupère un cours boursier depuis le site Web de Yahoo! et le rend accessible via une fonction Xpath :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet exclude-result-prefixes="xsl fmxslt fmrs xalan fmp-ex" version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fmrs="http://www.filemaker.com/xml/fmresultset" xmlns:fmxslt="xalan://com.fmi.xslt.ExtensionFunctions" xmlns:xalan="http://xml.apache.org/xslt" xmlns:fmp-ex="ext1"
>
<?xslt-cwp-query params="-grammar=fmresultset&-process" ?>
<xsl:output method="html"/>
<xalan:component prefix="fmp-ex" functions="include get_quote" >
<xalan:script lang="javascript">
80 Publication Web personnalisée de FileMaker Server avec XML et XSLT function include(url) { var dest = new java.net.URL(url); var dis = new java.io.DataInputStream(dest.openStream()); var res = ""; while ((line = dis.readLine()) != null)
{ res += line + java.lang.System.getProperty("line.separator");
} dis.close(); return res;
} function get_quote(ticker) { url = "http://quote.yahoo.com/d/quotes.csv?s=”+
"+ticker+"&f=l1gh&e=.csv"; csv_file = include(url); var str_tokenizer = new java.util.StringTokenizer(csv_file, ',');
// the first token is the last trade price var last = str_tokenizer.nextToken(); return last;
}
</xalan:script>
</xalan:component>
<xsl:template match="/fmrs:fmresultset">
<html>
<body>
<font size="2" face="verdana, arial">
Apple Stock Price: <xsl:value-of select="fmp-ex:get_quote('AAPL')"/>
</font>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Lorsque le moteur de publication Web traite cette feuille de style, il effectue une requête auprès du site Web de Yahoo! pour obtenir les informations relatives au cours boursier. La fonction get_quote() analyse les données du cours et renvoie les données à la feuille de style. Le résultat transformé s'affiche dans le navigateur.

Lien public mis à jour
Le lien public vers votre chat a été mis à jour.
Caractéristiques clés
- Publication de bases de données FileMaker sur le Web.
- Publication Web personnalisée utilisant XML et XSLT.
- Intégration de bases de données à d'autres sites Web.
- Contrôle de l'affichage des données dans les navigateurs Web.
- Traitement sécurisé des feuilles de style XSLT côté serveur.
- Accès aux données, aux modèles et aux rubriques basé sur les privilèges d'accès.