Chapitre 4 Accès aux données XML avec le moteur de Publication Web. Filemaker Server 13
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 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.
Pour plus d'informations, consultez la Base de connaissances FileMaker
(http://help.filemaker.com).
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 http://www.w3.org.
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, le moteur de publication Web prend en charge les grammaires fmresultset, FMPXMLRESULT et FMPXMLLAYOUT. Pour l'importation XML,
FileMaker Pro utilise la grammaire FMPXMLRESULT, et pour l'exportation, il utilise la grammaire
FMPXMLRESULT
. Consultez la section « Accès aux données XML via le moteur de publication
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.
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 24
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 de données 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 de données 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 de données 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 Conteneur.
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 de données au format XML, consultez l'Aide FileMaker Pro.
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.
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 25
Navigate ur 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
Module de serveur
Web
2. Le serveur Web adresse la requête au noyau de publication
Web.
Moteur de publication
Web FileMaker Server
Noyau de publication
Web
Moteur de Publication
Web personnalisée
(CWPE)
3. Le noyau de publication Web soumet la requête à la base de données hébergée par le serveur de bases de données FileMaker.
FileMaker
Database Server
La demande de données XML est acheminée du navigateur Web ou du programme vers le serveur de bases de données FileMaker.
Products.fmp12
Customers.fmp12
Orders.fmp12
Catalog.fmp12
Les données XML sont renvoyées par le serveur de bases 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.
Serveur Web
Module de serveur
Web
Moteur de publication
Web FileMaker Server
Noyau de publication
Web
Moteur de Publication
Web personnalisée
(CWPE)
4. Le serveur de bases de données FileMaker envoie les données demandées au noyau de publication Web.
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 26
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 l'Admin Console de FileMaker Server.
Consultez l'Aide FileMaker Server.
2. Dans FileMaker Pro, ouvrez chaque base de données FileMaker à publier et assurez-vous que pour chacune d'entre elles, le privilège étendu
fmxml
est activé pour la fonction de Publication
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égroupezles. 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.
d'informations sur les commandes de requête et sur les paramètres, consultez les sections
« Utilisation de chaînes de requête FileMaker pour rechercher des données XML », page 39,
et annexe A, « Noms corrects utilisés dans les chaînes de requête ».
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 jeu 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.
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 27
A propos de la syntaxe d'URL pour les données XML et les objets de type Conteneur
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 Conteneur à partir de bases de données FileMaker.
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
, FMPXMLRESULT ou FMPXMLLAYOUT. Consultez les rubriques « Utilisation de la
grammaire fmresultset », page 31 et « Utilisation d'autres grammaires XML FileMaker », page 34.
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.) Consultez les rubriques « Utilisation de chaînes de requête FileMaker pour
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 deux noms de grammaire, qui sont en majuscules : FMPXMLRESULT et FMPXMLLAYOUT. Pour plus d'informations sur les règles de distinction majuscules-minuscules applicables à la chaîne de requête, consultez la section
« Consignes d'utilisation des commandes et des paramètres de requête », page 50.
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
A propos de la syntaxe d'URL pour les objets FileMaker de type Conteneur 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 Conteneur est différente pour les rubriques de données de Conteneur qui stockent l'objet concerné dans la base de données de celle pour les rubriques de données de
Conteneur qui stockent une référence à l'objet.
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 28
Si une rubrique Conteneur stocke l'objet lui-même dans la base de données
L'élément <data> de la rubrique Conteneur utilise 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 de type Conteneur. Pour plus d'informations concernant <query string>
, consultez la section précédente « A propos de la syntaxe d'URL pour les données XML ».
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 Conteneur, 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 Conteneur. Il est généré à la fois pour les
Pour extraire les données de conteneur de la base de données, utilisez la syntaxe suivante :
<scheme>://<host>[:<port>]/fmi/xml/cnt/data.<extension>?<query string>
Pour plus d'informations concernant <scheme>, <host> ou <port>, consultez la section
« A propos de la syntaxe d'URL pour les données XML ».
Par exemple : http://www.company.com/fmi/xml/cnt/data.jpg?-db=products&-lay=sales
&-field=product_image(1)&-recid=2
Si une rubrique Conteneur contient une référence à un fichier et non à un objet réel
L'élément <data> de la rubrique Conteneur contient un chemin d'accès relatif faisant référence
à l'objet. Par exemple :
<data>/images/logo.jpg</data>
Remarque
L'objet Conteneur 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 ayant le même emplacement relatif dans le dossier racine du logiciel de serveur Web. Consultez la
section « A propos de la publication du contenu des rubriques Conteneur sur le Web », page 17.
Si une rubrique Conteneur est vide
L'élément <data> de la rubrique est vide.
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 29
A propos du codage de texte URL
Les URL utilisées pour accéder aux données XML et aux objets de type Conteneur doivent absolument être codées au format UTF-8 (Unicode Transformation Format 8 bits). Consultez la
section « A propos des données UTF-8 », page 39.
Par exemple, pour définir la valeur de la rubrique « info » à 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 http://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 : Il s'agit de la grammaire que nous recommandons d'utiliser pour le moteur de publication Web lors de l'accès aux données XML. Elle est flexible et particulièrement adaptée
à un accès par le nom simplifié aux rubriques et à une manipulation plus facile 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. Pour faciliter la publication
Web, cette grammaire se veut plus prolixe que la grammaire FMPXMLRESULT. Consultez la
section « Utilisation de la grammaire fmresultset », page 31.
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. 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 section « Utilisation d'autres grammaires XML FileMaker », page 34.
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 déclaration d'espace de nom XML par défaut pour la grammaire. Consultez la
section « A propos des espaces de nom pour le langage XML de FileMaker ». Pour afficher et
manipuler des données FileMaker au 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 section « A propos des données
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 30
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 chacun de ces types de données.
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 xmlns="http://www.filemaker.com/fmpxmlresult"
FMPXMLLAYOUT 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
FMPXMLLAYOUT
<ERRORCODE>0</ERRORCODE>
<ERRORCODE>0</ERRORCODE>
L'élément de code d'erreur dans le document XML indique des erreurs relatives à la base de
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 http://<host>[:<port]/fmi/xml/FMPXMLRESULT.dtd
FMPXMLLAYOUT http://<host>[:<port]/fmi/xml/FMPXMLLAYOUT.dtd
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 31
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 principalement des éléments <datasource>,
<metadata>
et <resultset>.
élément <datasource>
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 : jj/MM/aaaa 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
jj
est la valeur à 2 chiffres relative au jour du mois (de 01 à 31)
1
aaaa
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)
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 32
1
L'attribut timestamp-format de l'élément <datasource> associe les formats de date et d'heure dans un horodatage : jj/MM/aaaa HH:mm:ss
élément <metadata>
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 ou container)
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>.
élément <resultset>
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 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 à la table externe.
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 33
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:80/fmi/xml/fmresultset.dtd">
<fmresultset xmlns="http://www.filemaker.com/xml/fmresultset" version="1.0">
<error code="0" />
<product build="12/31/2014" name="FileMaker Web Publishing Engine" version="0.0.0.0" />
<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" maxrepeat="1" name="Title" not-empty="no" numeric-only="no" result="text" time-ofday="no" type="normal" />
<field-definition auto-enter="no" four-digit-year="no" global="no" maxrepeat="1" name="Artist" not-empty="no" numeric-only="no" result="text" timeof-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>
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 34
</field>
</record>
</resultset>
</fmresultset>
Utilisation d'autres grammaires XML FileMaker
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/FMPXMLRESULT.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 identiques. Consultez la section « Description des
éléments de la grammaire fmresultset », page 31.
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 35
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 l'ensemble des résultats, dont le nom de la rubrique définie dans la base de données, le type de rubrique, la tolérance du choix Oui ou Non 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.
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
les données pour une rubrique/colonne de la rangée dans laquelle plusieurs é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:80/fmi/xml/FMPXMLRESULT.dtd">
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
<ERRORCODE>0</ERRORCODE>
<PRODUCT BUILD="12/31/2014" NAME="FileMaker Web Publishing Engine"
VERSION="0.0.0.0" />
<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>.
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 36
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.
En fonction des options sélectionnées dans la boîte de dialogue
Rubriques pour la liste de valeurs
de la base de données FileMaker, l'élément <VALUE> dispose d'un attribut DISPLAY qui contient la valeur de la première rubrique uniquement, la valeur de la seconde rubrique uniquement ou les deux rubriques d'une liste de valeurs. Par exemple, supposons que la première rubrique d'une liste de valeurs stocke le numéro d'ID d'un style d'art (par exemple « 100 ») et que la seconde rubrique affiche le nom associé au style au style d'art (par exemple « Impressionism »). Voici un résumé du contenu de l'attribut DISPLAY lorsque les différentes combinaisons d'options sont sélectionnées dans la boîte de dialogue
Rubriques pour la liste de valeurs
:
1
Si l'option
Afficher également les valeurs de la seconde rubrique
n'est pas sélectionnée, l'attribut DISPLAY contient pour valeur dans la première rubrique, d'une liste de valeurs uniquement. Dans l'exemple de données XML suivant, l'attribut DISPLAY contient uniquement le numéro d'ID du style d'art :
<VALUELISTS>
<VALUELIST NAME="style">
<VALUE DISPLAY="100">100</VALUE>
<VALUE DISPLAY="101">101</VALUE>
<VALUE DISPLAY="102">102</VALUE>
</VALUELIST>
</VALUELISTS>
1
Si les options
Afficher également les valeurs de la seconde rubrique
et
Afficher uniquement les valeurs de la seconde rubrique
sont toutes les deux sélectionnées, l'attribut
DISPLAY contient la valeur dans la seconde rubrique uniquement. Dans l'exemple de données
XML suivant, l'attribut DISPLAY contient uniquement le nom du style d'art :
<VALUELISTS>
<VALUELIST NAME="style">
<VALUE DISPLAY="Impressionism">100</VALUE>
<VALUE DISPLAY="Cubism">101</VALUE>
<VALUE DISPLAY="Abstract">102</VALUE>
</VALUELIST>
</VALUELISTS>
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 37
1
Si l'option
Afficher également les valeurs de la seconde rubrique
est sélectionnée et que l'option
Afficher uniquement les valeurs de la seconde rubrique
ne l'est pas, l'attribut DISPLAY contient les valeurs, dans les deux rubriques, d'une liste de valeurs. Dans l'exemple de données
XML suivant, l'attribut DISPLAY contient le numéro d'ID du style d'art, ainsi que son nom :
<VALUELISTS>
<VALUELIST NAME="style">
<VALUE DISPLAY="100 Impressionism">100</VALUE>
<VALUE DISPLAY="101 Cubism">101</VALUE>
<VALUE DISPLAY="102 Abstract">102</VALUE>
</VALUELIST>
</VALUELISTS>
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 jj/MM/aaaa
pour la date, HH:mm:ss pour l'heure et jj/MM/aaaa HH:mm:ss pour l'horodatage. Par exemple, si une liste de valeur « birthdays » est utilisée pour un menu local dans la 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 de types 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
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:80/fmi/xml/FMPXMLLAYOUT.dtd">
<FMPXMLLAYOUT xmlns="http://www.filemaker.com/fmpxmllayout">
<ERRORCODE>0</ERRORCODE>
<PRODUCT BUILD="12/31/2014" NAME="FileMaker Web Publishing Engine"
VERSION="0.0.0.0" />
<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 DISPLAY="Impressionism">100</VALUE>
<VALUE DISPLAY="Cubism">101</VALUE>
<VALUE DISPLAY="Abstract">102</VALUE>
</VALUELIST>
</VALUELISTS>
</FMPXMLLAYOUT>
38
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 39
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 multi-octets 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 multi-octet.
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 multi-octet 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 et les paramètres de requête 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 demander 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 utiliser des commandes et des paramètres de requête dans une URL.
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 40
Utilisez cette commande de requête
–dbnames
–delete
–dup
–edit
–find
–findall
–findany
–findquery
–layoutnames
–view
Cette section contient un récapitulatif des commandes et des paramètres de requête de
FileMaker. Pour plus d'informations sur leur utilisation dans une chaîne de requête, consultez la
section « Noms corrects utilisés dans les chaînes de requête », page 49.
–new
–scriptnames
Pour exécuter cette commande
Extraire le nom de toutes les bases de données hébergées et partagées sur le Web.
Supprimer l'enregistrement.
Dupliquer l'enregistrement.
Modifier un enregistrement.
Rechercher des enregistrements.
Rechercher tous les enregistrements.
Rechercher un enregistrement aléatoire.
Accomplir une requête de recherche complexe ou composée.
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.
Ajouter un nouvel enregistrement.
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.
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 jeu d'enregistrements vides si la grammaire fmresultset ou
FMPXMLRESULT
est spécifiée.
Utilisez ce paramètre de requête Avec ces commandes de requête
–db (nom de la base de données)
Obligatoire pour toutes les commandes de requête, à l'exception de –dbnames
–delete.related
–field
Facultatif pour –edit
Obligatoire pour indiquer une rubrique dans une URL pour les requêtes de type
Conteneur. Consultez la section « A propos de la syntaxe d'URL pour les objets
FileMaker de type Conteneur dans les solutions XML », page 27.
fieldname fieldname.op (opérateur)
–lay (nom du modèle)
–lay.response
–lop
(passer à un modèle pour obtenir une réponse XML)
(opérateur logique)
–max
(nombre maximal d'enregistrements)
–modid
(ID de modification)
Un nom de rubrique au moins est obligatoire avec –edit. Facultatif pour –find.
Consultez la section « Paramètre de requête fieldname (nom de rubrique non-
Facultatif pour –find
Obligatoire pour toutes les commandes de requête, à l'exception de –dbnames,
–layoutnames
et –scriptnames
Obligatoire pour toutes les commandes de requête, à l'exception de –dbnames,
–layoutnames
et –scriptnames
Facultatif pour –find
Facultatif pour –find, –findall et –findquery
–query
–recid
(ID de l'enregistrement)
–relatedsets.filter
–relatedsets.max
Facultatif pour –edit
Obligatoire pour les requêtes de recherche composée -findquery
Obligatoire pour –edit, –delete, –dup. Facultatif pour –find
Facultatif pour –find, –findall, –findany, –edit, –new, –dup et –findquery
Facultatif avec –find, –edit, –new, –dup et –findquery.
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 41
Utilisez ce paramètre de requête
–script
(exécution du script)
–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)
–script.prefind.param
(transmettre une valeur de paramètre au script spécifié par –script.prefind)
–script.presort
(exécuter le script avant le tri)
–script.presort.param
(transmettre une valeur de paramètre au script spécifié par –script.presort)
–skip
(ignorer les enregistrements)
–sortfield.[1-9]
(trier la rubrique)
–sortorder.[1-9]
(trier l'ordre)
Avec ces commandes de requête
Facultatif pour –find, –findall, –findany, –new, –edit, –delete, –dup,
–view
et –findquery
Facultatif pour –script et –findquery
Facultatif pour –find, –findany, –findall et –findquery
Facultatif pour –script.prefind et –findquery
Facultatif pour –find, –findall et –findquery
Facultatif pour –script.presort et –findquery
Facultatif pour –find, –findall et –findquery
Facultatif pour –find, –findall et –findquery
Facultatif pour –find, –findall
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 via le 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
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ête de type –find ou –new.
Chapitre 4 | Accès aux données XML avec le moteur de Publication Web 42
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 –script, si indiqué.
8. Traitez le paramètre de requête –lay.response pour passer d'un modèle à un autre, 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.
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 pour XML et affectés à un compte utilisateur. Consultez la section
« Activation de la Publication Web personnalisée dans une base de données », page 14.
1
La base de données est hébergée sur le composant Serveur de bases de données de
FileMaker Server, et elle est ouverte par FileMaker Server. Consultez l'Aide 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
FileMaker Server.

Link público atualizado
O link público para o seu chat foi atualizado.