Toggle Menu [-]

Transformations XSLT

Published by balno on Saturday, August 8, 2009 - 01:42:57

Informatique, Programmation Web

Je suis sur un chantier de création d'outils pour améliorer l'indexation matière dans notre catalogue. J'ai terminé une librairie Javascript sur mesure pour la gestion des fichiers XML et leur transformation XSLT.

Un petit exemple :

Fichier XML à transformer :

<?xml version="1.0" encoding="UTF-8"?>
	
<content>
	<item id="1" name="Animaux"> 
		<item id="2" name="Familiers"> 
			<item id="3" name="Chats" ></item> 
			<item id="4" name="Chiens" ></item> 
			<item id="5" name="Hamsters"></item> 
		</item> 
		<item id="6" name="Sauvages"> 
			<item id="7" name="Lion"></item> 
			<item id="8" name="Girafe"></item> 
			<item id="9" name="Poissons"> 
				<item id="10" name="Thon"></item> 
				<item id="11" name="Cabillaud"></item> 
				<item id="12" name="Raie">
					<item id="18" name="Manta"></item> 
				</item> 
			</item> 
	</item> 
	<item id="13" name="Escargot"></item> 
	</item>
	<item id="14" name="Moyens de transport">
		<item id="15" name="Voiture"></item>
		<item id="16" name="Train"></item>
	</item>
	<item id="19" name="bateau"></item>
	<item id="17" name="programmation PHP"></item>
</content>

Feuille de style XSL :

<?xml version="1.0" encoding="UTF-8"?>
	
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	
	<xsl:output 
	
  	method="html"
	
  	encoding="UTF-8"
	
  	doctype-public="-//W3C//DTD HTML 4.01//EN"
	
  	doctype-system="http://www.w3.org/TR/html4/strict.dtd"
	
  	indent="yes" />
	
	<xsl:template match="content">
		<div class="content">
			<xsl:apply-templates select="item">
				<xsl:sort select="@name" data-type="text" order="ascending" />
			</xsl:apply-templates>
		</div>
	</xsl:template>
	
	<xsl:template match="item">
	
	  	<div>
			<xsl:attribute name="class">item</xsl:attribute>
			<xsl:attribute name="id">item<xsl:value-of select="@id" /></xsl:attribute>
			<xsl:choose>
  				<xsl:when test="node()">
					<img>
						<xsl:attribute name="src">images/folder.gif</xsl:attribute>
						<xsl:attribute name="id">img<xsl:value-of select="@id" /></xsl:attribute>
						<xsl:attribute name="onclick">toggleItem(<xsl:value-of select="@id" />);</xsl:attribute>
					</img>
      			<a>
      				<xsl:attribute name="href">javascript:void(0)</xsl:attribute>
      				<xsl:attribute name="onclick">clickItem(<xsl:value-of select="@id" />);</xsl:attribute>
      				<xsl:attribute name="id">link<xsl:value-of select="@id" /></xsl:attribute>
      				<xsl:attribute name="class">unselected</xsl:attribute>
    					<xsl:value-of select="@name" />
    				</a>
					<div>
						<xsl:attribute name="id">itemContent<xsl:value-of select="@id" /></xsl:attribute>
						<xsl:attribute name="style">display:none</xsl:attribute>
    					<xsl:apply-templates select="item">
							<xsl:sort select="@name" data-type="text" order="ascending" />
						</xsl:apply-templates>
					</div>
    			</xsl:when>
    			<xsl:otherwise>
					<img><xsl:attribute name="src">images/item.gif</xsl:attribute></img>
      			<a>
      				<xsl:attribute name="href">javascript:void(0)</xsl:attribute>
      				<xsl:attribute name="onclick">clickItem(<xsl:value-of select="@id" />);</xsl:attribute>
      				<xsl:attribute name="id">link<xsl:value-of select="@id" /></xsl:attribute>
      				<xsl:attribute name="class">unselected</xsl:attribute>
    					<xsl:value-of select="@name" />
    				</a>
    			</xsl:otherwise>
			</xsl:choose>
  		</div>
	
	</xsl:template>
	
</xsl:stylesheet>
	

Rendu dans une page WEB :

grumeau1.png

grumeau2.png

2 commentaires (465 views) - Permalink

Gestion des acquisitions à la Mediathèque

Published by balno on Saturday, August 8, 2009 - 01:28:31

Informatique, Module acquisitions, Programmation Web

J'ai terminé un outil permettant de gérer les suggestions des usagers, les réservations à la BDP et le suivi des commandes pour la Médiathèque. Notre applicatif métier comprend bien un module de gestion des acquisitions, mais comme souvent, il est assez lourd à utiliser. Son principal avantage est de permettre un suivi comptable, mais nous n'utilisons pas cela ici, nous fonctionnons autrement. D'autre part, je voulais quelque chose de simple à prendre en main et surtout qui emploie la terminologie en cours dans l'équipe.

J'ai commencé donc à dresser un schéma du problème et des différents états possibles (avec DIA, un excellent logiciel).

Diagramme.png

Dans les faits, cet applicatif vient remplacer un tableau excel qui était utilisé pour le secteur livre et le paquet de post-it collés sur mon écran et mon clavier.

La web-app est hebergée sur le serveur sous Debian de la Médiathèque, donc avec Apache/PHP5. J'avais besoin d'aller rapidement et que les sauvegardes soient faciles (on doit pouvoir se fier à cet outil, une fois, j'ai effacé par mégarde le fichier Excel qui était sur le partage Samba et ce fût ennuyeux).

Dans les faits, beaucoup d'Ajax et de XSLT, ça va vite.

Quelques copies d'écrans :

ecraninitial.png
menuAcquisitions.png

listeSuggestions.png
resaBDP_action.png

creationAcquisition.png
impressionPDF.png

formrecherche.png
resultatrecherche.png

resaBDPToolbar.png

Nous tournons avec cette application depuis ce mois-çi et personne ne s'est plaint encore :)

Commenter (316 views) - Permalink

Un bon ouvrier a toujours de bons outils

Published by balno on Wednesday, July 29, 2009 - 00:55:53

Informatique

Les outils que j'aime bien utiliser pour développer :

L'éditeur Bluefish:

bluefish.png

Parfois Gedit, l'éditeur de texte du projet Gnome et à la Médiathèque, l'excellent Notepad++, que j'ai installé sur les postes sous Windows.

Le navigateur Iceweasel, étant debianophile avéré et Firefox au travail.

Ces navigateurs disposent de deux modules complémentaires fabuleux : Web Developper et Firebug. La barre Web developper me sert surtout pour les fonctions de validation du code et Firebug présente une foule d'outils indispensables, surtout quand on manipule Javascript et Ajax. Il est très utile également pour s'y retrouver dans des mises en page complexes.

firebug.png

Dernièrement, j'ai découvert l'extension Page Speed un add-on pour Firebug mis à disposition par la société Google, utile pour faire un minimum de profiling et améliorer la rapidité d'affichage des pages Web.

Commenter (539 views) - Permalink