sdx-developers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [sdx-developers] Transformation - Pipeline


From: Frédéric Glorieux
Subject: Re: [sdx-developers] Transformation - Pipeline
Date: Thu, 14 Nov 2002 20:16:12 +0100

| Bonjour,
|
| D'abord, dans sdx.xsl, la declaration de Document a change:
|
|     Document          sdx_document;      // an sdx document
|     Document[]        sdx_documents;     // an array of sdx document
|
| Ca gene quand on veut utiliser org.w3c.dom.Document: le compiler est
| confus.

En effet, nous avons fait le choix d'utiliser désormais les noms courts,
pour faciliter la lecture du java généré. De nombreuses classes framework,
cocoon et SDX sont désormais importées. sdx.xsl utilise aussi
org.w3c.dom.Document  . Le choix a été fait de privilégier le nom SDX,
supposant que DOM sera moins utile, depuis que cocoon2 est passé à SAX.

|
| Puis, je demande votre avis:
|
|      J'ai un editeur elementaire (edit.xsp), il repose sur le principe
| qu'il prend une representation DOM du document a editer.
|      Puis, une routine, "labelTree" il va effectuer une numerotation de
| tous les noeuds.
|      Ensuite, le document est suspendu au document
| represente: xspCurrentNode.appendChild(document_libelle);
|
| Pour realiser ca en SAX, le mieux parait de creer une Transformation, ou
| un pipeline.
| De quels classes vaut-il mieux partir?
| But est de faire un XMLConsumer qui rattrape les evenements SAX du doc
| en edition, puis rajout l'attribut 'nodenumber' a tous les noeuds
| editables, et
| enfin envoit des evenements SAX enrichis de l'attribut
| au contentHandler de la page xsp.

    Je ne suis pas certain d'avoir bien compris les étapes (qui rentre quoi
? le document fabriqué sert-il uniquement à l'affichage ou à l'indexation
?), cela change beaucoup l'approche.
    Si ce n'est que de l'affichage, j'aurais tendance a utiliser la sitemap.
Une xsl peut facilement numéroter tous les noeuds d'une entrée XML
<xsl:template match"*">
    <xsl:element name="name()">
        <xsl:attribute name="nodenumber">
            <xsl:number level="any"/>
            <!-- numérotation hiérarchique et formatqage du nombre possible
avec xsl:number -->
        </xsl:attribute>
    <xsl:copy-of select="@*"/>
 </xsl:template>
Si les performances sont un problème, un filtre sax ferait encore mieux.
    Par contre, il n'y a plus de mécanisme simple dans Cocoon2 pour ajouter
un noeud dom dans une xsp. Son code SAX peut être imité en xsp:logic (voir
tomcat/work/.../mapage_xsp.java).





reply via email to

[Prev in Thread] Current Thread [Next in Thread]