 	 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> 	<head> 		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 		<title> 			Objectiva - Dossier 		</title> 		<meta name="description" content="Les solutions intranet/internet"> 		<meta name="keywords" content="Formation Java, Formation WebSphere, Formation VisualAge, Formation XML, Java, WebSphere,  			VisualAge, XML, XSL, DOM, SAX, Notes, Domino, Notes/Domino, Bull, IBM, Ilog, Iona, Lotus, Microsoft, Oracle, Rationnal, Sybase,  			SUN,  Java2, Java 2 platform, J2EE, JFC, Java Foundation Classes, Swing, Servlets, JSP, Java Server Pages, EJB, Enterprise Java Beans,  			RMI, Remote Method Invocation, JDBC, Java Data Base Connect, Corba, IDL, Interface Definition Langage, LotusScript, ASP,  			Active Server Pages, IIS, Internet Information Server, VB, VisualBasic, VBScript, UML, Rose, Mega, BOOCH, OMT, CSS, HTML, IDL,  			JavaScript, PhP3, San Francisco, Envy, Orbix Web,  JonAS, JViews, NTIC, Nouvelles Technologies de l'Information et de la Communication,  			Services, Prestation, Conseil, Expertise, Formation, SSII, Objet, Systemes d'Information, Services Informatique"> 		<meta name="robots" content="all"> 		<meta name="revisit-after" content="2 months"> 		<meta http-equiv="Content-Language" content="fr-FR"> 		<meta name="author" content="Objectiva"> 		<meta http-equiv="Reply-to" content="webmaster@objectiva.fr"> 		<meta name="copyright" content="objectiva"> 		<link REV=made href="mailto:webmaster@objectiva.fr"> 		<link rel="SHORTCUT ICON" href="http://www.objectiva.org/images/icones/objectiva/objectiva.ico"> 		<link rel=STYLESHEET type="text/css" href="http://www.objectiva.org/style-normal.php"> 		</script> 	</head> 	<body> 		<center> 		<div class="page">  		<a name="sommet"> 		<table class="bandeau_haut" border="0" cellspacing="0" cellpadding="0"> 			<tr> 				<td align="left" valign="bottom" width="207" height="113" rowspan="2"><img src="images/logoweb.gif"  border="0"></td> 				<td colspan="2" align="left" valign="center" height="75"> 					<div class="titre_bandeau">Dossier - Gnration de documents en qualit d'imprimerie</span> 				</td> 			</tr> 			<tr> 				<td class="menu"><span class="menu_items"><a class="menu_item" href="index.php">Accueil</a> 					<a class="menu_item" href="offre.php">Offre</a> 					<a class="menu_item" href="formations.php">Formations</a> 					<a class="menu_item" href="contact.php">Contact</a> 					<a class="menu_item" href="recrutement.php">Opportunits</a> 					<a class="menu_item" href="dossiers.php">Dossiers</a></span></td> 				<td width="140"><div class="date_bandeau">22 avril 2003</div></td> 			</tr> 		</table>     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  				<div class="sommaire" >  					<h1 class="sommaire"> 						<span class="icone_titre_sommaire"> 							<img src="http://www.objectiva.org/images/icones/jfa/NewFolder.gif" border="0"> 						</span> 						<span class="texte_titre_sommaire"> 							Dossiers						</span> 					</h1> 					<table width=100% border=0 cellpadding=1 cellspacing=0> 						<tr  							class="sommaire_out"  							onMouseOver="this.className='sommaire_over'"  							onMouseOut="this.className='sommaire_out'"> 							<td align=center valign=center><img src="http://www.objectiva.org/images/icones/jfa/FolderIn.gif" border=0></td> 							<td valign=center width=100%><div class="sommaire_item">  									<a class="sommaire" href="dossiers.2003-04-15_struts.php" > 											Introduction au framework Struts			 									</a>  								</div></td> 						</tr> 						<tr  							class="sommaire_out"  							onMouseOver="this.className='sommaire_over'"  							onMouseOut="this.className='sommaire_out'"> 							<td align=center valign=center><img src="http://www.objectiva.org/images/icones/jfa/FolderIn.gif" border=0></td> 							<td valign=center width=100%><div class="sommaire_item">  									<a class="sommaire" href="dossiers.2002-12-11_transactions.php" > 											Transactions dans le contexte j2ee			 									</a>  								</div></td> 						</tr> 						<tr  							class="sommaire_out"  							onMouseOver="this.className='sommaire_over'"  							onMouseOut="this.className='sommaire_out'"> 							<td align=center valign=center><img src="http://www.objectiva.org/images/icones/jfa/FolderIn.gif" border=0></td> 							<td valign=center width=100%><div class="sommaire_item">  									<a class="sommaire" href="dossiers.2002-10-17_persistance.php" > 											Note sur la persistance			 									</a>  								</div></td> 						</tr> 						<tr  							class="sommaire_out"  							onMouseOver="this.className='sommaire_over'"  							onMouseOut="this.className='sommaire_out'"> 							<td align=center valign=center><img src="http://www.objectiva.org/images/icones/jfa/FolderIn.gif" border=0></td> 							<td valign=center width=100%><div class="sommaire_item">  									<a class="sommaire" href="dossiers.2002-09-30.table.php" > 											Construction automatise de documents imprimables			 									</a>  								</div></td> 						</tr> 						<tr  							class="sommaire_out"  							onMouseOver="this.className='sommaire_over'"  							onMouseOut="this.className='sommaire_out'"> 							<td align=center valign=center><img src="http://www.objectiva.org/images/icones/jfa/FolderIn.gif" border=0></td> 							<td valign=center width=100%><div class="sommaire_item">  									<a class="sommaire" href="dossiers.2002-07-02_web_services.php" > 											Services Web			 									</a>  								</div></td> 						</tr> 						<tr  							class="sommaire_out"  							onMouseOver="this.className='sommaire_over'"  							onMouseOut="this.className='sommaire_out'"> 							<td align=center valign=center><img src="http://www.objectiva.org/images/icones/jfa/FolderIn.gif" border=0></td> 							<td valign=center width=100%><div class="sommaire_item">  									<a class="sommaire" href="dossiers.php" > 											... tous nos dossiers			 									</a>  								</div></td> 						</tr> 					</table>  				</div> 				<div class="sommaire" >  					<h1 class="sommaire"> 						<span class="icone_titre_sommaire"> 							<img src="images/icones/jfa/FolderIn.gif" border="0"> 						</span> 						<span class="texte_titre_sommaire"> 							SOMMAIRE						</span> 					</h1> 					<table width=100% border=0 cellpadding=1 cellspacing=0> 						<tr  							class="sommaire_out"  							onMouseOver="this.className='sommaire_over'"  							onMouseOut="this.className='sommaire_out'"> 							<td align=center valign=center><img src="images/icones/jfa/FingerRight.gif" border=0></td> 							<td valign=center width=100%><div class="sommaire_item">  									<a class="sommaire" href="dossiers.2002-09-30.table.php" > 											Table dtaille			 									</a>  								</div></td> 						</tr> 						<tr  							class="sommaire_out"  							onMouseOver="this.className='sommaire_over'"  							onMouseOut="this.className='sommaire_out'"> 							<td align=center valign=center><img src="images/icones/jfa/FingerRight.gif" border=0></td> 							<td valign=center width=100%><div class="sommaire_item">  									<a class="sommaire" href="dossiers.2002-09-30.DocumentDynamique.php#DocumentDynamique.titre.1" > 											Introduction			 									</a>  								</div></td> 						</tr> 						<tr  							class="sommaire_out"  							onMouseOver="this.className='sommaire_over'"  							onMouseOut="this.className='sommaire_out'"> 							<td align=center valign=center><img src="images/icones/jfa/FingerRight.gif" border=0></td> 							<td valign=center width=100%><div class="sommaire_item">  									<a class="sommaire" href="dossiers.2002-09-30.OpenOffice-maquette.php#OpenOffice-maquette.titre.1" > 											Solution "tout OpenOffice"			 									</a>  								</div></td> 						</tr> 						<tr  							class="sommaire_out"  							onMouseOver="this.className='sommaire_over'"  							onMouseOut="this.className='sommaire_out'"> 							<td align=center valign=center><img src="images/icones/jfa/FingerRight.gif" border=0></td> 							<td valign=center width=100%><div class="sommaire_item">  									<a class="sommaire" href="dossiers.2002-09-30.codesSource-OO-seul.php#sources.OOseul.1" > 											Code source pour la solution "tout OpenOffice"			 									</a>  								</div></td> 						</tr> 						<tr  							class="sommaire_out"  							onMouseOver="this.className='sommaire_over'"  							onMouseOut="this.className='sommaire_out'"> 							<td align=center valign=center><img src="images/icones/jfa/FingerRight.gif" border=0></td> 							<td valign=center width=100%><div class="sommaire_item">  									<a class="sommaire" href="dossiers.2002-09-30.OpenOffice-FO-maquette.php#OpenOffice-XSLFO-maquette.titre.1" > 											Solution mixte OpenOffice + XSL/FO			 									</a>  								</div></td> 						</tr> 					</table>  				</div> 				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">					<p class="dossier_infos_redaction"> 						Rdaction de ce dossier le 30 Septembre 2002 					</p>  	            	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="OpenOffice-maquette.titre.1"> 	<h1 class="dossier">II - G&eacute;n&eacute;ration de document avec OpenOffice</h1> 	</a>                      	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.maquette"> 	<h2 class="dossier">II-1 La maquette, point de d&eacute;part de la g&eacute;n&eacute;ration du document</h2> 	</a> 	<br>            	<p class="dossier"> 		La cible id&eacute;ale dans cette solution est un document de structure plus ou moins fig&eacute;e, c'est-&agrave;-dire contenant du texte statique mais aussi des parties dynamiques &agrave; instancier ou non en fonction de donn&eacute;es externes (exprim&eacute;es dans un format XML). Un tel document est donc une maquette : pour fixer les id&eacute;es, nous prenons l'exemple de la r&eacute;alisation d'une plaquette donnant le planning d'un congr&egrave;s ou forum, comme le Forum XML qui se tient &agrave; Paris au mois de Novembre, et dont la maquette (compl&egrave;tement fictive quant &agrave; la pr&eacute;sentation) pour l'ann&eacute;e 2001 aurait pu &ecirc;tre celle montr&eacute;e &agrave; la  	 <a href="dossiers.2002-09-30.OpenOffice-maquette.php#maquette-planningForum.fig.1"><span style="color: purple">Figure 7</span></a>.      	</p> 	                     					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	 	<p class="figure"> 		<a name="maquette-planningForum.fig.1"> 		<img src="images/dossiers/dossiers.2002-09-30.maquette-planningForum.gif" border="0"> 		<br/><b><i>Figure 7 : Maquette du planning du Forum XML de l'ann&eacute;e 2001</i></b> 		</a> 	</p> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">           	<br/>            	<p class="dossier"> 		Une maquette est donc un document classique, pouvant contenir du texte, des images, des dessins vectoriels, des diagrammes (cf le camembert de r&eacute;partition des participants, &agrave; la figure  	 <a href="dossiers.2002-09-30.OpenOffice-maquette.php#maquette-planningForum.fig.1"><span style="color: purple">Figure 7</span></a>), et des tableaux (comme dans Microsoft Word), auquels s'ajoutent des &eacute;l&eacute;ments instanciables. 	<br/>      Ces &eacute;l&eacute;ments instanciables peuvent &ecirc;tre des champs (comme  <span style="font-family: monospace; color: blue">datesForum</span>  dans l'exemple), ou des tableaux. Un tableau peut lui-m&ecirc;me contenir des &eacute;l&eacute;ments statiques (textes, images, ...), comme le texte  <span style="font-family: monospace; color: blue">Forum XML &amp; Int&eacute;gration e-business des</span>, ou dynamiques (des champs comme  <span style="font-family: monospace; color: blue">titreSession</span>).      	</p> 	       	<p class="dossier"> 		A titre indicatif, voici un extrait du code XML de cette maquette, g&eacute;n&eacute;r&eacute; par OpenOffice :      	</p> 	                      					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 		<table align="center" border="0" cellspacing="0" cellpadding="2"> 			<tr> 			<td align="left"> 				 	 	<table style=" 	padding: 1ex 1ex 1ex 1ex;  	border: thin ridge; 	border-color : dodgerblue; 	background-color: azure; 	font-weight: bold; 	margin-top: 1ex 	"> 		<tr> 		<td> 		code XML de la maquette (extrait) 		</td> 		</tr> 	</table>       	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			   &lt;text:h text:style-name="Heading 1" text:level="1"&gt;Forum XML &amp;amp; Int&eacute;gration e-business&lt;text:s/&gt;des&lt;text:bookmark-ref text:reference-format="page" text:ref-name="datesForum"/&gt;   &lt;/text:h&gt;   &lt;text:p text:style-name="Text body"&gt;XML, et l&amp;#8217;ensemble des technologies et outils qui s&amp;#8217;y attachent, est aujourd&amp;#8217;hui le cha&icirc;non incontournable pour faciliter et acc&eacute;l&eacute;rer l&amp;#8217;int&eacute;gration d&amp;#8217;applications, la pierre angulaire des projets de e-business et des plates-formes d&amp;#8217;&eacute;changes, la cl&eacute; pour agr&eacute;ger, &eacute;changer et publier des contenus de diverses origines, quelque soit le canal utilis&eacute;.&lt;/text:p&gt;   &lt;text:p text:style-name="Text body"&gt;Le programme des conf&eacute;rences de cette quatri&egrave;me &eacute;dition du Forum XML &amp;amp; Int&eacute;gration e-business refl&egrave;te cette actualit&eacute; technique et les bilans tir&eacute;s des projets concrets men&eacute;s dans divers secteurs d&amp;#8217;activit&eacute;.&lt;/text:p&gt;   &lt;text:p text:style-name="Text body"&gt;Reflet de la richesse de cette actualit&eacute;, la partie exposition du Forum XML &amp;amp; Int&eacute;gration e-business regroupe, cette ann&eacute;e, plus de 80 acteurs, fournissseurs de solutions, diteurs de logiciels, prestataires de services. Les grands noms de l&amp;#8217;industrie c&ocirc;toieront des soci&eacute;t&eacute;s dont ce sera la premi&egrave;re apparition publique en France.&lt;/text:p&gt;   &lt;text:p text:style-name="Text body"&gt;Rendez-vous les 19, 20 et 21 novembre au Palais des Congr&egrave;s de Paris.&lt;/text:p&gt;   &lt;text:h text:style-name="Heading 2" text:level="2"&gt;Planning du Forum&lt;/text:h&gt;   &lt;text:p text:style-name="Text body"&gt;Le forum commencera par un jour de tutoriels, suivi de deux jours de conf&eacute;rences.&lt;/text:p&gt;   &lt;text:p text:style-name="Standard"/&gt;   &lt;table:table table:name="Tableau-PlanningTutoriels" table:style-name="Tableau-PlanningTutoriels"&gt;      &lt;table:table-column table:style-name="Tableau-PlanningTutoriels.A"/&gt;      &lt;table:table-column table:style-name="Tableau-PlanningTutoriels.B"/&gt;      &lt;table:table-column table:style-name="Tableau-PlanningTutoriels.C"/&gt;      &lt;table:table-column table:style-name="Tableau-PlanningTutoriels.D"/&gt;      &lt;table:table-column table:style-name="Tableau-PlanningTutoriels.B"/&gt;      &lt;table:table-column table:style-name="Tableau-PlanningTutoriels.C"/&gt;      &lt;table:table-column table:style-name="Tableau-PlanningTutoriels.D"/&gt;      &lt;table:table-column table:style-name="Tableau-PlanningTutoriels.B"/&gt;      &lt;table:table-column table:style-name="Tableau-PlanningTutoriels.C"/&gt;      &lt;table:table-column table:style-name="Tableau-PlanningTutoriels.D"/&gt;      &lt;table:table-column table:style-name="Tableau-PlanningTutoriels.B"/&gt;      &lt;table:table-column table:style-name="Tableau-PlanningTutoriels.C"/&gt;      &lt;table:table-column table:style-name="Tableau-PlanningTutoriels.D"/&gt;      &lt;table:table-column table:style-name="Tableau-PlanningTutoriels.B"/&gt;      &lt;table:table-column table:style-name="Tableau-PlanningTutoriels.C"/&gt;      &lt;table:table-column table:style-name="Tableau-PlanningTutoriels.P"/&gt;      &lt;table:table-row&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.A1" table:number-columns-spanned="16" table:value-type="string"&gt;            &lt;text:p text:style-name="Table Contents"&gt;               &lt;text:span text:style-name="T1"&gt;tutoriels du&lt;/text:span&gt;               &lt;text:span text:style-name="T1"&gt;                  &lt;text:bookmark-ref text:reference-format="page" text:ref-name="dateConf"/&gt;               &lt;/text:span&gt;            &lt;/text:p&gt;         &lt;/table:table-cell&gt;         &lt;table:covered-table-cell/&gt;         &lt;table:covered-table-cell/&gt;         &lt;table:covered-table-cell/&gt;         &lt;table:covered-table-cell/&gt;         &lt;table:covered-table-cell/&gt;         &lt;table:covered-table-cell/&gt;         &lt;table:covered-table-cell/&gt;         &lt;table:covered-table-cell/&gt;         &lt;table:covered-table-cell/&gt;         &lt;table:covered-table-cell/&gt;         &lt;table:covered-table-cell/&gt;         &lt;table:covered-table-cell/&gt;         &lt;table:covered-table-cell/&gt;         &lt;table:covered-table-cell/&gt;         &lt;table:covered-table-cell/&gt;      &lt;/table:table-row&gt;      &lt;table:table-row&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.A2" table:value-type="string"&gt;            &lt;text:p text:style-name="Table Contents"&gt;               &lt;text:span text:style-name="T2"&gt;                  &lt;text:bookmark-ref text:reference-format="page" text:ref-name="h1-mn"/&gt;               &lt;/text:span&gt;               &lt;text:span text:style-name="T2"/&gt;               &lt;text:span text:style-name="T2"&gt;                  &lt;text:bookmark-ref text:reference-format="page" text:ref-name="h2-mn"/&gt;               &lt;/text:span&gt;            &lt;/text:p&gt;         &lt;/table:table-cell&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.A2" table:value-type="string"&gt;            &lt;text:p text:style-name="Table Contents"/&gt;         &lt;/table:table-cell&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.A2" table:value-type="string"&gt;            &lt;text:p text:style-name="P1"&gt;               &lt;text:bookmark-ref text:reference-format="page" text:ref-name="code"/&gt;            &lt;/text:p&gt;         &lt;/table:table-cell&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.A2" table:value-type="string"&gt;            &lt;text:p text:style-name="P2"&gt;               &lt;text:bookmark-ref text:reference-format="page" text:ref-name="titre"/&gt;            &lt;/text:p&gt;            &lt;text:p text:style-name="P3"&gt;               &lt;text:bookmark-ref text:reference-format="page" text:ref-name="intervenant-soci&eacute;t&eacute;"/&gt;            &lt;/text:p&gt;         &lt;/table:table-cell&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.A2" table:value-type="string"&gt;            &lt;text:p text:style-name="Table Contents"/&gt;         &lt;/table:table-cell&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.A2" table:value-type="string"&gt;            &lt;text:p text:style-name="P1"&gt;               &lt;text:bookmark-ref text:reference-format="page" text:ref-name="code"/&gt;            &lt;/text:p&gt;         &lt;/table:table-cell&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.G2" table:value-type="string"&gt;            &lt;text:p text:style-name="P2"&gt;               &lt;text:bookmark-ref text:reference-format="page" text:ref-name="titre"/&gt;            &lt;/text:p&gt;            &lt;text:p text:style-name="P3"&gt;               &lt;text:bookmark-ref text:reference-format="page" text:ref-name="intervenant-soci&eacute;t&eacute;"/&gt;            &lt;/text:p&gt;         &lt;/table:table-cell&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.A2" table:value-type="string"&gt;            &lt;text:p text:style-name="Table Contents"/&gt;         &lt;/table:table-cell&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.A2" table:value-type="string"&gt;            &lt;text:p text:style-name="P1"&gt;               &lt;text:bookmark-ref text:reference-format="page" text:ref-name="code"/&gt;            &lt;/text:p&gt;         &lt;/table:table-cell&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.A2" table:value-type="string"&gt;            &lt;text:p text:style-name="P2"&gt;               &lt;text:bookmark-ref text:reference-format="page" text:ref-name="titre"/&gt;            &lt;/text:p&gt;            &lt;text:p text:style-name="P3"&gt;               &lt;text:bookmark-ref text:reference-format="page" text:ref-name="intervenant-soci&eacute;t&eacute;"/&gt;            &lt;/text:p&gt;         &lt;/table:table-cell&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.A2" table:value-type="string"&gt;            &lt;text:p text:style-name="Table Contents"/&gt;         &lt;/table:table-cell&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.A2" table:value-type="string"&gt;            &lt;text:p text:style-name="P1"&gt;               &lt;text:bookmark-ref text:reference-format="page" text:ref-name="code"/&gt;            &lt;/text:p&gt;         &lt;/table:table-cell&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.A2" table:value-type="string"&gt;            &lt;text:p text:style-name="P2"&gt;               &lt;text:bookmark-ref text:reference-format="page" text:ref-name="titre"/&gt;            &lt;/text:p&gt;            &lt;text:p text:style-name="P3"&gt;               &lt;text:bookmark-ref text:reference-format="page" text:ref-name="intervenant-soci&eacute;t&eacute;"/&gt;            &lt;/text:p&gt;         &lt;/table:table-cell&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.A2" table:value-type="string"&gt;            &lt;text:p text:style-name="P2"/&gt;         &lt;/table:table-cell&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.A2" table:value-type="string"&gt;            &lt;text:p text:style-name="P1"&gt;               &lt;text:bookmark-ref text:reference-format="page" text:ref-name="code"/&gt;            &lt;/text:p&gt;         &lt;/table:table-cell&gt;         &lt;table:table-cell table:style-name="Tableau-PlanningTutoriels.A2" table:value-type="string"&gt;            &lt;text:p text:style-name="P2"&gt;               &lt;text:bookmark-ref text:reference-format="page" text:ref-name="titre"/&gt;            &lt;/text:p&gt;            &lt;text:p text:style-name="P3"&gt;               &lt;text:bookmark-ref text:reference-format="page" text:ref-name="intervenant-soci&eacute;t&eacute;"/&gt;            &lt;/text:p&gt;         &lt;/table:table-cell&gt;      &lt;/table:table-row&gt;      ...   &lt;/table:table&gt; 			</pre> 		</td> 		</tr> 	</table>  	 			</td> 			</tr> 		</table> 	 	 	</div> 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">            	<br/>            	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.docfinal"> 	<h2 class="dossier">II-2 Le document final</h2> 	</a> 	<br>            	<p class="dossier"> 		La maquette est le pilote qui va permettre l'instanciation du document final, associ&eacute;e &agrave; un document XML contenant les donn&eacute;es &agrave; utiliser pour l'instanciation des &eacute;l&eacute;ments dynamiques.      	</p> 	            	<p class="dossier"> 		La structure du document final poss&egrave;de deux degr&eacute;s de libert&eacute;, dans la mesure o&ugrave; un &eacute;l&eacute;ment dynamique figurant dans la maquette n'est r&eacute;ellement instanci&eacute; que si la ou les donn&eacute;es associ&eacute;es sont r&eacute;ellement pr&eacute;sentes dans le document XML. Les instanciations sont donc toujours conditionnelles. 	<br/>      Le deuxi&egrave;me degr&eacute; de libert&eacute; provient du fait qu'un &eacute;l&eacute;ment dynamique n'est pas forc&eacute;ment instanci&eacute; qu'une seule fois; ainsi dans l'exemple de la  	 <a href="dossiers.2002-09-30.OpenOffice-maquette.php#maquette-planningForum.fig.1"><span style="color: purple">Figure 7</span></a>, le tableau du planning des tutoriels         n'est instanci&eacute; qu'une seule fois (parce qu'il n'y a qu'une seule journ&eacute;e de tutoriels), alors que le tableau du planning des conf&eacute;rences est instanci&eacute; deux fois, une fois pour chaque jour. 	<br/>      Dans le m&ecirc;me ordre id&eacute;e, on peut ajouter que les lignes d'un tableau dynamique ne sont pas forc&eacute;ment toutes instanci&eacute;es, et si elles le sont, elles ne sont pas forc&eacute;ment instanci&eacute;es qu'une seule fois : l&agrave; encore, le processus est enti&egrave;rement pilot&eacute; par les donn&eacute;es pr&eacute;sentes dans le document XML.      	</p> 	            	<p class="dossier"> 		Par contre, &eacute;tant donn&eacute; la fa&ccedil;on dont la maquette est faite, il est impossible que dans le document final, les deux tableaux soient intervertis; cela aurait toutefois &eacute;t&eacute; faisable en fusionnant les deux tableaux en un seul, et en instanciant des lignes au choix : en pr&eacute;sentant les donn&eacute;es du document XML dans le bon ordre, on pourrait donc obtenir l'effet recherch&eacute; (d'abord les conf&eacute;rences, ensuite les tutoriels). Toutefois cette forme de variabilit&eacute; du document final reste limit&eacute;e avec une maquette : on ne pourra jamais, par exemple, instancier le tableau des conf&eacute;rences apr&egrave;s le paragraphe des remerciements. 	<br/>      Mais le principe m&ecirc;me d'une maquette est pr&eacute;cis&eacute;ment de fournir le canevas de la structure g&eacute;n&eacute;rale du document final : on ne peut pas vouloir &agrave; la fois sp&eacute;cifier ce canevas dans la maquette et le contrarier &agrave; l'instanciation.      	</p> 	                           	<p class="dossier"> 		La plaquette finale &agrave; obtenir est montr&eacute;e ci dessous (voir  	 <a href="dossiers.2002-09-30.OpenOffice-maquette.php#plaquette-planningForum.fig.1"><span style="color: purple">Figure 8</span></a> et  	 <a href="dossiers.2002-09-30.OpenOffice-maquette.php#plaquette-planningForum.fig.2"><span style="color: purple">Figure 9</span></a>).           	</p> 	                					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	 	<p class="figure"> 		<a name="plaquette-planningForum.fig.1"> 		<img src="images/dossiers/dossiers.2002-09-30.plaquette-planningForum.1.gif" border="0"> 		<br/><b><i>Figure 8 : Page 1 du planning du Forum XML de l'ann&eacute;e 2001</i></b> 		</a> 	</p> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">                	<br/>                  					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	 	<p class="figure"> 		<a name="plaquette-planningForum.fig.2"> 		<img src="images/dossiers/dossiers.2002-09-30.plaquette-planningForum.2.gif" border="0"> 		<br/><b><i>Figure 9 : Page 2 du planning du Forum XML de l'ann&eacute;e 2001</i></b> 		</a> 	</p> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">           	<a name="SolutionOpenOffice.maquette.rem.1"> 	<div style="text-align: center;"> 		<table style=" 			margin-top: 1ex;  			border: thin ridge; 			width:70%;" 			> 			<tr> 			<td style=" 				margin-top: 1ex; 				width:70%; 				font-weight: bold  				"> 			Remarque 			</td> 			</tr> 			<tr> 			<td style=" 				font-family: sans-serif;  				text-align: justify;  				font-size: smaller 				"> 			Il faut noter que ici que la mise en page coupe le premier tableau des conf&eacute;rences en deux; il aurait tout &agrave; fait &eacute;t&eacute; possible de d&eacute;clarer (sous OpenOffice) ce tableau avec un titre &agrave; r&eacute;p&eacute;tition, de mani&egrave;re &agrave; ce qu'il soit automatiquement r&eacute;p&eacute;t&eacute; en cas de saut de page avant la fin du tableau.      			</td> 			</tr> 		</table> 		<br/> 	</div> 	</a>              	<p class="dossier"> 		L'instanciation du document final consiste donc &agrave; produire du code XML analogue &agrave; celui de la maquette (produit par OpenOffice), &agrave; ceci pr&egrave;s que les &eacute;l&eacute;ments dynamiques sont instanci&eacute;s autant de fois que n&eacute;cessaire, et en tenant compte des donn&eacute;es XML associ&eacute;es.      	</p> 	                           	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.instanciation"> 	<h2 class="dossier">II-3 Architecture g&eacute;n&eacute;rale du processus d'instanciation d'une maquette</h2> 	</a> 	<br>        	<p class="dossier"> 		Pour pouvoir effectivement instancier la maquette, il faut d&eacute;crire la fa&ccedil;on dont les donn&eacute;es XML doivent &ecirc;tre exploit&eacute;es.      	</p> 	            	<p class="dossier"> 		Pour cela, il y a essentiellement deux voies :      	</p> 	            	<ul class="dossier"> 	          	<li class="dossier"> 		             une voie directe, qui consiste &agrave; &eacute;crire &agrave; la main une transformation XSLT qui recopie les parties statiques de la maquette tout en instanciant les parties dynamiques sur la base d'un flux de donn&eacute;es XML;          	</li>           	<li class="dossier"> 		             une voie d&eacute;tourn&eacute;e, qui consiste &agrave; &eacute;crire d'abord une sp&eacute;cification XML de l'instanciation des parties dynamiques, puis &agrave; produire automatiquement (gr&acirc;ce &agrave; une transformation XSLT ad&eacute;quate) la tranformation XSLT qu'on aurait &eacute;crite si on avait utilis&eacute;e la voie directe.          	</li>       	</ul>            	<p class="dossier"> 		L'avantage de la deuxi&egrave;me voie est que la sp&eacute;cification XML de l'instanciation est beaucoup plus concise et facile &agrave; &eacute;crire que la transformation XSLT directe. En effet la transformation directe est loin d'&ecirc;tre triviale (avec un va-et-vient perp&eacute;tuel entre la source XML de la maquette et la source XML du flux de donn&eacute;es), et reste assez importante en volume de code &agrave; &eacute;crire. On gagne donc beaucoup<span style="vertical-align: super; font-size: smaller">(*)</span> &agrave; &eacute;crire une transformation XSLT (une sorte de compilateur, pourrait-on dire) produisant la transformation XSLT. Certes, ce compilateur n'est pas simple &agrave; &eacute;crire, mais il est &eacute;crit une fois pour toutes, et reste identique quelque soit la maquette (pourvu qu'elle respecte les quelques containtes indiqu&eacute;es plus haut) ou le jeu de donn&eacute;es qui va avec. 	<br/>      On aboutit alors globalement &agrave; une architecture r&eacute;sum&eacute;e &agrave; la figure  	 <a href="dossiers.2002-09-30.OpenOffice-maquette.php#architecture.fig.3"><span style="color: purple">Figure 10</span></a>.      	</p> 	 	 	<div align="right"> 		<table style=" 			width:40%;  			border-top-style: ridge;  			border-top-width: thin; 			"> 			<tr> 			<td style="font-family: cursive; text-align: justify; font-size: smaller"> 			<xsl:text>(*) </xsl:text> 			un facteur 3, environ 			</td> 			</tr> 		</table> 	</div> 	 	<br/> 	                      					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	 	<p class="figure"> 		<a name="architecture.fig.3"> 		<img src="images/dossiers/dossiers.2002-09-30.architecture.gif" border="0"> 		<br/><b><i>Figure 10 : Architecture de l'instanciation de document dynamique avec OpenOffice</i></b> 		</a> 	</p> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">                       	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.cible"> 	<h2 class="dossier">II-4 Donn&eacute;es pour l'instanciation des structures dynamiques de la maquette</h2> 	</a> 	<br>            	<p class="dossier"> 		Ces donn&eacute;es, au format XML, doivent se pr&eacute;senter dans un ordre compatible avec l'instanciation des &eacute;l&eacute;ments dynamiques de la maquette. Cela veut dire qu'il n'est pas possible d'accepter n'importe quel document XML, pourvu qu'il contienne les bonnes informations : encore faut-il qu'elles soient correctement ordonn&eacute;es. Il est donc indispensable qu'une application "m&eacute;tier" intervienne pour extraire d'une base de donn&eacute;es ou d'un gisement de donn&eacute;es XML les bonnes informations dans le bon ordre.      	</p> 	            	<p class="dossier"> 		Autrement dit, &agrave; supposer (pour simplifier) qu'il existe un gisement de donn&eacute;es XML donnant toutes les informations relatives au Forum XML, il est tr&egrave;s peu probable que ce gisement soit exploitable directement en l'&eacute;tat. Il faut une application qui va en extraire les informations pertinentes (par exemple n&eacute;gliger les r&eacute;sum&eacute;s des pr&eacute;sentations) pour la constitution d'un planning, et qui de plus, les ordonne ligne par ligne de tableau.      	</p> 	                      	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.Exemplebrutes"> 	<h3 class="dossier">II-4.a Exemple de donn&eacute;es XML brutes</h3> 	</a> 	<br>                 					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 		<table align="center" border="0" cellspacing="0" cellpadding="2"> 			<tr> 			<td align="left"> 				 	 	<table style=" 	padding: 1ex 1ex 1ex 1ex;  	border: thin ridge; 	border-color : dodgerblue; 	background-color: azure; 	font-weight: bold; 	margin-top: 1ex 	"> 		<tr> 		<td> 		Gisement de donn&eacute;es XML (extrait) 		</td> 		</tr> 	</table>       	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			 ...  &lt;session&gt;     &lt;code&gt;C01&lt;/code&gt;     &lt;d&eacute;nomination/&gt;     &lt;conf&eacute;rence&gt;        &lt;titre&gt;Usinor : la d&eacute;marche d&#146;urbanisation du Syst&egrave;me d&#146;Information&lt;/titre&gt;        &lt;r&eacute;sum&eacute;&gt;Cette intervention pr&eacute;sentera les &eacute;volutions majeures des infrastructures informatiques dans le contexte d&#146;une grande entreprise industrielle. Description de l&#146;approche de l&#146;urbanisation des syst&egrave;mes d&#146;information : les axes fonctionnel, organisationnel et technique (EAI). Les &eacute;changes BtB dans la sid&eacute;rurgie : les plates-formes d&#146;e-business. La cr&eacute;ation d&#146;un langage commun d&#146;&eacute;change pour les march&eacute;s de l&#146;acier (Steel Exchange Language) : objectifs et strat&eacute;gie, avancement, utilisation de XML.&lt;/r&eacute;sum&eacute;&gt;        &lt;intervenants&gt;           &lt;intervenantsDeSoci&eacute;t&eacute;&gt;              &lt;intervenant idRef="Jean-Pierre Delvaux"/&gt;              &lt;soci&eacute;t&eacute; idRef="Usinor"/&gt;           &lt;/intervenantsDeSoci&eacute;t&eacute;&gt;        &lt;/intervenants&gt;     &lt;/conf&eacute;rence&gt;     &lt;conf&eacute;rence&gt;        &lt;titre&gt;France Telecom : l&#146;int&eacute;gration des processus B2B, e-sales et e-procurement&lt;/titre&gt;        &lt;r&eacute;sum&eacute;&gt;L&#146;e-business contribue &agrave; d&eacute;mat&eacute;rialiser les processus intra et inter-entreprise. Pour les architectes de SI, l&#146;int&eacute;gration flexible est le probl&egrave;me majeur. Pour y r&eacute;pondre, il est possible de suivre une approche par assemblage de composants. L&#146;exp&eacute;rience a &eacute;t&eacute; tent&eacute;e &agrave; France Telecom R&amp;amp;D, sur deux domaines : la vente et l&#146;administration des ventes (e-sales), l&#146;approvisionnement et la gestion des achats (e-procurement). Cette approche s&#146;appuie sur la repr&eacute;sentation des processus m&eacute;tiers et leur projection technique sur une infrastructure EAI. Int&eacute;gration rapide des progiciels du march&eacute; et des composants existants du syst&egrave;me d&#146;information.&lt;/r&eacute;sum&eacute;&gt;        &lt;intervenants&gt;           &lt;intervenantsDeSoci&eacute;t&eacute;&gt;              &lt;intervenant idRef="Benoit Fontaine"/&gt;              &lt;soci&eacute;t&eacute; idRef="France Telecom R&amp;amp;D"/&gt;           &lt;/intervenantsDeSoci&eacute;t&eacute;&gt;        &lt;/intervenants&gt;     &lt;/conf&eacute;rence&gt;     &lt;conf&eacute;rence&gt;        &lt;titre&gt;XML, EAI et achats g&eacute;n&eacute;raux, une application dans les secteurs banque/assurance&lt;/titre&gt;        &lt;r&eacute;sum&eacute;&gt;La rationalisation des processus achats, coupl&eacute;e &agrave; l&#146;extension des relations &eacute;lectroniques avec ses partenaires, sont les conditions d&#146;adaptation d&#146;une entreprise &agrave; la vitesse de son environnement. Au-del&agrave; des impacts organisationnels, la technologie offre les conditions d&#146;une mise en &#156;uvre ma&icirc;tris&eacute;e et ouverte. Depuis la demande d&#146;achat formul&eacute;e sur un Intranet du client jusqu&#146;&agrave; l&#146;&eacute;mission de la facture et la livraison par le fournisseur, les informations &eacute;chang&eacute;es transitent via de nombreux syst&egrave;mes. Cette intervention montrera comment, dans le secteur banque-assurance, synchroniser les catalogues &eacute;lectroniques en s&#146;appuyant sur les vocabulaires XML standards et des protocoles Internet, comment assurer la transmission et la transformation des informations en s&#146;appuyant sur des EAI et, enfin, comme int&eacute;grer ERP et mainframe pour une fluidit&eacute; optimale des &eacute;changes.&lt;/r&eacute;sum&eacute;&gt;        &lt;intervenants&gt;           &lt;intervenantsDeSoci&eacute;t&eacute;&gt;              &lt;intervenant idRef="Michael Tartar"/&gt;              &lt;soci&eacute;t&eacute; idRef="Andersen"/&gt;           &lt;/intervenantsDeSoci&eacute;t&eacute;&gt;        &lt;/intervenants&gt;     &lt;/conf&eacute;rence&gt;  &lt;/session&gt;  ...  			</pre> 		</td> 		</tr> 	</table>  	 			</td> 			</tr> 		</table> 	 	 	</div> 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">             	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.Exempleextraction"> 	<h3 class="dossier">II-4.b Exemple de donn&eacute;es XML apr&egrave;s extraction</h3> 	</a> 	<br>                					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 		<table align="center" border="0" cellspacing="0" cellpadding="2"> 			<tr> 			<td align="left"> 				 	 	<table style=" 	padding: 1ex 1ex 1ex 1ex;  	border: thin ridge; 	border-color : dodgerblue; 	background-color: azure; 	font-weight: bold; 	margin-top: 1ex 	"> 		<tr> 		<td> 		Donn&eacute;es pour l'instanciation des structures dynamiques de la maquette (extrait) 		</td> 		</tr> 	</table>       	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			...  &lt;panelDeSessions&gt;          &lt;ent&ecirc;te.panelDeSessions&gt;         &lt;contenu.ent&ecirc;te.panelDeSessions&gt;             &lt;debut&gt;9:00&lt;/debut&gt;             &lt;fin&gt;10h30&lt;/fin&gt;             &lt;code index="1"&gt;C01&lt;/code&gt;             &lt;d&eacute;nomination index="1"/&gt;             &lt;code index="2"&gt;C02&lt;/code&gt;             &lt;d&eacute;nomination index="2"/&gt;             &lt;code index="3"&gt;C03&lt;/code&gt;             &lt;d&eacute;nomination index="3"/&gt;             &lt;code index="4"&gt;C04&lt;/code&gt;             &lt;d&eacute;nomination index="4"/&gt;         &lt;/contenu.ent&ecirc;te.panelDeSessions&gt;     &lt;/ent&ecirc;te.panelDeSessions&gt;          &lt;conf&eacute;rences.panelDeSessions&gt;         &lt;contenu.conf&eacute;rences.panelDeSessions&gt;             &lt;titre index="1"&gt;             Usinor : la d&eacute;marche d&#146;urbanisation du Syst&egrave;me d&#146;Information             &lt;/titre&gt;             &lt;intervenants index="1"&gt;Jean-Pierre Delvaux, Usinor&lt;/intervenants&gt;             &lt;titre index="2"&gt;             La r&eacute;utilisation des donn&eacute;es avec XSL             &lt;/titre&gt;             &lt;intervenants index="2"&gt;             Mark Colan, IBM&lt;/intervenants&gt;             &lt;titre index="3"&gt;             Panorama et situation des standards XML             &lt;/titre&gt;             &lt;intervenants index="3"&gt;             Jeanne El Andaloussi, i4i&lt;/intervenants&gt;             &lt;titre index="4"&gt;             Architecture technique des Web Services             &lt;/titre&gt;             &lt;intervenants index="4"&gt;             Habib Guergachi, Groupe SQLI&lt;/intervenants&gt;         &lt;/contenu.conf&eacute;rences.panelDeSessions&gt;     &lt;/conf&eacute;rences.panelDeSessions&gt;          &lt;conf&eacute;rences.panelDeSessions&gt;         &lt;contenu.conf&eacute;rences.panelDeSessions&gt;             &lt;titre index="1"&gt;             France Telecom : l&#146;int&eacute;gration des processus B2B, e-sales et e-procurement             &lt;/titre&gt;             &lt;intervenants index="1"&gt;Benoit Fontaine, France Telecom R&amp;amp;D&lt;/intervenants&gt;             &lt;titre index="2"&gt;             Les nouveaux standards XSLT &amp;amp; XQuery : concepts et usages             &lt;/titre&gt;             &lt;intervenants index="2"&gt;Michael Kay, Software AG&lt;/intervenants&gt;             &lt;titre index="3"&gt;             XML Schema : un nouveau standard pour la mod&eacute;lisation de donn&eacute;es XML             &lt;/titre&gt;             &lt;intervenants index="3"&gt;             Fran&ccedil;ois Chahuneau, Berger Levrault&lt;/intervenants&gt;             &lt;titre index="4"&gt;             Comparaison des architectures : Microsoft.Net et Sun-One Panorama des solutions Web Services             &lt;/titre&gt;             &lt;intervenants index="4"&gt;             Jean-Christophe Cimeti&egrave;re &amp;amp; Nicolas Farges, TechMetrix Research&lt;/intervenants&gt;         &lt;/contenu.conf&eacute;rences.panelDeSessions&gt;     &lt;/conf&eacute;rences.panelDeSessions&gt;          &lt;conf&eacute;rences.panelDeSessions&gt;         &lt;contenu.conf&eacute;rences.panelDeSessions&gt;             &lt;titre index="1"&gt;             XML, EAI et achats g&eacute;n&eacute;raux, une application dans les secteurs banque/assurance             &lt;/titre&gt;             &lt;intervenants index="1"&gt;Michael Tartar, Andersen&lt;/intervenants&gt;             &lt;titre index="2"&gt;&lt;/titre&gt;             &lt;intervenants index="2"&gt;&lt;/intervenants&gt;             &lt;titre index="3"&gt;&lt;/titre&gt;             &lt;intervenants index="3"&gt;&lt;/intervenants&gt;             &lt;titre index="4"&gt;&lt;/titre&gt;             &lt;intervenants index="4"&gt;&lt;/intervenants&gt;         &lt;/contenu.conf&eacute;rences.panelDeSessions&gt;     &lt;/conf&eacute;rences.panelDeSessions&gt; &lt;/panelDeSessions&gt; ...  			</pre> 		</td> 		</tr> 	</table>  	 			</td> 			</tr> 		</table> 	 	 	</div> 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">        	<br/>        	<p class="dossier"> 		On voit donc le travail que doit accomplir l'application d'extraction : ignorer certaines informations (par exemple les r&eacute;sum&eacute;s, qui ne figurent pas dans le planning), en synth&eacute;tiser certaines &agrave; partir d'&eacute;l&eacute;ments disparates (par exemple l'association d'un nom d'intervenant et de sa soci&eacute;t&eacute;), et finalement rassembler et regrouper les autres de telle sorte que la structure ligne par ligne des tableaux figurant dans la maquette se retrouve dans l'ordre de lecture s&eacute;quentielle du document.      	</p> 	            	<p class="dossier"> 		Une telle application peut tr&egrave;s bien &ecirc;tre con&ccedil;ue de fa&ccedil;on monolithique : elle exploite une source de donn&eacute;es, et produit un flux XML. Mais il est pr&eacute;f&eacute;rable de la concevoir en deux parties, suivant le paradigme producteur/consommateur.      	</p> 	       	 	<p class="dossier"> 		L'avantage d'une architecture &agrave; base de producteur et consommateur s&eacute;par&eacute;s, est qu'elle induit une bonne r&eacute;utilisabilit&eacute; du code applicatif. En effet, le consommateur aura toujours exactement la m&ecirc;me structure, et pourra de plus &ecirc;tre g&eacute;n&eacute;r&eacute; automatiquement. D'une application &agrave; l'autre, les variations porteront exclusivement sur le producteur, dont le but sera d'alimenter une file d'attente d'&eacute;v&egrave;nements, &agrave; partir des donn&eacute;es originelles, de la logique m&eacute;tier d'exploitation, et des contraintes d'ordre d'apparition des donn&eacute;es impos&eacute;es par l'instanciation de la maquette. Si les donn&eacute;es proviennent d'une base de donn&eacute;es et que la logique m&eacute;tier d'extraction et de pr&eacute;sentation des donn&eacute;es n'est pas simple et directe, il faut pr&eacute;voir la mise en place d'une "couche d'objets m&eacute;tier", car cela permet une s&eacute;paration en deux phases bien distinctes : une phase d'initialisation des objets m&eacute;tier d'apr&egrave;s le r&eacute;sultat de requ&ecirc;tes SQL ad&eacute;quates, refl&egrave;tant la logique m&eacute;tier d'extraction, suivie d'une phase d'exploitation de cet ensemble d'objets m&eacute;tier afin de tenir compte de la logique de pr&eacute;sentation.  	 	</p> 	  	 	 	<p class="dossier"> 		Le consommateur, quant &agrave; lui, aura toujours une structure d'automate &agrave; &eacute;tats, exploitant une file d'&eacute;v&egrave;nements et produisant un arbre XML; le graphe de cet automate pourra &ecirc;tre d&eacute;duit de la sp&eacute;cification de l'instanciation de la maquette, et c'est ce qui permet d'envisager une g&eacute;n&eacute;ration automatique. 	 	</p> 	  	                	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.spec.instanciation"> 	<h2 class="dossier">II-5 Sp&eacute;cification de l'instanciation des &eacute;l&eacute;ments dynamiques de la maquette</h2> 	</a> 	<br>        	<p class="dossier"> 		C'est &agrave; partir de cette sp&eacute;cification que la transformation XSLT produisant le document final sera g&eacute;n&eacute;r&eacute;e (par le compilateur dont il est question plus haut, cf  	 <a href="dossiers.2002-09-30.OpenOffice-maquette.php#SolutionOpenOffice.instanciation"><span style="color: purple">II-3 Architecture g&eacute;n&eacute;rale du processus d'instanciation d'une maquette</span></a>.)      	</p> 	            	<p class="dossier"> 		L'avantage d'une telle sp&eacute;cification, ainsi que nous l'avons d&eacute;j&agrave; dit, est qu'elle est beaucoup plus simple &agrave; &eacute;crire que la transformation XSLT correspondante : toute la complexit&eacute; de la transformation XSLT de production du document final est masqu&eacute;e, et seuls apparaissent les &eacute;l&eacute;ments r&eacute;ellement pertinents, c'est-&agrave;-dire ceux qui expriment les relations entre la maquette, le document final et les donn&eacute;es associ&eacute;es. 	<br/>      Voici, pour fixer les id&eacute;es, un large extrait de cette sp&eacute;cification, d&eacute;crivant l'instanciation du planning des tutoriels :      	</p> 	                 					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 		<table align="center" border="0" cellspacing="0" cellpadding="2"> 			<tr> 			<td align="left"> 				 	 	<table style=" 	padding: 1ex 1ex 1ex 1ex;  	border: thin ridge; 	border-color : dodgerblue; 	background-color: azure; 	font-weight: bold; 	margin-top: 1ex 	"> 		<tr> 		<td> 		Directives d'instanciation (extrait) 		</td> 		</tr> 	</table>       	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;  &lt;directives-instanciation-maquette     xmlns:table="http://openoffice.org/2000/table"     xmlns:draw="http://openoffice.org/2000/drawing" &gt;      &lt;maquette&gt;         &lt;field name="datesForum"&gt;             &lt;espace/&gt;             &lt;value-of select="/document/planningForum/dates"/&gt;         &lt;/field&gt;         &lt;&eacute;l&eacute;ments-dynamiques&gt;             &lt;planningTutoriels/&gt;             &lt;planningConf&eacute;rences/&gt;         &lt;/&eacute;l&eacute;ments-dynamiques&gt;     &lt;/maquette&gt;          &lt;planningTutoriels         local-template="table:table[@table:name='Tableau-PlanningTutoriels']"         applies-to="table:table[@table:name='Tableau-PlanningTutoriels']"         sourceDataElement="/document/planningForum/planningTutoriels"         container-type="table"         table-name="Tableau-PlanningTutoriels"         &gt;         &lt;one&gt;             &lt;titreTutoriel /&gt;         &lt;/one&gt;         &lt;one&gt;             &lt;panelTutoriels /&gt;         &lt;/one&gt;         &lt;zero.more&gt;             &lt;s&eacute;parationPanelTutoriels /&gt;             &lt;panelTutoriels /&gt;         &lt;/zero.more&gt;     &lt;/planningTutoriels&gt;          &lt;titreTutoriel           applies-to="table:table[@table:name='Tableau-PlanningTutoriels']/table:table-row[1]"         local-template="$parent-template/table:table-row[1]"         template-instanciation="output"&gt;         &lt;output template="$local-template"&gt;             &lt;field name="dateConf"&gt;                 &lt;espace/&gt;                 &lt;value-of select="date/jour"/&gt;                 &lt;espace/&gt;                 &lt;value-of select="date/mois"/&gt;                 &lt;espace/&gt;                 &lt;value-of select="date/ann&eacute;e"/&gt;             &lt;/field&gt;         &lt;/output&gt;     &lt;/titreTutoriel&gt;          &lt;panelTutoriels          applies-to="table:table[@table:name='Tableau-PlanningTutoriels']/table:table-row[2]"         local-template="$parent-template/table:table-row[2]"         template-instanciation="local-template"&gt;         &lt;one&gt;             &lt;plageHoraire/&gt;         &lt;/one&gt;         &lt;one.more&gt;             &lt;tutoriel/&gt;         &lt;/one.more&gt;     &lt;/panelTutoriels&gt;          &lt;plageHoraire local-template="$parent-template/table:table-cell[1]"         template-instanciation="output"&gt;         &lt;output template="$local-template"&gt;             &lt;field name="h1-mn"&gt;                 &lt;value-of select="./debut"/&gt;             &lt;/field&gt;             &lt;field name="h2-mn"&gt;                 &lt;value-of select="./fin"/&gt;             &lt;/field&gt;         &lt;/output&gt;     &lt;/plageHoraire&gt;          &lt;tutoriel          index="position() - 1"          local-template="$parent-template"         template-instanciation="output"&gt;                  &lt;output template="$local-template/table:table-cell[ 2 + ($index - 1) * 3 ]"/&gt;         &lt;output template="$local-template/table:table-cell[ 3 + ($index - 1) * 3 ]"&gt;             &lt;field name="code"&gt;                 &lt;value-of select="./code"/&gt;             &lt;/field&gt;         &lt;/output&gt;         &lt;output template="$local-template/table:table-cell[ 4 + ($index - 1) * 3 ]"&gt;             &lt;field name="titre"&gt;                 &lt;value-of select="./titre"/&gt;             &lt;/field&gt;             &lt;field name="intervenant-soci&eacute;t&eacute;"&gt;                 &lt;value-of select="./intervenants"/&gt;             &lt;/field&gt;         &lt;/output&gt;     &lt;/tutoriel&gt;          &lt;s&eacute;parationPanelTutoriels local-template="$parent-template"         template-instanciation="output"&gt;         &lt;output template="$local-template/table:table-row[3]"/&gt;     &lt;/s&eacute;parationPanelTutoriels&gt;               &lt;planningConf&eacute;rences         local-template="table:table[@table:name='Tableau-PlanningConf&eacute;rences']"         applies-to="table:table[@table:name='Tableau-PlanningConf&eacute;rences']"         sourceDataElement="/document/planningForum/planningConf&eacute;rences"         container-type="table"         table-name="Tableau-PlanningConf&eacute;rences"         &gt;         &lt;one&gt;             &lt;titreConf&eacute;rences /&gt;         &lt;/one&gt;         &lt;zero.one&gt;             &lt;sessionPl&eacute;ni&egrave;re /&gt;             &lt;s&eacute;parationSessionPl&eacute;ni&egrave;re /&gt;         &lt;/zero.one&gt;         &lt;one&gt;             &lt;panelDeSessions /&gt;         &lt;/one&gt;         &lt;zero.more&gt;             &lt;s&eacute;parationPanelDeSessions /&gt;             &lt;panelDeSessions /&gt;         &lt;/zero.more&gt;     &lt;/planningConf&eacute;rences&gt;          ...          &lt;sessionPl&eacute;ni&egrave;re template-instanciation="null"&gt;         &lt;one&gt;             &lt;ent&ecirc;te.sessionPl&eacute;ni&egrave;re/&gt;         &lt;/one&gt;         &lt;one&gt;             &lt;session.sessionPl&eacute;ni&egrave;re/&gt;         &lt;/one&gt;     &lt;/sessionPl&eacute;ni&egrave;re&gt;          ...      &lt;/directives-instanciation-maquette&gt;  			</pre> 		</td> 		</tr> 	</table>  	 			</td> 			</tr> 		</table> 	 	 	</div> 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">        	<p class="dossier"> 		Cette sp&eacute;cification est donc essentiellement compos&eacute;e de deux parties, une premi&egrave;re partie repr&eacute;sent&eacute;e par l'&eacute;l&eacute;ment  <span style="font-family: monospace; color: blue">&lt;maquette&gt;</span>, qui donne la valeur des champs globaux et qui identifie les parties dynamiques, et une deuxi&egrave;me partie compos&eacute;e du reste, constituant la sp&eacute;cification proprement dite de l'instanciation de ces parties dynamiques.      	</p> 	            	<p class="dossier"> 		On pourrait &eacute;ventuellement s'&eacute;tonner de l'absence d'&eacute;l&eacute;ments XML d&eacute;crivant l'instanciation du camembert de r&eacute;partition. En fait, il n'y a strictement rien &agrave; sp&eacute;cifier : l'instanciation d'un tel diagramme est triviale, et se r&eacute;duit au remplacement des valeurs num&eacute;riques fantaisistes issues de la maquette par les vraies valeurs issues du flux XML de donn&eacute;es.      	</p> 	                        	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.champsglobaux"> 	<h3 class="dossier">II-5.a Description des champs globaux</h3> 	</a> 	<br>            	<p class="dossier"> 		Ces champs ont la m&ecirc;me valeur quelque soit leur emplacement dans la maquette. On peut donc les d&eacute;finir une fois pour toutes, &agrave; l'aide d'expressions XPath, indiquant comment pr&eacute;lever leur valeur dans le flux XML de donn&eacute;es associ&eacute;es.     Il en est ainsi du champ  <span style="font-family: monospace; color: blue">datesForum</span>, dont la valeur de remplacement est &agrave; construire &agrave; partir de l'&eacute;l&eacute;ment  <span style="font-family: monospace; color: blue">dates</span>  du flux XML :      	</p> 	                                  					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 		<table align="center" border="0" cellspacing="0" cellpadding="2"> 			<tr> 			<td align="left"> 				 	 	<table style=" 	padding: 1ex 1ex 1ex 1ex;  	border: thin ridge; 	border-color : dodgerblue; 	background-color: azure; 	font-weight: bold; 	margin-top: 1ex 	"> 		<tr> 		<td> 		Directives d'instanciation (extrait) 		</td> 		</tr> 	</table>       	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;  &lt;directives-instanciation-maquette     xmlns:table="http://openoffice.org/2000/table"     xmlns:draw="http://openoffice.org/2000/drawing" &gt;      &lt;maquette&gt;         &lt;field name="datesForum"&gt;             &lt;espace/&gt;             &lt;value-of select="/document/planningForum/dates"/&gt;         &lt;/field&gt;         &lt;&eacute;l&eacute;ments-dynamiques&gt;             &lt;planningTutoriels/&gt;             &lt;planningConf&eacute;rences/&gt;         &lt;/&eacute;l&eacute;ments-dynamiques&gt;     &lt;/maquette&gt;     ...      &lt;/directives-instanciation-maquette&gt;  			</pre> 		</td> 		</tr> 	</table>  	 			</td> 			</tr> 		</table> 	 	 	</div> 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">            	<br/>                					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 		<table align="center" border="0" cellspacing="0" cellpadding="2"> 			<tr> 			<td align="left"> 				 	 	<table style=" 	padding: 1ex 1ex 1ex 1ex;  	border: thin ridge; 	border-color : dodgerblue; 	background-color: azure; 	font-weight: bold; 	margin-top: 1ex 	"> 		<tr> 		<td> 		Flux de donn&eacute;es (extrait) 		</td> 		</tr> 	</table>       	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			&lt;?xml version="1.0" encoding="iso-8859-1"?&gt; &lt;document&gt;     &lt;planningForum&gt;         &lt;dates&gt;19, 20 et 21 Novembre 2001&lt;/dates&gt;         &lt;planningTutoriels&gt;             ...         &lt;/planningTutoriels&gt;         &lt;planningConf&eacute;rences&gt;             ...         &lt;/planningConf&eacute;rences&gt;     &lt;/planningForum&gt; &lt;/document&gt;  			</pre> 		</td> 		</tr> 	</table>  	 			</td> 			</tr> 		</table> 	 	 	</div> 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">            	<br/>            	<p class="dossier"> 		L'instanciation du champ  <span style="font-family: monospace; color: blue">datesForum</span>  se fera donc sous la forme de la cha&icirc;ne de caract&egrave;res "<span style="font-family: monospace; color: blue"> 19, 20 et 21 Novembre 2001</span>" (qui commence par un espace).      	</p> 	                    	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.partiesdynamiques"> 	<h3 class="dossier">II-5.b Description des &eacute;l&eacute;ments de l'instanciation des parties dynamiques</h3> 	</a> 	<br>            	<p class="dossier"> 		Si l'on regarde l'extrait ci-dessus  	 <a href="dossiers.2002-09-30.OpenOffice-maquette.php#SolutionOpenOffice.spec.instanciation"><span style="color: purple">II-5 Sp&eacute;cification de l'instanciation des &eacute;l&eacute;ments dynamiques de la maquette</span></a>, essentiellement constitu&eacute; de la sp&eacute;cification de l'instanciation du planning des tutoriels (un peu plus simple que celle des conf&eacute;rences), on peut constater qu'il y a quatre sortes d'&eacute;l&eacute;ments, comme expliqu&eacute; maintenant.      	</p> 	                  	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.partiesdynamiques.type.1"> 	<h4 class="dossier">II-5.b 1 El&eacute;ments de type 1</h4> 	</a> 	<br>            	<p class="dossier"> 		Ce sont des &eacute;l&eacute;ments annonc&eacute;s dans  <span style="font-family: monospace; color: blue">&lt;&eacute;l&eacute;ments-dynamiques&gt;</span>  de  <span style="font-family: monospace; color: blue">&lt;maquette&gt;</span>; ils constituent les points d'entr&eacute;e de la sp&eacute;cification de l'instanciation. On y trouve des attributs indiquant les propri&eacute;t&eacute;s de la structure &agrave; instancier, ainsi que des &eacute;l&eacute;ments donnant la forme g&eacute;n&eacute;rale du corps de la structure dynamique (&eacute;l&eacute;ments  <span style="font-family: monospace; color: blue">&lt;one&gt;, &lt;zero.more&gt;</span>, et d'autres du m&ecirc;me genre).      	</p> 	       	<p class="dossier"> 		Par exemple :      	</p> 	                                                                      					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			          &lt;planningTutoriels         local-template="table:table[@table:name='Tableau-PlanningTutoriels']"         applies-to="table:table[@table:name='Tableau-PlanningTutoriels']"         sourceDataElement="/document/planningForum/planningTutoriels"         container-type="table"         table-name="Tableau-PlanningTutoriels"         &gt;         &lt;one&gt;             &lt;titreTutoriel /&gt;         &lt;/one&gt;         &lt;one&gt;             &lt;panelTutoriels /&gt;         &lt;/one&gt;         &lt;zero.more&gt;             &lt;s&eacute;parationPanelTutoriels /&gt;             &lt;panelTutoriels /&gt;         &lt;/zero.more&gt;     &lt;/planningTutoriels&gt; 			</pre> 		</td> 		</tr> 	</table> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">                                                  	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.partiesdynamiques.type.2"> 	<h4 class="dossier">II-5.b 2 El&eacute;ments de type 2</h4> 	</a> 	<br>                      	<p class="dossier"> 		Ce sont des &eacute;l&eacute;ments d&eacute;crivant une instanciation de fragment de document, et caract&eacute;ris&eacute;s par la pr&eacute;sence d'un attribut  <span style="font-family: monospace; color: blue">template-instanciation</span>  &eacute;gal &agrave;  <span style="font-family: monospace; color: blue">output</span>.      	</p> 	            	<p class="dossier"> 		Par exemple :      	</p> 	                                                      					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			          &lt;titreTutoriel           applies-to="table:table[@table:name='Tableau-PlanningTutoriels']/table:table-row[1]"         local-template="$parent-template/table:table-row[1]"         template-instanciation="output"&gt;         &lt;output template="$local-template"&gt;             &lt;field name="dateConf"&gt;                 &lt;espace/&gt;                 &lt;value-of select="date/jour"/&gt;                 &lt;espace/&gt;                 &lt;value-of select="date/mois"/&gt;                 &lt;espace/&gt;                 &lt;value-of select="date/ann&eacute;e"/&gt;             &lt;/field&gt;         &lt;/output&gt;     &lt;/titreTutoriel&gt; 			</pre> 		</td> 		</tr> 	</table> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">                                                            	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.partiesdynamiques.type.3"> 	<h4 class="dossier">II-5.b 3 El&eacute;ments de type 3</h4> 	</a> 	<br>                        	<p class="dossier"> 		Ce sont des &eacute;l&eacute;ments d&eacute;crivant une instanciation de coquille structurelle, et caract&eacute;ris&eacute;s par la pr&eacute;sence d'un attribut  <span style="font-family: monospace; color: blue">template-instanciation</span>  &eacute;gal &agrave;  <span style="font-family: monospace; color: blue">local-template</span>.  	</p> 	        	<p class="dossier"> 		Par exemple :      	</p> 	                            					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			          &lt;panelTutoriels          applies-to="table:table[@table:name='Tableau-PlanningTutoriels']/table:table-row[2]"         local-template="$parent-template/table:table-row[2]"         template-instanciation="local-template"&gt;         &lt;one&gt;             &lt;plageHoraire/&gt;         &lt;/one&gt;         &lt;one.more&gt;             &lt;tutoriel/&gt;         &lt;/one.more&gt;     &lt;/panelTutoriels&gt; 			</pre> 		</td> 		</tr> 	</table> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">                                                   	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.partiesdynamiques.type.4"> 	<h4 class="dossier">II-5.b 4 El&eacute;ments de type 4</h4> 	</a> 	<br>                                      	<p class="dossier"> 		Et pour finir, un dernier type d'&eacute;l&eacute;ments, qui ne d&eacute;crivent aucune instanciation, mais seulement une forme g&eacute;n&eacute;rale de partie de corps de structure dynamique, et caract&eacute;ris&eacute;s par la pr&eacute;sence d'un attribut  <span style="font-family: monospace; color: blue">template-instanciation</span>  gal &agrave;  <span style="font-family: monospace; color: blue">null</span>.      	</p> 	                            	<p class="dossier"> 		Par exemple (cet exemple n'est pas tir&eacute; de l'instanciation du planning des tutoriels, mais de celui des conf&eacute;rences) :      	</p> 	                                                 					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			          &lt;sessionPl&eacute;ni&egrave;re template-instanciation="null"&gt;         &lt;one&gt;             &lt;ent&ecirc;te.sessionPl&eacute;ni&egrave;re/&gt;         &lt;/one&gt;         &lt;one&gt;             &lt;session.sessionPl&eacute;ni&egrave;re/&gt;         &lt;/one&gt;     &lt;/sessionPl&eacute;ni&egrave;re&gt; 			</pre> 		</td> 		</tr> 	</table> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">                                       	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.Elaboration"> 	<h2 class="dossier">II-6 Elaboration d'une sp&eacute;cification d'instanciation de maquette (exemple du planning de tutoriels) </h2> 	</a> 	<br>            	<p class="dossier"> 		L'&eacute;laboration se fait en comparant la maquette au document final &agrave; obtenir : on en d&eacute;duit ceux des &eacute;l&eacute;ments dynamiques de la maquette qu'il faut instancier, et par l&agrave; m&ecirc;me, la structure XML des donn&eacute;es associ&eacute;es qui doivent se pr&eacute;senter au moment de l'instanciation.      	</p> 	            	<p class="dossier"> 		Par exemple, si l'on reprend le planning des tutoriels, on voit que ce planning est instanci&eacute; sous la forme d'une table. On commence donc la description par la d&eacute;claration d'un point d'entr&eacute;e correspondant &agrave; la d&eacute;claration d'une table. 	<br/>      On s'engage alors dans un processus par &eacute;tapes dans lequel il faut d&eacute;composer des structures complexes en structures de plus en plus simples.      	</p> 	                       	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.Elaboration.1"> 	<h3 class="dossier">II-6.a Etape 1 : sp&eacute;cification du point d'entr&eacute;e  <span style="font-family: monospace; color: blue">&lt;planningTutoriels&gt;</span> </h3> 	</a> 	<br>            	<p class="dossier"> 		Comme on l'a dit, le point d'entr&eacute;e correspond &agrave; une description de table :      	</p> 	                                					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			          &lt;planningTutoriels         local-template="table:table[@table:name='Tableau-PlanningTutoriels']"         applies-to="table:table[@table:name='Tableau-PlanningTutoriels']"         sourceDataElement="/document/planningForum/planningTutoriels"         container-type="table"         table-name="Tableau-PlanningTutoriels"         &gt;         ...     &lt;/planningTutoriels&gt; 			</pre> 		</td> 		</tr> 	</table> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">                  	<ul class="dossier"> 	          	<li class="dossier"> 		             L'attribut  <span style="font-family: monospace; color: blue">container-type</span>  indique que la structure &agrave; instancier est une structure de table.          	</li>           	<li class="dossier"> 		             L'attribut  <span style="font-family: monospace; color: blue">table-name</span>  permet de sp&eacute;cifier de quelle table il s'agit. En effet, OpenOffice permet de donner un nom aux structures de table. Et de fait, si l'on se   reporte au d&eacute;but du code XML produit par OpenOffice (cf  	 <a href="dossiers.2002-09-30.OpenOffice-maquette.php#SolutionOpenOffice.maquette"><span style="color: purple">II-1 La maquette, point de d&eacute;part de la g&eacute;n&eacute;ration du document</span></a>), on voit que la table vis&eacute;e est bien celle nomm&eacute;e  <span style="font-family: monospace; color: blue">Tableau-PlanningTutoriels</span>.          	</li>           	<li class="dossier"> 		             L'attribut  <span style="font-family: monospace; color: blue">applies-to</span>  indique le nom de l'&eacute;l&eacute;ment dans la maquette XML correspondant &agrave; cette table.          	</li>           	<li class="dossier"> 		             L'attribut  <span style="font-family: monospace; color: blue">local-template</span>  indique le nom de l'&eacute;l&eacute;ment dans la maquette XML qu'il va falloir instancier. Dans le cas d'un point d'entr&eacute;e (et c'est la cas ici), les attributs  <span style="font-family: monospace; color: blue">applies-to</span>  et  <span style="font-family: monospace; color: blue">local-template</span>  sont toujours &eacute;gaux.          	</li>           	<li class="dossier"> 		             L'attribut  <span style="font-family: monospace; color: blue">sourceDataElement</span>  indique l'&eacute;l&eacute;ment, dans le flux XML de donn&eacute;es, qui doit d&eacute;clencher l'instanciation.          	</li>       	</ul>            	<a name="rem.1.SolutionOpenOffice.Elaboration"> 	<div style="text-align: center;"> 		<table style=" 			margin-top: 1ex;  			border: thin ridge; 			width:70%;" 			> 			<tr> 			<td style=" 				margin-top: 1ex; 				width:70%; 				font-weight: bold  				"> 			Remarque 			</td> 			</tr> 			<tr> 			<td style=" 				font-family: sans-serif;  				text-align: justify;  				font-size: smaller 				"> 			Ces diff&eacute;rents attributs fournissent des informations parfois redondantes, mais c'est uniquement pour faciliter la g&eacute;n&eacute;ration automatique de la transformation XSLT attendue.      			</td> 			</tr> 		</table> 		<br/> 	</div> 	</a>            	<p class="dossier"> 		Puis l'on donne la structure des donn&eacute;es qui doivent n&eacute;cessairement se pr&eacute;senter pour que l'instanciation puisse avoir lieu tout en &eacute;tant correctement aliment&eacute;e avec les bonnes informations :      	</p> 	                                 					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			          &lt;planningTutoriels         local-template="table:table[@table:name='Tableau-PlanningTutoriels']"         applies-to="table:table[@table:name='Tableau-PlanningTutoriels']"         sourceDataElement="/document/planningForum/planningTutoriels"         container-type="table"         table-name="Tableau-PlanningTutoriels"         &gt;         &lt;one&gt;             &lt;titreTutoriel/&gt;         &lt;/one&gt;         &lt;one&gt;             &lt;panelTutoriels/&gt;         &lt;/one&gt;         &lt;zero.more&gt;             &lt;s&eacute;parationPanelTutoriels/&gt;             &lt;panelTutoriels/&gt;         &lt;/zero.more&gt;     &lt;/planningTutoriels&gt; 			</pre> 		</td> 		</tr> 	</table> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">            	<p class="dossier"> 		Ici, l'on sp&eacute;cifie donc que les donn&eacute;es correspondantes doivent se pr&eacute;senter sous la forme d'un et un seul &eacute;l&eacute;ment  <span style="font-family: monospace; color: blue">&lt;titreTutoriel/&gt;</span>, suivi d'un et un seul &eacute;l&eacute;ment  <span style="font-family: monospace; color: blue">&lt;panelTutoriels/&gt;</span>, suivi de z&eacute;ro ou plusieurs s&eacute;quences compos&eacute;es d'un et un seul &eacute;l&eacute;ment  <span style="font-family: monospace; color: blue">&lt;s&eacute;parationPanelTutoriels/&gt;</span>  suivi d'un et un seul &eacute;l&eacute;ment  <span style="font-family: monospace; color: blue">&lt;panelTutoriels/&gt;</span>.      	</p> 	            	<p class="dossier"> 		Et effectivement, si l'on regarde &agrave; nouveau l'allure du document final pour le planning des tutoriels (cf  	 <a href="dossiers.2002-09-30.OpenOffice-maquette.php#maquette-planningForum.fig.5"><span style="color: purple">Figure 11</span></a>), on constate bien cette structure.      	</p> 	                          					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	 	<p class="figure"> 		<a name="maquette-planningForum.fig.5"> 		<img src="images/dossiers/dossiers.2002-09-30.tutoriels-extrait.gif" border="0"> 		<br/><b><i>Figure 11 : Structure des lignes et colonnes du planning de tutoriels</i></b> 		</a> 	</p> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">                	<br/>            	<p class="dossier"> 		La premi&egrave;re ligne ne contient qu'une seule colonne, correspondant &agrave;  <span style="font-family: monospace; color: blue">&lt;titreTutoriel/&gt;</span>.      	</p> 	            	<p class="dossier"> 		Ensuite on trouve des lignes de panels de tutoriels (<span style="font-family: monospace; color: blue">&lt;panelTutoriels/&gt;</span>), constitu&eacute;e d'un horaire et des informations relatives aux tutoriels simultan&eacute;s pour cet horaire, ces panels &eacute;tant s&eacute;par&eacute;s par une ligne de traits bleus (<span style="font-family: monospace; color: blue">&lt;s&eacute;parationPanelTutoriels/&gt;</span>).      	</p> 	            	<p class="dossier"> 		Correlativement, les donn&eacute;es XML suivent la m&ecirc;me structure :      	</p> 	                                      					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			 &lt;document&gt;     &lt;planningForum&gt;         &lt;dates&gt;19, 20 et 21 Novembre 2001&lt;/dates&gt;         &lt;planningTutoriels&gt;             &lt;titreTutoriel&gt;                 ...             &lt;/titreTutoriel&gt;             &lt;panelTutoriels&gt;                 ...             &lt;/panelTutoriels&gt;             &lt;s&eacute;parationPanelTutoriels/&gt;             &lt;panelTutoriels&gt;                 ...             &lt;/panelTutoriels&gt;         &lt;/planningTutoriels&gt;         ...     &lt;/planningForum&gt; &lt;/document&gt; 			</pre> 		</td> 		</tr> 	</table> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">                 	<br/>            	<p class="dossier"> 		La premi&egrave;re &eacute;tape est termin&eacute;e : on va maintenant poursuivre la d&eacute;composition en reprenant chaque &eacute;l&eacute;ment r&eacute;f&eacute;renc&eacute; dans la sp&eacute;cification du point d'entr&eacute;e, c'est-&agrave;-dire les &eacute;l&eacute;ments  <span style="font-family: monospace; color: blue">&lt;titreTutoriel/&gt;</span>,  <span style="font-family: monospace; color: blue">&lt;panelTutoriels/&gt;</span>, et  <span style="font-family: monospace; color: blue">&lt;s&eacute;parationPanelTutoriels/&gt;</span>.      	</p> 	                           	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.Elaboration.2"> 	<h3 class="dossier">II-6.b Etape 2 : sp&eacute;cification d'un  <span style="font-family: monospace; color: blue">&lt;titreTutoriel&gt;</span> </h3> 	</a> 	<br>                 	<p class="dossier"> 		Cet &eacute;l&eacute;ment correspond &agrave; la premi&egrave;re ligne de la table &agrave; instancier (cf  	 <a href="dossiers.2002-09-30.OpenOffice-maquette.php#maquette-planningForum.fig.5"><span style="color: purple">Figure 11</span></a>), ligne qui ne contient qu'une seule cellule. On va donc pouvoir d&eacute;crire directement cette instanciation, sans d&eacute;composer davantage, en utilisant un &eacute;l&eacute;ment de type 2 (cf  	 <a href="dossiers.2002-09-30.OpenOffice-maquette.php#SolutionOpenOffice.partiesdynamiques"><span style="color: purple">II-5.b Description des &eacute;l&eacute;ments de l'instanciation des parties dynamiques</span></a>).      	</p> 	                                                      					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			          &lt;titreTutoriel           applies-to="table:table[@table:name='Tableau-PlanningTutoriels']/table:table-row[1]"         local-template="$parent-template/table:table-row[1]"         template-instanciation="output"&gt;         &lt;output template="$local-template"&gt;             &lt;field name="dateConf"&gt;                 &lt;espace/&gt;                 &lt;value-of select="date/jour"/&gt;                 &lt;espace/&gt;                 &lt;value-of select="date/mois"/&gt;                 &lt;espace/&gt;                 &lt;value-of select="date/ann&eacute;e"/&gt;             &lt;/field&gt;         &lt;/output&gt;     &lt;/titreTutoriel&gt; 			</pre> 		</td> 		</tr> 	</table> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">                	<p class="dossier"> 		Cette sp&eacute;cification demande l'instanciation d'un  <span style="font-family: monospace; color: blue">local-template</span>  (cf attribut  <span style="font-family: monospace; color: blue">template</span>  de l'&eacute;l&eacute;ment  <span style="font-family: monospace; color: blue">&lt;output&gt;</span>), ce  <span style="font-family: monospace; color: blue">local-template</span>  &eacute;tant d&eacute;fini (par l'attribut du m&ecirc;me nom) comme &eacute;tant la ligne 1 (<span style="font-family: monospace; color: blue">table:table-row[1]</span>) du  <span style="font-family: monospace; color: blue">parent-template</span>.      	</p> 	            	<p class="dossier"> 		La notion de  <span style="font-family: monospace; color: blue">parent-template</span>  exprime simplement l'id&eacute;e de la d&eacute;composition : on part d'un  <span style="font-family: monospace; color: blue">&lt;planningTutoriels&gt;</span>  compos&eacute; de  <span style="font-family: monospace; color: blue">&lt;titreTutoriel&gt;</span>  (et d'autres &eacute;l&eacute;ments) : le  <span style="font-family: monospace; color: blue">parent-template</span>  d'un  <span style="font-family: monospace; color: blue">&lt;titreTutoriel&gt;</span>  est donc le  <span style="font-family: monospace; color: blue">local-template</span>  de l'&eacute;l&eacute;ment parent (<span style="font-family: monospace; color: blue">&lt;planningTutoriels&gt;</span>).      	</p> 	            	<p class="dossier"> 		L'&eacute;l&eacute;ment  <span style="font-family: monospace; color: blue">&lt;output&gt;</span>  permet de d&eacute;finir la valeur de remplacement des champs (ici  <span style="font-family: monospace; color: blue">xx</span>) qui se trouvent immerg&eacute;s dans le  <span style="font-family: monospace; color: blue">local-template</span>  &agrave; instancier.      	</p> 	            	<p class="dossier"> 		L'&eacute;valuation de ces valeurs de remplacement se fait &agrave; l'aide d'expressions XPath (comme  <span style="font-family: monospace; color: blue">date/mois</span>), qui seront &eacute;valu&eacute;es par rapport &agrave; l'&eacute;l&eacute;ment courant (<span style="font-family: monospace; color: blue">&lt;titreTutoriel&gt;</span>, en l'occurence) des donn&eacute;es XML, qui se pr&eacute;senteront donc ainsi :      	</p> 	                					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			 &lt;document&gt;     &lt;planningForum&gt;         &lt;dates&gt;19, 20 et 21 Novembre 2001&lt;/dates&gt;         &lt;planningTutoriels&gt;             &lt;titreTutoriel&gt;                 &lt;date&gt;                     &lt;jour&gt;lundi 19&lt;/jour&gt;                     &lt;mois&gt;Novembre&lt;/mois&gt;                     &lt;ann&eacute;e&gt;2001&lt;/ann&eacute;e&gt;                 &lt;/date&gt;             &lt;/titreTutoriel&gt;             &lt;panelTutoriels&gt;                 ...             &lt;/panelTutoriels&gt;             &lt;s&eacute;parationPanelTutoriels/&gt;             &lt;panelTutoriels&gt;                 ...             &lt;/panelTutoriels&gt;         &lt;/planningTutoriels&gt;         &lt;planningConf&eacute;rences&gt;             ...         &lt;/planningConf&eacute;rences&gt;     &lt;/planningForum&gt; &lt;/document&gt;  			</pre> 		</td> 		</tr> 	</table> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">           	<br/>                      	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.Elaboration.3"> 	<h3 class="dossier">II-6.c Etape 3 : sp&eacute;cification d'un  <span style="font-family: monospace; color: blue">&lt;panelTutoriels&gt;</span> </h3> 	</a> 	<br>             	<p class="dossier"> 		Si l'on regarde la maquette ou le document final (cf  	 <a href="dossiers.2002-09-30.OpenOffice-maquette.php#maquette-planningForum.fig.5"><span style="color: purple">Figure 11</span></a>), on voit qu'un panel de tutoriels est constitu&eacute; d'un horaire, et de la juxtaposition en colonnes de 5 tutoriels se d&eacute;roulant en parall&egrave;le. 	<br/>       Il n'est donc pas possible d'instancier directement un  <span style="font-family: monospace; color: blue">&lt;panelTutoriels&gt;</span>  : il faut le d&eacute;composer en &eacute;l&eacute;ments plus simples, chacun correspondant &agrave; une colonne, ce que l'on peut faire en utilisant un &eacute;l&eacute;ment de type 3 (cf  	 <a href="dossiers.2002-09-30.OpenOffice-maquette.php#SolutionOpenOffice.partiesdynamiques"><span style="color: purple">II-5.b Description des &eacute;l&eacute;ments de l'instanciation des parties dynamiques</span></a>).       	</p> 	                                  					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			          &lt;panelTutoriels          applies-to="table:table[@table:name='Tableau-PlanningTutoriels']/table:table-row[2]"         local-template="$parent-template/table:table-row[2]"         template-instanciation="local-template"&gt;         &lt;one&gt;             &lt;plageHoraire/&gt;         &lt;/one&gt;         &lt;one.more&gt;             &lt;tutoriel/&gt;         &lt;/one.more&gt;     &lt;/panelTutoriels&gt; 			</pre> 		</td> 		</tr> 	</table> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">            	<br/>            	<p class="dossier"> 		Ici, l'on sp&eacute;cifie que l'instanciation &agrave; effectuer se r&eacute;duit celle d'une coquille structurelle<span style="vertical-align: super; font-size: smaller">(*)</span> de ligne, laquelle se trouve &ecirc;tre la ligne 2 de la table.      	</p> 	 	 	<div align="right"> 		<table style=" 			width:40%;  			border-top-style: ridge;  			border-top-width: thin; 			"> 			<tr> 			<td style="font-family: cursive; text-align: justify; font-size: smaller"> 			<xsl:text>(*) </xsl:text> 			c'est-&agrave;-dire qu'il faut instancier l'&eacute;l&eacute;ment (avec ses attributs) d&eacute;crivant une ligne de tableau, mais pas son contenu. 			</td> 			</tr> 		</table> 	</div> 	 	<br/> 	             	<p class="dossier"> 		La sp&eacute;cification de l'instanciation du contenu se fera lors d'&eacute;tapes ult&eacute;rieures, celles d&eacute;crivant ce qu'est une  <span style="font-family: monospace; color: blue">&lt;plageHoraire&gt;</span>  et un  <span style="font-family: monospace; color: blue">&lt;tutoriel&gt;</span>.      	</p> 	                           	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.Elaboration.4"> 	<h3 class="dossier">II-6.d Etape 4 : sp&eacute;cification d'une  <span style="font-family: monospace; color: blue">&lt;plageHoraire&gt;</span> </h3> 	</a> 	<br>            	<p class="dossier"> 		Une plage horaire est une information &eacute;l&eacute;mentaire, qu'il n'y a pas lieu de d&eacute;composer : il s'agit simplement d'instancier une cellule (la premi&egrave;re) de la ligne courante de la table courante, en rempla&ccedil;ant les champs par leur valeur :      	</p> 	                                 					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			          &lt;plageHoraire local-template="$parent-template/table:table-cell[1]"         template-instanciation="output"&gt;         &lt;output template="$local-template"&gt;             &lt;field name="h1-mn"&gt;                 &lt;value-of select="./debut"/&gt;             &lt;/field&gt;             &lt;field name="h2-mn"&gt;                 &lt;value-of select="./fin"/&gt;             &lt;/field&gt;         &lt;/output&gt;     &lt;/plageHoraire&gt; 			</pre> 		</td> 		</tr> 	</table> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">            	<br/>                 	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.Elaboration.5"> 	<h3 class="dossier">II-6.e Etape 5 : sp&eacute;cification d'un  <span style="font-family: monospace; color: blue">&lt;tutoriel&gt;</span> </h3> 	</a> 	<br>            	<p class="dossier"> 		Chaque tutoriel n&eacute;cessite l'instanciation d'un groupe de 3 cellules : une cellule vide, suivie d'une cellule comportant le No de code du tutoriel, suivie d'une cellule comportant le titre et le(s) intervenant(s) : cf  	 <a href="dossiers.2002-09-30.OpenOffice-maquette.php#maquette-planningForum.fig.5"><span style="color: purple">Figure 11</span></a>. 	<br/>      Ces 3 cellules sont instanci&eacute;es suivant les directives fournies par 3 &eacute;l&eacute;ments  <span style="font-family: monospace; color: blue">&lt;output&gt;</span>, un pour chaque cellule :           	</p> 	                                 					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			          &lt;tutoriel index="position() - 1" local-template="$parent-template"         template-instanciation="output"&gt;         &lt;output template="$local-template/table:table-cell[ 2 + ($index - 1) * 3 ]"/&gt;         &lt;output template="$local-template/table:table-cell[ 3 + ($index - 1) * 3 ]"&gt;             &lt;field name="code"&gt;                 &lt;value-of select="./code"/&gt;             &lt;/field&gt;         &lt;/output&gt;         &lt;output template="$local-template/table:table-cell[ 4 + ($index - 1) * 3 ]"&gt;             &lt;field name="titre"&gt;                 &lt;value-of select="./titre"/&gt;             &lt;/field&gt;             &lt;field name="intervenant-soci&eacute;t&eacute;"&gt;                 &lt;value-of select="./intervenants"/&gt;             &lt;/field&gt;         &lt;/output&gt;     &lt;/tutoriel&gt; 			</pre> 		</td> 		</tr> 	</table> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">            	<br/>            	<p class="dossier"> 		Le No des cellules concern&eacute;es par un tutoriel d&eacute;pend du No de ce  <span style="font-family: monospace; color: blue">&lt;tutoriel&gt;</span>  dans la liste des enfants directs de l'&eacute;l&eacute;ment  <span style="font-family: monospace; color: blue">&lt;panelTutoriel&gt;</span>. Mais il y a un d&eacute;calage (pris en compte par l'expression "<span style="font-family: monospace; color: blue">position() - 1</span>" utilis&eacute;e pour l'attribut  <span style="font-family: monospace; color: blue">index</span>) d&ucirc; &agrave; la pr&eacute;sence de l'&eacute;l&eacute;ment  <span style="font-family: monospace; color: blue">&lt;plageHoraire&gt;</span>  comme premier fils de  <span style="font-family: monospace; color: blue">&lt;panelTutoriels&gt;</span> :      	</p> 	                                 					</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 	<div align="center"> 	<table style="  	padding: 1ex 1ex 1ex 1ex;  	border-left-style: ridge;  	border-left-width: thin; 	border-color : dodgerblue; 	background-color: azure;  	"> 		<tr> 		<td> 			<pre style="font-family: monospace; color: blue"> 			             ...             &lt;panelTutoriels&gt;                 &lt;plageHoraire&gt;                     &lt;debut&gt;09:00&lt;/debut&gt;                     &lt;fin&gt;12:45&lt;/fin&gt;                 &lt;/plageHoraire&gt;                 &lt;tutoriel&gt;                     &lt;code&gt;A01&lt;/code&gt;                     &lt;titre&gt;Introduction &agrave; XML: concepts et syntaxe&lt;/titre&gt;                     &lt;intervenants&gt;Didier Girard, Improve&lt;/intervenants&gt;                 &lt;/tutoriel&gt;                 &lt;tutoriel&gt;                     &lt;code&gt;A02&lt;/code&gt;                     &lt;titre&gt;L'int&eacute;gration d'applications d'entreprise (EAI) avec XML&lt;/titre&gt;                     &lt;intervenants&gt;Ludovic Cinquin, OCTO Technology&lt;/intervenants&gt;                 &lt;/tutoriel&gt;                 &lt;tutoriel&gt;                     &lt;code&gt;A03&lt;/code&gt;                     &lt;titre&gt;Mod&eacute;lisation de donn&eacute;es et Schemas XML&lt;/titre&gt;                     &lt;intervenants&gt;Bruno Chatel, ind&eacute;pendant&lt;/intervenants&gt;                 &lt;/tutoriel&gt;                 &lt;tutoriel&gt;                     &lt;code&gt;A04&lt;/code&gt;                     &lt;titre&gt;Techniques de mise en oeuvre de XSL &amp;amp; XSLT (1&egrave;re partie)&lt;/titre&gt;                     &lt;intervenants&gt;Eric Van der Vlist, Dyomedea&lt;/intervenants&gt;                 &lt;/tutoriel&gt;                 &lt;tutoriel&gt;                     &lt;code&gt;A05&lt;/code&gt;                     &lt;titre&gt;Introduction &agrave; ebXML&lt;/titre&gt;                     &lt;intervenants&gt;Marc Langlois, Edifrance&lt;/intervenants&gt;                 &lt;/tutoriel&gt;             &lt;/panelTutoriels&gt;             ... 			</pre> 		</td> 		</tr> 	</table> 	</div> 	 	     		<table class="contenu_general" cellspacing="0" cellpadding="0"> 			<tr>  				<!-- SOMMAIRE --> 				<td class="sommaires">  					<div style="width: 148px;"></div>				</td> 				<!-- FIN sommaire -->      				<!-- CONTENU --> 				<td class="contenu">            	<br/>                      	<p>&nbsp;</p> 	<p>&nbsp;</p> 	<a name="SolutionOpenOffice.Conclusion"> 	<h2 class="dossier">II-7 Conclusion</h2> 	</a> 	<br>            	<p class="dossier"> 		Une fois termin&eacute;e la sp&eacute;cification de l'instanciation des &eacute;l&eacute;ments dynamiques, ainsi que l'extraction des donn&eacute;es XML ad&eacute;quates et correctement ordonn&eacute;es, on lance la compilation de la sp&eacute;cification et on obtient une feuille de styles XSLT capable de transformer les donn&eacute;es XML en document XML OpenOffice bas&eacute; sur la maquette pr&eacute;-&eacute;tablie.      	</p> 	            	<p class="dossier"> 		Il suffit de zipper le document XML obtenu de la m&ecirc;me mani&egrave;re que la maquette, pour pouvoir ouvrir sous OpenOffice le document final (cf  	 <a href="dossiers.2002-09-30.OpenOffice-maquette.php#SolutionOpenOffice.docfinal"><span style="color: purple">II-2 Le document final</span></a>). Il est alors &eacute;ventuellement possible d'y retoucher, et bien s&ucirc;r, de l'imprimer.      	</p> 	            	<p class="dossier"> 		Si l'on se r&eacute;sume, la production d'un document dynamique de haute qualit&eacute; typographique demande l'intervention de deux partenaires :      	</p> 	        	 	<ul class="dossier"> 	 		 	<li class="dossier"> 		 			Une ma&icirc;trise d'ouvrage, qui va d&eacute;finir la maquette du document &agrave; produire, avec l'aide de graphistes, d'utilisateurs et de commanditaires, 		 	</li>  		 	<li class="dossier"> 		 			Une ma&icirc;trise d'&#156;uvre, qui va d&eacute;finir la structure de la base de donn&eacute;es ou du gisement XML (ou qui va prendre en compte un existant), qui va cr&eacute;er l'application d'extraction des donn&eacute;es dynamiques au format XML, qui va d&eacute;finir la sp&eacute;cification de l'instanciation et obtenir la transformation XSLT permettant de produire le document final. 		 	</li>  	 	</ul>  	           	<p class="dossier"> 		 		L'utilisateur final pourra alors utiliser cette transformation XSLT et l'application d'extraction pour cr&eacute;er autant d'instances de documents dynamiques que n&eacute;cessaire. 	 	</p> 	  			       	 					<p class="dossier_infos_redaction"> 						Auteur : <a href="mailto:pdrix@objectiva.fr" class="personne">Philippe Drix</a> 						<br/> 						Rdaction de ce dossier le 30 Septembre 2002 					</p> 					<br/> 					<br/> 					<br/> 					<br/> 				</td> 				<!-- FIN contenu -->      				<!-- ENCADRES DIVERS (OU MARGE) --> 				<td class="encarts">  					<div style="width: 138px;"></div>				</td> 				<!-- FIN encadrs divers --> 			</tr> 		</table> 			<div class="bandeau_bas"> 				<a class="bandeau_bas" href="index.php">accueil</a>&nbsp;| 				<a class="bandeau_bas" href="offre.php">offre</a>&nbsp;|&nbsp; 				<a class="bandeau_bas" href="formations.php">formations</a>&nbsp;|&nbsp; 				<a class="bandeau_bas" href="contact.php">contact</a>&nbsp;|&nbsp; 				<a class="bandeau_bas" href="recrutement.php">opportunits</a>&nbsp;|&nbsp; 				<a class="bandeau_bas" href="dossiers.php">dossiers</a> 				<br/> 				pour tout problme de consultation ou remarques, veuillez vous adresser au  				<a class="bandeau_bas" href="mailto:webmaster@objectiva.fr?subject=Site Internet"> 					<img src="http://www.objectiva.org/images/icones/imp/MsgWrite.gif" border="0"> webmaster 				</a> 			</div> 		</div> 		<span class="copyright"> 			Copyright 1999 Objectiva SARL. 21-23, Rue Aristide Briand 92170 Vanves. 		</span> 	</center> 	</body> </html>  
