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 :

[XSLT]Wordml --> XMl les tables


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 56
    Points : 43
    Points
    43
    Par défaut [XSLT]Wordml --> XMl les tables
    Bonjour,

    Je travaille sur un xslt ayant pour but de convertir du wordml (Xml généré par Word) vers un fichier Xml utilisé dans nos applications. Mon (premier ?!) problème vient de la façon dont les tables sont codée dans le Wordml. En effet, les tables sont décrites colonnes par colonnes alors que je dois encoder cela dans le fichier xml ligne par ligne (un peu comme l'Html). Ce petit exemple sera sans doute plus clair :

    Format Wordml (note : j'ai simplifié un peu le code pour le présenter ici, il se peu qu'il manque l'une ou l'autre balise)
    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
     
    		<w:tbl>
    				<w:tblGrid>
    					<w:gridCol w:w="2268"/>
    					<w:gridCol w:w="2268"/>
    					<w:gridCol w:w="2268"/>
    				</w:tblGrid>
    				<w:tr wsp:rsidR="00534855" wsp:rsidRPr="0091496B" wsp:rsidTr="00445279">
    					<w:tc>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<w:r wsp:rsidRPr="00162125">
    								<w:t>Age</w:t>
    							</w:r>
    						</w:p>
    					</w:tc>
    					<w:tc>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<w:r wsp:rsidRPr="00162125">
    								<w:t>Poids corporel</w:t>
    							</w:r>
    						</w:p>
    					</w:tc>
    					<w:tc>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<w:r wsp:rsidRPr="00162125">
    								<w:t>Nombre de gouttes</w:t>
    							</w:r>
    						</w:p>
    					</w:tc>
    				</w:tr>
    				<w:tr wsp:rsidR="00534855" wsp:rsidRPr="0091496B" wsp:rsidTr="00445279">
    					<w:tc>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<w:r wsp:rsidRPr="00E3038B">
    								<w:t>1 an</w:t>
    							</w:r>
    						</w:p>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<w:r wsp:rsidRPr="00E3038B">
    								<w:t>3 ans</w:t>
    							</w:r>
    						</w:p>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<w:r wsp:rsidRPr="00E3038B">
    								<w:t>6 ans</w:t>
    							</w:r>
    						</w:p>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<w:r wsp:rsidRPr="00E3038B">
    								<w:t>9 ans</w:t>
    							</w:r>
    						</w:p>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<w:r wsp:rsidRPr="00E3038B">
    								<w:t>11 ans</w:t>
    							</w:r>
    						</w:p>
    					</w:tc>
    					<w:tc>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<st1:metricconverter ProductID="10ᅠkg" w:st="on">
    								<w:r wsp:rsidRPr="00162125">
    									<w:t>10*kg</w:t>
    								</w:r>
    							</st1:metricconverter>
    						</w:p>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<st1:metricconverter ProductID="15ᅠkg" w:st="on">
    								<w:r wsp:rsidRPr="00162125">
    									<w:t>15*kg</w:t>
    								</w:r>
    							</st1:metricconverter>
    						</w:p>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<st1:metricconverter ProductID="20ᅠkg" w:st="on">
    								<w:r wsp:rsidRPr="00162125">
    									<w:t>20*kg</w:t>
    								</w:r>
    							</st1:metricconverter>
    						</w:p>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<st1:metricconverter ProductID="30ᅠkg" w:st="on">
    								<w:r wsp:rsidRPr="00162125">
    									<w:t>30*kg</w:t>
    								</w:r>
    							</st1:metricconverter>
    						</w:p>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<st1:metricconverter ProductID="45ᅠkg" w:st="on">
    								<w:r wsp:rsidRPr="00162125">
    									<w:t>45*kg</w:t>
    								</w:r>
    							</st1:metricconverter>
    						</w:p>
    					</w:tc>
    					<w:tc>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<w:r wsp:rsidRPr="00162125">
    								<w:t>4 – 8</w:t>
    							</w:r>
    						</w:p>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<w:r wsp:rsidRPr="00162125">
    								<w:t>6 – 12</w:t>
    							</w:r>
    						</w:p>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<w:r wsp:rsidRPr="00162125">
    								<w:t>8 – 16</w:t>
    							</w:r>
    						</w:p>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<w:r wsp:rsidRPr="00162125">
    								<w:t>12 – 24</w:t>
    							</w:r>
    						</w:p>
    						<w:p wsp:rsidR="00534855" wsp:rsidRPr="00E3038B" wsp:rsidRDefault="00534855" wsp:rsidP="00E3038B">
    							<w:r wsp:rsidRPr="00162125">
    								<w:t>18 – 36</w:t>
    							</w:r>
    						</w:p>
    					</w:tc>
    				</w:tr>
    			</w:tbl>
    on voit vlairement que la table est définie colonne par colonne.

    l'xsd de l'xml a produire définit quand a lui la table ligne par ligne, voici la partie de l'xsd qui définit une table :
    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
     
    			<xs:element name="table">
    				<xs:complexType>
    					<xs:sequence>
    						<xs:element name="row" maxOccurs="unbounded">
    							<xs:complexType>
    								<xs:sequence>
    									<xs:element name="column" maxOccurs="unbounded">
    										<xs:complexType>
    											<xs:complexContent>
    												<xs:extension base="blockType">
    													<xs:attribute name="header" type="xs:boolean" use="optional" default="false"/>
    													<xs:attribute name="width" type="xs:integer" use="optional"/>
    													<xs:attribute name="colspan" type="xs:integer" use="optional" default="0"/>
    													<xs:attribute name="rowspan" type="xs:integer" use="optional" default="0"/>
    												</xs:extension>
    											</xs:complexContent>
    										</xs:complexType>
    									</xs:element>
    								</xs:sequence>
    								<xs:attribute name="class-id" type="xs:string" use="optional"/>
    							</xs:complexType>
    						</xs:element>
    					</xs:sequence>
    					<xs:attribute name="class-id" type="xs:string" use="optional"/>
    					<xs:attribute name="border" type="xs:integer" use="optional"/>
    					<xs:attribute name="width" type="xs:integer" use="optional"/>
    					<xs:attribute name="cellpadding" type="xs:integer" use="optional"/>
    					<xs:attribute name="cellspacing" type="xs:integer" use="optional"/>
    				</xs:complexType>
    			</xs:element>
    Existe-t-il un moyen via xslt de passer d'une description colonne par colonne a la description ligne par ligne ?

    D'après ce que je sais de l'xslt, ça me parrait impossible puisqu'il prend les éléments les uns à la suite des autres et qu'aucun "branchement" n'est possible

  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,
    Citation Envoyé par Eylir Voir le message
    on voit clairement que la table est définie colonne par colonne.
    Euh, moi je ne vois pas cela... Je vois une table (w:tbl) divisée en lignes (w:tr) elles-mêmes divisées en cellules (w:tc). Un format donc très proche du schéma utilisé par ton application.

    Quoi qu'il en soit, il n'est pas impossible d'opérer une translation lignes<->colonnes, XSLT permet l'écriture de « fonctions » permettant un ordre de traitement des noeuds qui ne suit pas forcément celui dans lequel ils apparaissent dans le document.
    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. [Table XML] - Les contraintes
    Par jacquesh dans le forum Administration
    Réponses: 1
    Dernier message: 13/05/2007, 22h14
  2. Réponses: 5
    Dernier message: 25/04/2007, 11h34
  3. [XSLT] Transformer un xml en HTML : problème sur les liens
    Par elhout dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/03/2007, 10h46
  4. Réponses: 8
    Dernier message: 11/10/2006, 16h41
  5. [XML][XSLT] WordML et HTML
    Par Landolsi dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 13/09/2005, 12h05

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