Chapitre 4 Accès aux données XML avec le moteur de publication Web. Filemaker FileMaker Server 9
Chapitre 4
Accès aux données XML avec le moteur de publication Web
Vous pouvez utiliser et mettre à jour des données FileMaker au format XML (Extensible Markup Language)
à l'aide du moteur de publication Web. De même que HTML est devenu le langage d'affichage standard pour communiquer sur le Web, XML est devenu le langage standard pour l'échange de données structurées.
Un grand nombre d'utilisateurs, d'organisations et d'entreprises utilisent le langage XML pour transférer des informations sur les produits, des transactions, des informations sur le stock, ainsi que d'autres données commerciales.
Utilisation de la publication Web personnalisée avec XML
Si vous connaissez déjà le langage XML standard, vous pouvez commencer immédiatement à utiliser le moteur de publication Web. Vous devez néanmoins apprendre la syntaxe d'URL et connaître les paramètres de requête
à employer pour la publication Web personnalisée avec XML.
Grâce aux requêtes URL HTTP avec les commandes et les paramètres de requête de FileMaker, vous pouvez interroger une base de données hébergée par FileMaker Server et télécharger les données obtenues au format
XML. Par exemple, vous pouvez interroger une base de données pour obtenir tous les enregistrements relatifs
à un code postal donné, puis employer les données XML obtenues comme bon vous semble.
Vous pouvez également utiliser les feuilles de style XSLT du moteur de publication Web côté serveur pour filtrer les données XML, les reformater au format HTML ou texte, par exemple vCards, ou les transformer
à l'aide d'autres grammaires XML, par exemple le format SVG (polices vectorielles modulaires).
et chapitre 6, « Conception de feuilles de style FileMaker XSLT ».
Pour obtenir davantage d'informations d'ordre général sur XML, d'autres exemples d'utilisation du langage XML, ainsi que des liens vers des ressources XML, consultez le site Web de FileMaker à l'adresse www.filemaker.fr.
Remarque
Le moteur de publication Web génère des données XML correctement formatées et conformes
à la spécification XML 1.0. Pour plus de détails sur les conditions requises pour le formatage des données
XML, reportez-vous aux spécifications XML disponibles à l'adresse www.w3.org.
30 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Différences entre le moteur de publication Web et les options d'importation/exportation
FileMaker Pro XML
Le moteur de publication Web et FileMaker Pro permettent tous les deux d'utiliser des données XML avec des bases de données FileMaker. Cependant, il existe des différences importantes entre ces deux méthodes :
1
Pour accéder aux données XML et à la fonction de publication Web XSLT, le moteur de publication Web prend en charge les grammaires fmresultset, FMPXMLRESULT et FMPXMLLAYOUT. Pour l'importation XML,
FileMaker Pro utilise la grammaire FMPXMLRESULT, alors que pour l'exportation, FileMaker Pro utilise
1
Pour accéder aux données XML à l'aide du moteur de publication Web, utilisez une chaîne de requête du moteur de publication Web dans une URL. Pour importer et exporter des données XML avec FileMaker Pro, utilisez les commandes ou les scripts du menu FileMaker Pro.
1
Le moteur de publication Web est basé sur le serveur et peut être installé sur le même hôte que FileMaker
Server ou sur un hôte différent. L'importation et l'exportation XML de FileMaker Pro se font à partir d'un ordinateur de bureau.
1
Vous pouvez accéder de façon dynamique aux données XML à partir des bases de données FileMaker en utilisant des requêtes URL avec le moteur de publication Web. La fonction d'exportation XML de
FileMaker Pro génère un fichier de données XML spécifié à l'avance.
1
Les opérations sur les données XML via un moteur de publication Web sont interactives. L'importation et l'exportation XML de FileMaker Pro se font selon un processus par lot.
1
Contrairement à FileMaker Pro, le moteur de publication Web peut accéder aux données XML à partir d'une table externe FileMaker.
1
Contrairement à FileMaker Pro, le moteur de publication Web peut accéder aux données d'une rubrique de type Multimédia.
1
Contrairement à FileMaker Pro, le moteur de publication Web fournit un accès en temps réel aux données
FileMaker via HTTP ou HTTPS.
Remarque
Pour en savoir plus sur l'utilisation de FileMaker Pro pour effectuer des importations et des exportations au format XML, consultez l'Aide FileMaker Pro.
Chapitre 4
|
Accès aux données XML avec le moteur de publication Web 31
Génération de données XML par le moteur de publication Web à partir d'une requête
Une fois qu'une demande de données XML a été envoyée au serveur Web, le moteur de publication Web interroge la base de données FileMaker et renvoie les données sous forme de document XML.
Navigateur
Web
1. Une requête
HTTP ou HTTPS demandant des données XML est envoyée d'un navigateur
Web ou d'un programme à un serveur Web.
Serveur Web
2. Le serveur Web adresse la requête au noyau de publication Web.
Module de serveur Web
Moteur de publication
Web FileMaker Server
3. Le noyau de publication Web soumet la requête à la base de données hébergée par le
Serveur de base de données FileMaker.
Noyau de publication Web
Moteur de publication
Web personnalisée
Base de données
FileMaker
Serveur
Produits.fp7
Clients.fp7
La demande de données XML est acheminée du navigateur Web ou du programme vers le serveur de base de données FileMaker.
Commandes.fp7
Catalogue.fp7
Les données XML sont renvoyées par le serveur de base de données
FileMaker au navigateur Web ou au programme
Navigateur
Web
6. Le serveur
Web envoie la sortie au programme ou au navigateur
Web.
5. Le noyau de publication Web convertit les données en XML et les envoie au serveur Web.
Moteur de publication
Web FileMaker Server
Noyau de publication Web
Serveur Web
Module de serveur Web
Moteur de publication Web personnalisée (CWPE)
4. Le serveur de base de données FileMaker envoie les données demandées au noyau de publication Web.
32 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Processus général d'accès aux données XML à partir du moteur de publication Web
Voici un aperçu du processus consistant à employer le moteur de publication Web pour accéder aux données
XML dans une base de données FileMaker.
1. Vérifiez si la publication XML est activée dans FileMaker Server Admin Console. Consultez l'Aide de
FileMaker Server.
2. Dans FileMaker Pro, ouvrez les bases de données FileMaker à publier et assurez-vous que pour chacune d'elles, le privilège fmxml est activé pour la fonction de publication Web personnalisée utilisant XML.
Pour accéder aux données XML dans une table externe, définissez l'affichage de modèle de base de données sur Afficher sous forme de formulaire ou sur Afficher sous forme de liste. Si un utilisateur ou un script modifie l'affichage du modèle de base de données et le définit sur Afficher sous forme de tableau, seul le premier enregistrement (la première rangée de la table externe) est accessible sous forme de données XML.
Les données XML sortent dans un ordre qui correspond à l'ordre dans lequel les objets de la rubrique ont
été ajoutés au modèle. Si vous souhaitez que l'ordre des données XML corresponde à l'ordre dans lequel les rubriques apparaissent à l'écran (du haut vers le bas et de la gauche vers la droite), sélectionnez toutes les rubriques, regroupez-les, puis dégroupez-les. Cette procédure réinitialise l'ordre du modèle pour le faire correspondre à l'ordre de l'écran.
3. Envoyez une requête HTTP ou HTTPS sous la forme d'une URL qui spécifie la grammaire XML FileMaker, une commande de requête, puis un ou plusieurs paramètres de requête FileMaker au moteur de publication Web, par l'intermédiaire d'un formulaire HTML, d'un lien HREF ou d'un script dans votre programme ou votre page Web. Vous pouvez également entrer l'URL dans un navigateur Web.
4. Le moteur de publication Web utilise la grammaire spécifiée dans l'URL et génère les données XML contenant les résultats de votre requête, par exemple un ensemble d'enregistrements de la base de données, puis les renvoie à votre programme ou à votre navigateur Web.
5. S'il est équipé d'un analyseur XML, le navigateur Web affiche les données, ou le programme utilise les données de la façon que vous avez indiquée.
Si vous spécifiez une feuille de style côté client, l'analyseur du navigateur Web applique également les
Chapitre 4
|
Accès aux données XML avec le moteur de publication Web 33
A propos de la syntaxe d'URL pour les données XML et les objets de type Multimédia
Cette section décrit la syntaxe d'URL à utiliser au niveau du moteur de publication Web pour accéder aux données XML et aux objets de type Multimédia à partir de bases de données FileMaker. Les feuilles de style
XSLT n'emploient pas la même syntaxe que les feuilles de style XML. Reportez-vous aux rubriques
A propos de la syntaxe d'URL pour les données XML
La syntaxe d'URL à employer pour utiliser le moteur de publication Web et accéder aux données XML
à partir de bases de données FileMaker est la suivante :
<scheme>://<host>[:<port>]/fmi/xml/<xml_grammar>.xml[?<query string>] où :
1
<scheme> 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
<xml_grammar> est le nom de la grammaire XML FileMaker. Les valeurs possibles sont fmresultset.xml,
FMPXMLRESULT.xml, FMPXMLLAYOUT.xml ou FMPDSORESULT.xml. Consultez les rubriques « Utilisation
1
<query string> associe une commande de requête à un ou plusieurs paramètres de requête pour la publication XML FileMaker. (La commande –dbnames ne requiert aucun paramètre.) Reportez-vous
et annexe A, « Noms corrects utilisés dans les chaînes de requête ».
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 URL sont
écrites en minuscules, à l'exception des trois noms de grammaire qui sont en majuscules : FMPXMLRESULT,
FMPXMLLAYOUT et FMPDSORESULT. Pour plus d'informations sur les règles de distinction majuscules-minuscules
Voici deux exemples d'URL permettant d'accéder aux données XML via le moteur de publication Web : http://server.company.com/fmi/xml/fmresultset.xml?–db=products&–lay=sales&–findall http://192.168.123.101/fmi/xml/FMPXMLRESULT.xml?–db=products&–lay=sales&–findall
34 Publication Web personnalisée de FileMaker Server avec XML et XSLT
A propos de la syntaxe d'URL pour les objets FileMaker de type Multimédia dans les solutions XML
Dans un document XML généré pour une solution XML, la syntaxe à employer pour faire référence à un objet de type Multimédia est différente pour les rubriques de type Multimédia qui stockent l'objet concerné dans la base de données de celle pour les rubriques de type Multimédia qui stockent une référence à l'objet.
1
Si une rubrique de type Multimédia stocke l'objet lui-même dans la base de données, les <données> de la rubrique de type Multimédia utilisent la syntaxe d'URL suivante pour faire référence à l'objet :
<data>/fmi/xml/cnt/data.<extension>?<query string></data> où <extension> est l'extension du nom de fichier qui identifie le type d'objet, par exemple .jpg. L'extension du nom de fichier définit le type MIME qui permet au navigateur Web d'identifier correctement les données
Par exemple :
<data>/fmi/xml/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/xml/cnt/data.<extension>?<query string>
Par exemple : http://www.company.com/fmi/xml/cnt/data.jpg?–db=products&–lay=sales&–field=product_image(1)&–recid=2
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 :
<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.
Remarque
La syntaxe des objets de type Multimédia utilisant le langage XML est différente de la syntaxe
Chapitre 4
|
Accès aux données XML avec le moteur de publication Web 35
A propos du codage de texte URL
Les URL utilisées pour accéder aux données XML et aux objets de type Multimédia doivent absolument être
Par exemple, pour définir la valeur de la rubrique info sur fiancée, vous pouvez utiliser l'URL suivante : http://server.company.com/fmi/xml/fmresultset.xml?–db=members&–lay=relationships&–recid=2
&info= fianc%C3%A9e&–edit
Dans cet exemple d'URL, %C3%A9 est la représentation codée au format UTF-8 du caractère é.
Pour plus d'informations sur le codage de texte URL, consultez les spécifications de l'URL disponible
à l'adresse www.w3.org.
Accès aux données XML via le moteur de publication Web
Pour accéder aux données XML via le moteur de publication Web, utilisez une URL qui spécifie le nom de la grammaire FileMaker à employer, une commande de requête FileMaker, puis un ou plusieurs paramètres de requête FileMaker. A partir de votre base de données, le moteur de publication Web génère des données
XML formatées à l'aide de l'un des types de grammaire suivants :
1
fmresultset
: c'est la grammaire que nous recommandons pour le moteur de publication Web. Elle est flexible et particulièrement adaptée à la création de feuilles de style XSLT avec un accès par nom simplifié aux rubriques et une manipulation plus souple des données relatedset (table externe). Cette grammaire est
également plus étroitement liée à la terminologie et aux fonctionnalités de FileMaker, notamment aux options de stockage de type Global et à l'identification des rubriques de type Statistique et Calcul. Vous pouvez utiliser cette grammaire pour accéder aux données XML et aux feuilles de style XSLT. Pour faciliter la publication Web, cette grammaire se veut plus prolixe que la grammaire FMPXMLRESULT. Consultez la
rubrique « Utilisation de la grammaire fmresultset », page 37.
1
FMPXMLRESULT et FMPXMLLAYOUT :
vous pouvez employer les grammaires FMPXMLRESULT et FMPXMLLAYOUT avec le moteur de publication Web pour accéder aux données XML et aux feuilles de style XSLT. Pour utiliser une feuille de style dédiée à l'exportation XML et à la publication Web personnalisée, utilisez la grammaire FMPXMLRESULT. Pour accéder aux listes de valeurs et aux informations d'affichage des rubriques dans des modèles, utilisez la grammaire FMPXMLLAYOUT.
Consultez la rubrique « Utilisation d'autres grammaires FileMaker XML », page 40.
1
FMPDSORESULT
: La grammaire FMPDSORESULT, qui est prise en charge dans FileMaker Pro pour l'exportation XML, n'est plus utilisée pour accéder aux données XML via le moteur de publication Web.
La grammaire FMPDSORESULT n'est pas prise en charge dans les feuilles de style XSLT. Pour plus d'informations sur la grammaire FMPDSORESULT, consultez l'Aide FileMaker Pro.
En fonction de la grammaire spécifiée dans la requête de type URL, le moteur de publication Web génère un document XML utilisant l'une des grammaires disponibles. Chaque document XML comporte une
format XML, utilisez l'une de ces grammaires dans votre document ou dans votre page Web.
Remarque
Les données XML générées par le moteur de publication Web sont codées au format UTF-8
(Unicode Transformation Format 8). Consultez la rubrique « A propos des données UTF-8 », page 44.
36 Publication Web personnalisée de FileMaker Server avec XML et XSLT
A propos des espaces de nom pour le langage XML de FileMaker
Des espaces de nom XML uniques aident à distinguer les balises XML de l'application à laquelle ils sont destinés.
Par exemple, si vos documents XML contiennent deux éléments <DATABASE> destinés respectivement
à des données XML FileMaker et à des données XML Oracle, les espaces de nom permettent d'identifier les éléments <DATABASE> pour ces deux logiciels.
Le moteur de publication Web génère un espace de nom par défaut pour chaque grammaire.
Pour cette grammaire Cet espace de nom par défaut est généré
fmresultset xmlns="http://www.filemaker.com/xml/fmresultset"
FMPXMLRESULT
FMPXMLLAYOUT xmlns="http://www.filemaker.com/ fmpxmlresult" xmlns="http://www.filemaker.com/fmpxmllayout"
A propos des codes d'erreurs des bases de données FileMaker
Accessoirement, le moteur de publication Web renvoie un code d'erreur au début de chaque document XML répertoriant une erreur dans l'exécution de la commande de requête la plus récemment exécutée. La valeur zéro (0) indique qu'il n'y a pas d'erreur.
Pour cette grammaire La syntaxe utilisée est
fmresultset <error code="0"></error>
FMPXMLRESULT
FMPDSORESULT
<ERRORCODE>0</ERRORCODE>
<ERRORCODE>0</ERRORCODE>
L'élément de code d'erreur dans le document XML indique des erreurs relatives à la base de données et aux chaînes de requête. D'autres types d'erreurs peuvent également survenir dans les feuilles de style XSLT,
Récupération des définitions de type de document pour les grammaires FileMaker
Utilisez une requête HTTP pour récupérer les définitions de type de document (DTD) pour les grammaires
FileMaker.
Pour cette grammaire Utilisez la requête HTTP suivante
fmresultset http://<host>[:<port]/fmi/xml/fmresultset.dtd
FMPXMLRESULT
FMPXMLLAYOUT
FMPDSORESULT http://<host>[:<port]/fmi/xml/FMPXMLRESULT.dtd
http://<host>[:<port]/fmi/xml/FMPXMLLAYOUT.dtd
http://<host>[:<port]/fmi/xml/FMPDSORESULT.dtd?–db=<database>&–lay=<layout>
Chapitre 4
|
Accès aux données XML avec le moteur de publication Web 37
Utilisation de la grammaire fmresultset
Les noms des éléments XML de cette grammaire utilisent la terminologie FileMaker et le stockage des rubriques est séparé des types de rubrique. La grammaire offre également la possibilité d'identifier les rubriques de type
Statistique, Calcul et Global.
Pour utiliser la grammaire fmresultset, indiquez le nom de la grammaire fmresultset dans l'URL qui recherche le document XML à partir du moteur de publication Web : fmresultset.xml
Par exemple : http://192.168.123.101/fmi/xml/fmresultset.xml?–db=employees&–lay=family&–findall
Remarque
Veillez à utiliser des minuscules pour spécifier la grammaire fmresultset.
Le moteur de publication Web génère alors un document XML utilisant la grammaire fmresultset.
Dans le document XML, le moteur de publication Web fera référence à la définition du type de document pour la grammaire fmresultset dans l'instruction <!DOCTYPE> située sur la deuxième ligne du document, immédiatement après l'instruction <?xml...?>. L'instruction <!DOCTYPE> indique l'URL à employer pour télécharger la DTD relative à la grammaire fmresultset.
Description des éléments de la grammaire fmresultset
La grammaire fmresultset se compose en priorité des éléments <datasource>, <metadata> et <resultset>.
<datasource>, élément
Dans la grammaire fmresultset, l'élément <datasource> contient les attributs table, layout, date-format, time-format, timestamp-format, total-count et database.
1
L'attribut date-format de l'élément <datasource> indique le format des dates dans le document XML : dd/MM/yyyy où :
1
MM est la valeur à 2 chiffres relative au mois (de 01 à 12, 01 correspondant au mois de janvier et 12, au mois de décembre)
1
dd est la valeur à 2 chiffres relative au jour du mois (de 00 à 31)
1
yyyy est la valeur à 4 chiffres relative à l'année
1
L'attribut time-format de l'élément <datasource> indique le format des heures dans le document XML :
HH:mm:ss où :
1
HH est la valeur à 2 chiffres pour les heures (de 00 à 23 pour le format 24 heures)
1
mm est la valeur à 2 chiffres pour les minutes (de 00 à 59)
1
ss est la valeur à 2 chiffres pour les secondes (de 00 à 59)
38 Publication Web personnalisée de FileMaker Server avec XML et XSLT
1
L'attribut timestamp-format de l'élément <datasource> associe les formats de date et d'heure dans un horodatage : dd/MM/yyyy HH:mm:ss
<metadata>, élément
L'élément <metadata> de la grammaire fmresultset contient un ou plusieurs éléments <field-definition> et <relatedset-definition>, chacun contenant des attributs pour l'une des rubriques de cet ensemble de résultats.
L’attribut <field-definition> définit :
1
si la rubrique est de type auto-enter <<yes>> ou <<no>>
1
si la rubrique est de type four-digit-year <<yes>> ou <<no>>
1
si la rubrique est de type global <<yes>> ou <<no>>
1
le nombre maximal de valeurs multivaluées (attribut max-repeat)
1
le nombre maximal de caractères autorisé (attribut max-characters)
1
si la rubrique est de type not-empty <<yes>> ou <<no>>
1
si la rubrique est réservée aux données numériques <<yes>> ou <<no>>
1
le format du résultat <<text>>, <<number>>, <<date>>, <<time>>, <<timestamp>>
1
si la rubrique est de type time-of-day <<yes>> ou <<no>>
1
le type <<normal>>, <<calculation>> ou <<summary>>
1
et le nom de la rubrique (entièrement qualifié si nécessaire)
L'élément <relatedset-definition> correspond à une table externe. Chaque rubrique correspondante dans une table externe est représentée par l'élément <field-definition> intégré à l'élément <relatedset-definition>. Si une table externe possède plusieurs rubriques correspondantes, les définitions des rubriques correspondantes sont regroupées dans un même élément <relatedset-definition>.
<resultset>, élément
L'élément <resultset> contient les éléments <record> renvoyés comme étant le résultat d'une requête et d'un attribut pour le nombre total d'enregistrements trouvés. Chaque élément <record> contient les données de la rubrique pour l'un des enregistrements dans l'ensemble des résultats, y compris les attributs mod-id et record-id de l'enregistrement, et l'élément <data> contenant les données pour l'une des rubriques de l'enregistrement.
Chaque enregistrement d'une table externe est représenté par un élément <record> intégré à l'élément
<relatedset>. L'attribut de comptage de l'élément <relatedset> indique le nombre d'enregistrements de la table externe, et l'attribut de table spécifie la table associée avec la table externe.
Chapitre 4
|
Accès aux données XML avec le moteur de publication Web 39
Exemple de données XML dans la grammaire fmresultset
L'exemple ci-dessous représente les données XML générées à l'aide de la grammaire fmresultset.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE fmresultset PUBLIC "-//FMI//DTD fmresultset//EN" ""http://localhost:16014/fmi/xml/fmresultset.dtd">
<fmresultset xmlns="http://www.filemaker.com/xml/fmresultset" version="1.0">
<error code="0" />
<product build="02/07/2007" name="FileMaker Web Publishing Engine" version="9.0.1.36" />
<datasource database="art" date-format="MM/dd/yyyy" layout="web3" table="art" time-format="HH:mm:ss" timestamp-format="MM/dd/yyyy HH:mm:ss" total-count="12" />
<metadata>
<field-definition auto-enter="no" four-digit-year="no" global="no" max-repeat="1" name="Title" not-empty="no" numeric-only="no" result="text" time-of-day="no" type="normal" />
<field-definition auto-enter="no" four-digit-year="no" global="no" max-repeat="1" name="Artist" not-empty="no" numeric-only="no" result="text" time-of-day="no" type="normal" />
<relatedset-definition table="artlocations">
<field-definition auto-enter="no" four-digit-year="no" global="no" max-repeat="1" name="artlocations::Location" not-empty="no" numeric-only="no" result="text" time-of-day="no" type="normal" />
<field-definition auto-enter="no" four-digit-year="no" global="no" max-repeat="1" name="artlocations::Date" not-empty="no" numeric-only="no" result="date" time-of-day="no" type="normal" />
</relatedset-definition>
<field-definition auto-enter="no" four-digit-year="no" global="no" max-repeat="1" name="Style" not-empty="no" numeric-only="no" result="text" time-of-day="no" type="normal" />
<field-definition auto-enter="no" four-digit-year="no" global="no" max-repeat="1" name="length" not-empty="no" numeric-only="no" result="number" time-of-day="no" type="calculation" />
</metadata>
<resultset count="1" fetch-size="1">
<record mod-id="6" record-id="14">
<field name="Title">
<data>Spring in Giverny 3</data>
</field>
<field name="Artist">
<data>Claude Monet</data>
</field>
<relatedset count="0" table="artlocations" />
<field name="Style">
<data />
</field>
<field name="length">
<data>19</data>
</field>
</record>
</resultset>
</fmresultset>
40 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Utilisation d'autres grammaires FileMaker XML
Les autres grammaires XML FileMaker contiennent des informations au sujet des types de rubrique, des listes de valeur et des modèles. FMPXMLRESULT est une grammaire fonctionnellement équivalente
à fmresultset. Pour accéder aux listes de valeurs et aux informations d'affichage des rubriques dans des modèles, utilisez la grammaire FMPXMLLAYOUT. Les grammaires FMPXMLRESULT et FMPXMLLAYOUT sont plus compactes pour les échanges de données.
Pour utiliser la grammaire FMPXMLRESULT, indiquez le nom de la grammaire dans l'URL qui recherche le document XML à partir du moteur de publication Web :
FMPXMLRESULT.xml
Par exemple : http://192.168.123.101/fmi/xml/FMPXMLRESULT.xml?–db=employees&–lay=family&–findall
Pour utiliser la grammaire FMPXMLLAYOUT, indiquez le nom de la grammaire avec la commande de requête
–view dans l'URL qui recherche le document XML à partir du moteur de publication Web :
FMPXMLLAYOUT.xml
Par exemple : http://192.168.123.101/fmi/xml/FMPXMLLAYOUT.xml?–db=employees&–lay=family&–view
Remarque
Veillez à entrer le nom des grammaires FMPXMLRESULT et FMPXMLLAYOUT en majuscules.
Dans le document XML généré, le moteur de publication Web référence la définition du type de document de la grammaire dans l'instruction <!DOCTYPE> située sur la deuxième ligne du document, immédiatement après l'instruction <?xml...?>. L'instruction <!DOCTYPE> indique l'URL à employer pour télécharger la DTD relative à la grammaire.
Description des éléments de la grammaire FMPXMLRESULT
Dans la grammaire FMPXMLRESULT, l'élément <DATABASE> contient les attributs NAME, RECORDS,
DATEFORMAT, LAYOUT et TIMEFORMAT.
L'attribut DATEFORMAT de l'élément <DATABASE> permet de déterminer le format des dates dans le document XML. L'attribut TIMEFORMAT de l'élément <DATABASE> permet de déterminer le format des heures dans le document XML. Les formats date et heure des grammaires FMPXMLRESULT et fmresultset sont
L'élément <METADATA> de la grammaire FMPXMLRESULT comporte un ou plusieurs éléments <FIELD>, contenant chacun des informations pour l'une des rubriques/colonnes de résultats, notamment le nom de la rubrique définie dans la base de données, le type de rubrique, la tolérance du choix Yes ou No pour les rubriques vides (attribut EMPTYOK), ainsi que le nombre maximal de rubriques multivaluées
(attribut MAXREPEAT). Les valeurs autorisées pour les types de rubriques sont les suivantes :
TEXT, NUMBER, DATE, TIME, TIMESTAMP et CONTAINER.
Chapitre 4
|
Accès aux données XML avec le moteur de publication Web 41
L'élément <RESULTSET> contient tous les éléments <ROW> renvoyés comme étant le résultat d'une requête et d'un attribut pour le nombre total d'enregistrements trouvés. Chaque élément <ROW> contient les données de la rubrique/colonne pour l'une des rangées de l'ensemble des résultats. Ces données incluent RECORDID et MODID
et l'élément <COL>. L'élément <COL> contient les données pour une rubrique/colonne de la rangée dans laquelle les éléments <DATA> représentent l'une des valeurs d'une rubrique multivaluée ou d'une rubrique de table externe.
Exemple de données XML dans la grammaire FMPXMLRESULT
L'exemple ci-dessous représente les données XML générées à l'aide de la grammaire FMPXMLRESULT.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE FMPXMLRESULT PUBLIC "-//FMI//DTD FMPXMLRESULT//EN" ""http://localhost:16014/fmi/xml/
FMPXMLRESULT.dtd">
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
<ERRORCODE>0</ERRORCODE>
<PRODUCT BUILD="02/07/2007" NAME="FileMaker Web Publishing Engine" VERSION="9.0.1.36" />
<DATABASE DATEFORMAT="MM/dd/yyyy" LAYOUT="web" NAME="art" RECORDS="12" TIMEFORMAT="HH:mm:ss" />
<METADATA>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Title" TYPE="TEXT" />
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Artist" TYPE="TEXT" />
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Image" TYPE="CONTAINER" />
</METADATA>
<RESULTSET FOUND="1">
<ROW MODID="6" RECORDID="15">
<COL>
<DATA>Spring in Giverny 4</DATA>
</COL>
<COL>
<DATA>Claude Monet</DATA>
</COL>
<COL>
<DATA>/fmi/xml/cnt/data.jpg?-db=art&-lay=web&-recid=15&-field=Image(1)</DATA>
</COL>
</ROW>
</RESULTSET>
</FMPXMLRESULT>
L'ordre des éléments <COL> correspond à l'ordre des éléments <FIELD> dans l'élément <METADATA> : par exemple, si les rubriques Title et Artist sont répertoriées dans l'élément <METADATA>, Village Market puis Camille Pissarro apparaissent dans le même ordre dans les éléments <RESULTSET> et <ROW>.
42 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Description des éléments dans la grammaire FMPXMLLAYOUT
Dans la grammaire FMPXMLLAYOUT, l'élément< LAYOUT> contient le nom du modèle, le nom de la base de données et les éléments <FIELD> de chaque rubrique figurant dans le modèle correspondant de la base de données. Chaque élément <FIELD> décrit le type de style de la rubrique et contient l'attribut VALUELIST pour toute liste de valeurs associée à la rubrique.
L'élément <VALUELISTS> contient un ou plusieurs éléments <VALUELIST> pour chaque liste de valeurs répertoriée dans le modèle, chacun de ces éléments comportant le nom de la liste de valeurs et un élément
<VALUE> pour chaque valeur de la liste.
Pour les rubriques de date, d'heure et d'horodatage, les données des listes de valeurs sont formatées à l'aide du format fm pour ce type de rubrique. Les formats fm sont dd/MM/yyyy pour la date, HH:mm:ss pour l'heure
local dans une rubrique birthdate d'un modèle et que la rubrique birthdate est de type date, alors les valeurs résultantes pour cette liste de valeurs seront toutes au format de date fm.
Remarque
Si deux rubriques possédant des types de rubrique différents dans un modèle partagent la même liste de valeurs, le type de la première rubrique détermine le format des données de la liste de valeurs.
Chapitre 4
|
Accès aux données XML avec le moteur de publication Web 43
Exemple de données XML dans la grammaire FMPXMLLAYOUT
L'exemple ci-dessous représente les données XML générées à l'aide de la grammaire FMPXMLLAYOUT.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE FMPXMLLAYOUT PUBLIC "-//FMI//DTD FMPXMLLAYOUT//EN" ""http://localhost:16014/fmi/xml/
FMPXMLLAYOUT.dtd">
<FMPXMLLAYOUT xmlns="http://www.filemaker.com/fmpxmllayout">
<ERRORCODE>0</ERRORCODE>
<PRODUCT BUILD="02/07/2007" NAME="FileMaker Web Publishing Engine" VERSION="9.0.1.36" />
<LAYOUT DATABASE="art" NAME="web2">
<FIELD NAME="Title">
<STYLE TYPE="EDITTEXT" VALUELIST="" />
</FIELD>
<FIELD NAME="Artist">
<STYLE TYPE="EDITTEXT" VALUELIST="" />
</FIELD>
<FIELD NAME="Image">
<STYLE TYPE="EDITTEXT" VALUELIST="" />
</FIELD>
<FIELD NAME="artlocations::Location">
<STYLE TYPE="EDITTEXT" VALUELIST="" />
</FIELD>
<FIELD NAME="artlocations::Date">
<STYLE TYPE="EDITTEXT" VALUELIST="" />
</FIELD>
<FIELD NAME="Style">
<STYLE TYPE="POPUPMENU" VALUELIST="style"/>
</FIELD>
</LAYOUT>
<VALUELISTS>
<VALUELIST NAME="style">
<VALUE>Impressionist </VALUE>
<VALUE>Modern </VALUE>
<VALUE>Abstract </VALUE>
</VALUELIST>
</VALUELISTS>
</FMPXMLLAYOUT>
44 Publication Web personnalisée de FileMaker Server avec XML et XSLT
A propos des données UTF-8
Les données XML générées par le moteur de publication Web sont codées au format UTF-8 (Unicode
Transformation Format 8 bits). Ce format compresse les données du format Unicode standard 16 bits au format 8 bits pour les caractères ASCII. Les analyseurs XML sont nécessaires à la prise en charge des codages Unicode et UTF-8.
Le codage au format UTF-8 comprend les représentations directes de la plupart des caractères utilisés en anglais, avec les valeurs 0 à 127 pour le jeu de caractères ASCII standard, et fournit des codages multioctets pour les caractères Unicode dont les valeurs sont supérieures.
Remarque
Veillez à utiliser un navigateur Web ou un éditeur de texte prenant en charge les fichiers UTF-8.
Le format du codage UTF-8 présente les caractéristiques suivantes :
1
Tous les caractères ASCII correspondent à des caractères UTF-8 d'un octet. Une chaîne ASCII valide est une chaîne UTF-8 valide.
1
Tout caractère non ASCII (tout caractère dont le bit de poids fort est défini) fait partie d'un caractère multioctet.
1
Le premier octet d'un caractère au format UTF-8 indique le nombre d'octets supplémentaires dans le caractère en question.
1
Le premier octet d'un caractère multioctet est facilement identifiable par rapport aux octets suivants. Il est ainsi facile de repérer le début d'un caractère quel que soit son emplacement dans un flux de données.
1
La conversion entre le format UTF-8 et le format Unicode ne pose aucun problème.
1
Le codage au format UTF-8 est relativement compact. Dans le cas d'un texte contenant un pourcentage
élevé de caractères ASCII, ce type de codage est plus compact que le codage au format Unicode.
Dans le pire des cas, une chaîne UTF-8 n'est que 50 % plus grande que la chaîne Unicode équivalente.
Utilisation de chaînes de requête FileMaker pour rechercher des données XML
Pour rechercher des données XML dans une base de données FileMaker, utilisez les commandes de requête et les paramètres dans une chaîne de requête. Par exemple, utilisez la commande de requête –findall dans la chaîne de requête suivante d'une URL pour rechercher une liste de tous les produits d'une base de données
FileMaker dont le nom est products.
http://192.168.123.101/fmi/xml/fmresultset.xml?–db=products–lay=sales&–findall
Une chaîne de requête doit contenir uniquement une seule commande de requête, du type –new. La plupart des commandes de requête exigent également plusieurs paramètres de requête concordants dans la chaîne de requête. Par exemple, toutes les commandes de requête, à l'exception de –dbnames, ont besoin du paramètre –db, qui spécifie la base de données sur laquelle effectuer la recherche.
Vous pouvez également employer des commandes et des paramètres de requête dans une URL ou dans une instruction de traitement <?xslt–cwp–query?> de la feuille de style XSLT FileMaker. Consultez la rubrique
chapitre 6, « Conception de feuilles de style FileMaker XSLT ».
Cette section contient un récapitulatif des commandes et des paramètres de requête de FileMaker. Pour plus
Chapitre 4
|
Accès aux données XML avec le moteur de publication Web 45
Remarque
Le moteur de publication Web prend également en charge une commande de requête supplémentaire (–process), ainsi que trois paramètres de requête qui ne doivent être utilisés qu'avec les
Utilisez cette commande de requête Pour exécuter cette commande
–dbnames
Extraire le nom de toutes les bases de données hébergées et partagées sur le Web.
–delete
Supprimer l'enregistrement.
–dup
Dupliquer l'enregistrement.
–edit
Modifier un enregistrement.
–find
Rechercher des enregistrements.
–findall
Rechercher tous les enregistrements.
–findany
Rechercher un enregistrement aléatoire.
–findquery
Accomplir une requête de recherche complexe ou composée.
–layoutnames
Extraire le nom de tous les modèles disponibles correspondant à une base de données spécifique, hébergée et partagée sur le Web.
–new
Ajouter un nouvel enregistrement.
–scriptnames
Extraire le nom de tous les scripts disponibles correspondant à une base de données spécifique, hébergée et partagée sur le Web.
–view
Extraire les informations du modèle d'une base de données si la grammaire FMPXMLLAYOUT est spécifiée. Extraire la section de <metadata> du document XML et un ensemble d'enregistrements vides si la grammaire fmresultset ou FMPXMLRESULT est spécifiée.
Utilisez ce paramètre de requête
–db (nom de la base de données)
–delete.related
–field fieldname fieldname.op (opérateur)
–lay (nom du modèle)
–lay.response (passer d'un modèle à un modèle pour obtenir une réponse XML)
Avec ces commandes de requête
Obligatoire pour toutes les commandes de requête, à l'exception de
–dbnames et de –process (requêtes XSLT uniquement)
Facultatif pour –edit
Obligatoire pour indiquer une rubrique dans une URL pour les requêtes de
Un nom de rubrique au moins est obligatoire avec –edit. Facultatif pour
Facultatif pour –find
Obligatoire pour toutes les commandes de requête, à l'exception de
–dbnames, –layoutnames, –scriptnames et –process (requêtes XSLT uniquement)
Obligatoire pour toutes les commandes de requête, à l'exception de
–dbnames, –layoutnames, –scriptnames et –process (requêtes XSLT uniquement)
46 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Utilisez ce paramètre de requête
–lop (opérateur logique)
Avec ces commandes de requête
Facultatif pour –find
–max (nombre maximal d'enregistrements)
Facultatif pour –find, –findall
–modid (ID de modification)
Facultatif pour –edit
–query
Nécessaire avec les requêtes de recherche composée -findquery.
–recid (ID de l'enregistrement)
Obligatoire pour –edit, –delete, –dup. Facultatif pour –find
–relatedsets.filter
Facultatif avec –find, –edit, –new, –dup, et –findquery.
–relatedsets.max
Facultatif avec –find, –edit, –new, –dup, et –findquery.
–script (exécution du script)
Facultatif pour –find, –findall, –findany, –new, –edit, –delete, –dup, –view
–script.param (transmettre une valeur de paramètre au script spécifié par –script)
–script.prefind (exécution du script avant
–find, –findany et –findall)
Facultatif pour –script
Facultatif pour –find, –findany, –findall
–script.prefind.param (transmettre une valeur de paramètre au script spécifié par
–script.prefind)
Facultatif pour –script.prefind
–script.presort (exécuter le script avant le tri) Facultatif pour –find, –findall
–script.presort.param (transmettre une valeur de paramètre au script spécifié par
–script.presort)
Facultatif pour –script.presort
–skip (ignorer les enregistrements)
–sortfield.[1-9] (trier la rubrique)
Facultatif pour –find, –findall
Facultatif pour –find, –findall
–sortorder.[1-9] (trier l'ordre)
–stylehref (feuille de style HREF)
Facultatif pour –find, –findall
Facultatif avec toutes les commandes de requête (indiquer une feuille de style URL pour –styletype)
–styletype (type de feuille de style)
Facultatif avec toutes les commandes de requête (pour indiquer une feuille de style côté client)
Passage d'un modèle à un autre pour obtenir une réponse XML
Le paramètre de requête –lay indique le modèle à utiliser pour extraire des données XML. Souvent, le même modèle se révèle adapté au traitement des données répertoriées dans la requête. Dans certains cas, vous devrez rechercher les données qui utilisent un modèle contenant des rubriques qui, pour des raisons de sécurité, n'existent dans aucun autre modèle servant à l'affichage des résultats. (Pour rechercher des données dans une rubrique, il faut que celle-ci soit placée dans le modèle indiqué dans la requête XML.)
Pour définir un modèle destiné à l'affichage des réponses XML qui soit différent du modèle utilisé pour le traitement de la requête XML, utilisez le paramètre de requête facultatif –lay.response.
Par exemple, la requête suivante recherche les valeurs supérieures à 100 000 dans la rubrique Salary du modèle
Budget. Les données obtenues s'affichent au moyen d'un modèle ExecList, qui n'inclut pas la rubrique Salary. http://192.168.123.101/fmi/xml/fmresultset.xml?–db=employees&–lay=Budget&Salary=100000&Salary.op=gt&–find
&–lay.response=ExecList
Chapitre 4
|
Accès aux données XML avec le moteur de publication Web 47
Comprendre le traitement d'une requête XML
Plusieurs paramètres de requête interviennent dans le traitement d'une requête XML et dans la génération d'un document XML.
Voici l'ordre dans lequel FileMaker Server et le moteur de publication Web traitent une requête XML :
1. Traitez le paramètre de requête –lay.
2. Définissez les valeurs des rubriques de type Global dans la requête (la partie .global= d'une URL).
3. Traitez le paramètre de requête –script.prefind si indiqué.
4. Traitez les commandes de requêtes du type –find ou –new.
5. Traitez le paramètre de requête –script.presort, si indiqué.
6. Triez les données obtenues, si un tri a été indiqué.
7. Traitez le paramètre de requête –lay.response pour passer d'un modèle à un autre, si indiqué.
8. Traitez le paramètre de requête –script, si indiqué.
9. Générez le document XML.
Si l'une des étapes décrites ci-dessus génère un code d'erreur, le traitement de la requête s'arrête ; les étapes suivantes ne sont alors pas exécutées. Toutefois, toutes les étapes antérieures dans la requête restent exécutées.
Par exemple, imaginons une requête qui supprime l'enregistrement ouvert, trie les enregistrements, puis exécute un script. Si le paramètre –sortfield pointe vers une rubrique qui n'existe pas, la requête supprime l'enregistrement ouvert et renvoie le code d'erreur 102 (Rubrique manquante), mais n'exécute cependant pas le script.
Utilisation du traitement des feuilles de style côté serveur et côté client
Le moteur de publication Web prend en charge le traitement d'une feuille de style XSLT côté serveur et vous permet également d'utiliser un paramètre de requête qui indique le traitement d'une feuille de style côté client.
Il est important de comprendre les différences entre les deux façons de traiter les feuilles de style, ainsi que les implications du traitement côté client en termes de sécurité. Le traitement côté serveur est mieux sécurisé que le traitement côté client car le premier interdit l'accès du Web aux données XML non filtrées. Dans le cas du traitement côté serveur, les données sont présentées sous la forme choisie par le propriétaire des données ou l'auteur de la feuille de style XSLT. Le traitement côté serveur masque de la vue des utilisateurs Web les noms des bases de données, les noms des rubriques, ainsi que d'autres détails relatifs à la mise en œuvre. Le traitement côté serveur peut également être utilisé pour spécifier des paramètres de requête définis de manière statique. Ceux-ci empêchent l'utilisation de commandes et de paramètres de requête non autorisés, comme par exemple les noms
avec XSLT » et chapitre 6, « Conception de feuilles de style FileMaker XSLT ».
48 Publication Web personnalisée de FileMaker Server avec XML et XSLT
Si votre solution exige un traitement des feuilles de style côté client, vous pouvez utiliser le moteur de publication
Web pour générer une instruction de traitement de feuille de style XML avec chacune des grammaires, en intégrant les paramètres –styletype et –stylehref dans la requête de la chaîne de requête FileMaker. Vous pouvez utiliser des feuilles de style en cascade (CSS) ou des feuilles de style XSLT pour l'affichage du document XML.
1
Le paramètre –styletype permet de définir la valeur de l'attribut type (type=text/css ou type=text/xsl).
1
Le paramètre –stylehref est utilisé pour définir la valeur de l'attribut HREF qui indique la position de la feuille de style à l'aide d'un chemin d'accès absolu. Par exemple : href=/mystylesheet.css ou href=/stylesheets/ mystylesheet.xsl. Le nom de la feuille de style peut être un nom quelconque, mais il doit comporter l'extension
.css ou .xsl.
Exemple de chaîne de requête FileMaker qui génère un traitement de feuille de style côté client : http://localhost/fmi/xml/fmresultset.xml?–db=products–lay=sales&–findall&–styletype=text/xsl&–stylehref=/mystylesheet.xsl
Remarque
Dans cet exemple, le <</>> dans <<-stylehref=/document.xsl>> est utilisé en raison du fait que la feuille de style est située au niveau du dossier racine du logiciel de serveur Web. Utilisez une URL pour la feuille de style possédant un chemin d'accès absolu pour indiquer son emplacement sur le serveur Web. La feuille de style peut
également se trouver sur un autre serveur Web.
D'après cette requête, le moteur de publication Web inclut les instructions de traitement suivantes dans le document XML :
<?xml–stylesheet type="text/xsl" href="/mystylesheet.xsl"?>
Copiez ou placez la feuille de style à traiter côté client sur le serveur Web, à l'emplacement indiqué par le chemin d'accès absolu dans l'URL de l'attribut HREF.
Important
Ne placez en aucun cas de feuilles de style dans le dossier xslt-template-files en vue d'un traitement côté client. En effet, ce dossier n'est utilisé que pour le traitement côté serveur des feuilles de style XSLT.
Remarque
Certains navigateurs Web ne prennent pas en charge le traitement côté client. Pour plus d'informations, consultez la documentation de votre navigateur Web.
Dépannage de l'accès aux documents XML
Si vous rencontrez des difficultés pour accéder aux documents XML avec le moteur de publication Web, vérifiez les points suivants :
1
Les privilèges étendus contenus dans la base de données sont définis pour une publication Web personnalisée
1
La base de données est hébergée sur le composant Serveur de base de données de FileMaker Server, et elle est ouverte par FileMaker Server. Consultez l'Aide de FileMaker Server.
1
Le nom de compte et le mot de passe que vous utilisez éventuellement pour la base de données sont corrects.
1
Le composant serveur Web du déploiement FileMaker Server est en cours d’exécution.
1
Le composant moteur de publication Web du déploiement FileMaker Server est en cours d’exécution.
1
La publication XML est activée dans le moteur de publication Web. Consultez l'Aide de FileMaker Server.

Öffentlicher Link aktualisiert
Der öffentliche Link zu Ihrem Chat wurde aktualisiert.