Documentation SDX v 1.1
Scénarios de navigation avec SDX
Dernière modification : 2001/11/02 10:47:08 Contact : Martin Sévigny
Afin de bien comprendre comment est gérée une navigation dans une base de documents SDX, nous allons décrire ce qui se passe du côté du serveur en utilisant deux scénarios simples de navigation. Ces deux scénarios sont basés sur l'application SDX que vous êtes en train de consulter, soit la documentation.
Scénario 1 : consultation d'un document
Vous êtes en train de lire un document qui se situe à l'adresse (par exemple) http://sdx.culture.fr/sdx/sdxdoc/voir.xsp&id=t_scenarios. Ce que vous voyez dans votre navigateur Web, c'est une page HTML qui a été générée à partir d'un document XML géré par SDX. Cette transformation, de XML à HTML, a été effectuée côté serveur à l'aide de XSLT. Voici toutes les étapes du déroulement.
Votre navigateur a demandé l'URL en question au serveur sdx.culture.fr (par exemple).
Le serveur de la culture a identifié que la ressource identifiée par l'URL /sdx/sdxdoc/voir.xsp devait être gérée par des servlets, et a donc passé la requête au moteur de servlets.
Le moteur de servlets a identifié que les ressources dont l'extension est .xsp devaient être gérées par la servlet org.apache.cocoon.Cocoon, et elle lui passe donc la commande.
La servlet Cocoon reconnaît qu'il s'agit d'une page dynamique XSP. Elle va d'abord vérifier si elle a déjà une version compilée (en Java) de cette page dynamique, sinon elle va la compiler. Puis elle exécute le programme Java ainsi généré.
La page voir.xsp est très simple, on vous la présente ici :
<?xml version="1.0"?> <?cocoon-process type="xsp"?> <?cocoon-process type="xslt"?> <?xml-stylesheet href="xsl/normal.xsl" type="text/xsl"?> <xsp:page language="java" xmlns:xsp="http://www.apache.org/1999/XSP/Core" xmlns:sdx="http://www.culture.gouv.fr/ns/sdx/sdx" > <sdx:page> <sdx:includeDocument/> </sdx:page> </xsp:page>
Pour bien comprendre cet exemple, il faut en savoir un peu plus sur les pages dynamiques XSP. Ces dernières sont des documents XML qui sont transformés en programmes Java. Ces derniers, lorsqu'ils s'exécutent, vont produire un nouveau document XML qui sera ensuite transformé pour être envoyé au navigateur. Dans notre exemple, le document XML produit par la page XSP sera nettement plus complexe que celui qui en constitue la source.
Dans cette page XSP, on retrouve un élément sdx:page et un élément sdx:includeDocument. Le premier va permettre d'insérer dans la page XML en cours tout le contexte SDX nécessaire et le passer au moteur de transformation XSLT, et la deuxième instruction est tout ce qui est nécessaire pour dire à SDX que l'utilisateur veut afficher le document identifié par la valeur du paramètre id!
Cette simplicité est seulement apparente, car derrière, dans la feuille logique, plusieurs instructions sont exécutées, et finalement le document XML construit sera celui que vous voyez à l'écran, mais avec à l'intérieur le document XML correspondant à l'identificateur t_scenarios. C'est ce nouveau document XML qui est transformé et que vous voyez à l'écran.
L'étape suivante consiste à transformer le document XML produit par la page XSP en un document HTML que vous pouvez consulter à l'aide d'un navigateur. Ceci est effectué à l'aide d'une transformation XSLT que l'on trouve dans le fichier xsl/normal.xsl et qui contient les instructions nécessaires pour traiter les informations SDX et le document lui-même.
Par exemple, la barre de navigation dans le haut de la page n'existe pas dans le document affiché. Les informations requises sont extraites d'un autre document qui contient la table des matières de la documentation. Ce document est disponible lors de la transformation parce que XSLT permet d'inclure des documents XML externes en autant qu'ils soient adressables par une URL, mais aussi parce que SDX est capable de fournir un document XML directement en format XML à l'aide d'une simple requête exprimée par une URL.
Ce premier scénario permet d'exprimer une première caractéristique essentielle de SDX : une partie importante du travail consiste à créer des transformations XSLT. En effet, on constate que la page XSP est très simple, mais surtout qu'elle ne contient aucune ligne de code Java. De plus, on peut constater que la même page XSP peut être copiée pour n'importe quelle base de documents, car aucune instruction spécifique à cette base ne s'y trouve.
Scénario 2 : requête de recherche
Si vous tapez un mot dans le formulaire de recherche que l'on trouve en haut de cette page, vous obtiendrez des résultats de recherche. Ce scénario n'implique pas l'affichage d'un ou de plusieurs documents gérés par SDX, mais il utilise des techniques semblables à celles que l'on a vu au scénario précédent. Nous allons l'expliquer ici, en laissant tomber les étapes initiales visant à identifier la bonne servlet.
Ici, l'URL demandée est http://sdx.culture.fr/sdx/sdxdoc/rechsimple.xsp?q=xsp si vous tapez sdx dans la zone de texte.
La page XSP correspondant à cette URL est semblable à la suivante :
<?xml version="1.0"?> <?cocoon-process type="xsp"?> <?cocoon-process type="xslt"?> <?xml-stylesheet href="xsl/resultats.xsl" type="text/xsl"?> <xsp:page language="java" xmlns:xsp="http://www.apache.org/1999/XSP/Core" xmlns:sdx="http://www.culture.gouv.fr/ns/sdx/sdx" > <sdx:page> <sdx:checkRights action="view_document"> <resultPage type="simple"> <sdx:executeSimpleQuery queryParam="q" pParam="p" hppParam="h" qidParam="n" parseParam="pp"/> </resultPage> <sdx:fallback> <identificationError/> </sdx:fallback> </sdx:checkRights> </sdx:page> </xsp:page>
Cette page semble plus complexe, mais c'est seulement parce qu'on nous avons inclus des instructions pour que SDX vérifie si l'utilisateur en cours a le droit d'effectuer cette opération, ainsi que les instructions à exéctuer s'il n'a pas le droit.
Dans cette page, l'instruction qui permet de passer la requête de recherche au moteur SDX est exprimée par l'élément sdx:executeSimpleQuery et ses attributs, tout simplement. Les résultats, fournis en XML par SDX, seront inclus dans un élément nommé resultPage et traité par la transformation XSLT identifée par l'URL relative xsl/resultats.xsl.
Par la suite, la transformation XSLT pourra traiter le document XML qu'elle reçoit. Les résultats de recherche sont présentés en XML sous un format semblable à celle-ci :
<sdx:results nb="1"> <sdx:result no="1"> <sdx:field code="sdxdocid">introduction</sdx:field> <sdx:field code="titre">Introduction à SDX</sdx:field> </sdx:result> </sdx:results>
Sans aller dans les détails, on voit que l'affichage de résultats de recherche est encore une fois une opération basée sur une transformation XSLT.
Conclusion
Une application SDX implique normalement des documents XML, leurs fichiers attachés (comme des images), mais aussi des pages XSP et des transformations XSLT. Les documents XML sont créés à l'extérieur de la plate-forme par les responsables de contenu. Les pages XSP et les transformations XSLT sont créées par les responsables de l'application.
L'application "Documentation" de SDX, que vous êtes en train de consulter, contient tous les éléments nécessaires pour effectuer les opérations de base avec SDX. Vous pouvez vous en inspirer pour créer vos propres applications. Cette documentation est fournie avec la distribution SDX.
Document précédent : Aperçu technique de SDX |
Table des matières | Document suivant : Introduction aux concepts de base |