IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[ODF] Création de sections Docbook


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut [ODF] Création de sections Docbook
    Bonjour,
    Je voudrais permettre à mes collègues de saisir leurs pages web sous Word pour plus de facilités. La procédure est la suivante : créer un document word stylé (toute la mise en page autorisée est disponible dans les styles), l'ouvrir dans Open Office, l'enregistrer dans Open Office au format Docbook (xml), l'importer dans notre portail web (après avoir supprimé la ligne de DTD).
    Je travaille donc sur la feuille XSLT d'Open Office pour transformer les styles crés sous word en xml lisible par notre portail web.
    Je connais la docbook, je n'ai aucune formation en XSLT, je ne suis pas informaticienne et je n'ai personne qui puisse m'aider. Voilà pour la présentation.

    Le problème le plus important que je rencontre :

    Je voudrais avoir une structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <article>
    - <section id="titre">
      <title>Titre vert</title> 
      </section>
    - <section label="text">
      <title>Titre rouge</title> 
      <para>.........</para>
      </section>
      </article>
    mais je ne sais pas comment créer une section qui imbrique tout le reste.
    Je sais créer une section pour un élement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <xsl:template match="text:p[@text:style-name='Titre vert']">
    		<xsl:element name="section">
    			<xsl:attribute name="id">titre</xsl:attribute>
    			<xsl:element name="title">
    				<xsl:apply-templates/>
    			</xsl:element>
    		</xsl:element>
    	</xsl:template>
    Je sais que la création de section est présente dans mon fichier dans les séquences suivantes (avec make-section) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    <xsl:template match="text:h[@text:level='1']">
    <xsl:choose>
    	<xsl:when test=".='Abstract'">
    		<abstract>
    			<xsl:apply-templates select="key('headchildren', generate-id())"/>
         			<xsl:apply-templates select="key('children', generate-id())"/>
    		</abstract>
    	</xsl:when>
    	<xsl:otherwise>
    		<xsl:call-template name="make-section">
    			<xsl:with-param name="current" select="@text:level"/>
    				<xsl:with-param name="prev" select="1"/>
    		</xsl:call-template>
    		<!--<sect1>
       			  <title>
         				  <xsl:apply-templates/>
         			</title>
         				<xsl:apply-templates select="key('headchildren', generate-id())"/>
         			<xsl:apply-templates select="key('children', generate-id())"/>
       		</sect1>-->
    	</xsl:otherwise>
    </xsl:choose>
     </xsl:template>
     
    <xsl:template match="text:h[@text:level='2'] | text:h[@text:level='3']| text:h[@text:level='4'] | text:h[@text:level='5']">
    <xsl:variable name="level" select="@text:level"/>
    <xsl:call-template name="make-section">
    	<xsl:with-param name="current" select="$level"/>
    	<xsl:with-param name="prev" select="preceding-sibling::text:h[@text:level &lt; $level][1]/@text:level "/>
    </xsl:call-template>
     
    </xsl:template>
     
    	<xsl:template name="make-section">
    		<xsl:param name="current"/>
    		<xsl:param name="prev"/>
    		<xsl:choose>
    			<xsl:when test="$current &gt; $prev+1">
    				<xsl:text disable-output-escaping="yes">&lt;section label="</xsl:text>
    				<xsl:value-of select="$prev +1"/>
    				<xsl:text disable-output-escaping="yes">"&gt;</xsl:text>
    				<title>
    		    	</title>
    				<xsl:call-template name="make-section">
    					<xsl:with-param name="current" select="$current"/>
    					<xsl:with-param name="prev" select="$prev +1"/>
    				</xsl:call-template>
    				<xsl:text disable-output-escaping="yes">&lt;/section</xsl:text>
    				<xsl:text disable-output-escaping="yes">&gt;</xsl:text>
    			</xsl:when>
    			<xsl:otherwise>
    				<xsl:text disable-output-escaping="yes">&lt;section label="</xsl:text>
    				<xsl:value-of select="$current"/>
    				<xsl:text disable-output-escaping="yes">"&gt;</xsl:text>
    				<xsl:choose>
    					<xsl:when test="$current &lt; 3">
    						<title>
    							<xsl:apply-templates/>
    						</title>
    					</xsl:when>
    					<xsl:otherwise>
    						<title/>
    						<subtitle>
    							<xsl:apply-templates/>
    						</subtitle>
    					</xsl:otherwise>
    				</xsl:choose>
    				<xsl:apply-templates select="key('headchildren', generate-id())"/>
    				<xsl:apply-templates select="key('children', generate-id())"/>
    				<xsl:text disable-output-escaping="yes">&lt;/section</xsl:text>
    				<xsl:text disable-output-escaping="yes">&gt;</xsl:text>
    			</xsl:otherwise>
    		</xsl:choose>
    	</xsl:template>
    Mais je ne comprends pas ce que signifient ces séquences et comment je dois les modifier pour obtenir ce que je veux.

    Merci de votre aide !

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    qu'est-ce qui ne te convient pas dans l'export Docbook proposé dans Writer ?
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Les styles que j'ai créé dans Word n'y sont pas (puisque ce sont des styles spéciaux que j'ai créés afin de normaliser nos pages).
    Le document Word de départ n'utilise que les styles pour la mise en forme.
    Par exemple si on veut mettre un paragraphe en gras, au lieu de sélectionner le texte et de cliquer sur Gras, on sélectionne le texte et on lui donne le style "paragraphe gras".
    De plus, j'adapte la transformation à la feuille de style de notre portail web, qui a été réalisée par le fournisseur. Je sais par exemple que :

    <section id="titre">
    <title>Titre vert</title>
    </section>

    me donnera un titre en vert.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Personne pour m'aider ?...

    Comment faire pour créer une section avec label=text après la création d'un article et qui ne se referme qu'à la fin, avant de fermer l'article ?

  5. #5
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par Hydromel Voir le message
    Personne pour m'aider ?...
    Le souci, c'est que ce n'est pas une opération triviale, et je ne sais pas dans quelle mesure le filtre XSLT docbook n'a pas été modifié par votre prestataire...
    Citation Envoyé par Hydromel
    mais je ne sais pas comment créer une section qui imbrique tout le reste.
    Le reste, c'est à dire ?
    Le mieux serait de mettre un exemple minimal de ce qui est souhaité en sortie.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Comme je l'ai mis dans le premier post, je voudrais avoir une structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <article>
    - <section id="titre">
      <title>Titre vert</title> 
      </section>
    - <section label="text">
      <title>Titre rouge</title> 
      <para>truc</para>
      <para>muche</para>
      </section>
      </article>

  7. #7
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Désolé, mais ce n'est pas très clair... Est-ce que cela veut dire que tout le contenu du document doit être inclus dans une section avec l'attribut label égal à 'text', sauf les paragraphes (il peut y en avoir plusieurs ?) avec un style 'Titre vert' qui doivent être placés chacun dans une section en tête d'article ?

    Si c'est le cas, ce n'est pas le template 'make-section' qui doit être modifié, mais celui qui génère l'article (a priori celui qui matche office:document). Ca devrait donner quelque chose du genre (sans aucune garantie) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <xsl:template match="/office:document">
      ...
      <article>
        <xsl:for-each select=".//text:p[@text:style-name='Titre vert']">
          <section id="titre">
             <title>Titre vert</title>
             <xsl:apply-templates select="*"/>
          </section>
        </xsl:for-each>
        <section label="text">
          <title>Titre rouge</title>
          <xsl:apply-templates select="*"/>
        </section>
      </article>
    </xsl:template>
    <xsl:template match="text:p[@text:style-name='Titre vert']" />
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

Discussions similaires

  1. Création "section" de recherche dans une page
    Par cyrux dans le forum Langage
    Réponses: 79
    Dernier message: 11/08/2010, 11h29
  2. création SECTION LATEX
    Par ma3toura dans le forum Mise en forme
    Réponses: 2
    Dernier message: 28/04/2010, 13h04
  3. création d'une section subsubparagraph
    Par VirtualSlide dans le forum Mise en forme
    Réponses: 1
    Dernier message: 14/01/2009, 11h20
  4. [SSRS 2k8] Création d'une section sur le rapport
    Par patriceharel dans le forum SSRS
    Réponses: 3
    Dernier message: 17/12/2008, 14h52
  5. [DOM] Création automatique de sections CDATA
    Par chmouette dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 29/03/2007, 17h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo