Journal Nouvelle version du préprocesseur XML 'expp'

Posté par (page perso) . Licence CC by-sa
Tags : aucun
0
16
août
2011

expp est un préprocesseur XML modifiant le contenu d'un fichier XML à l'aide de directives, directement inclues dans le fichier, permettant de gérer des macros, de définir et tester des variables, d'inclure des fichiers...
Cette nouvelle version est internationalisée, avec le français et l'anglais comme langues disponibles, d'autres langues pouvant être ajoutées facilement.
Ce logiciel tourne sous GNU/Linux (et théoriquement sous d'autres UNIX-like), Windows et Mac OS.
Ce logiciel est publié sous GNU GPL.
Pour plus de détails : http://zeusw.org/intl/expp/ (en)

Un exemple de fichier XML contenant des directives du préprocesseur :

<?xml version="1.0" encoding="ISO-8859-1"?>
<xpp:bloc xmlns:xpp="http://zeusw.org/epeios/xpp">
	<xpp:define name="LinuxURL">
		<xpp:bloc>linux.org</xpp:bloc>
	</xpp:define>
	<xpp:define name="WindowsURL">
		<xpp:bloc>windows.com</xpp:bloc>
	</xpp:define>
	<xpp:define name="Linux">
		<xpp:bloc>
			<xpp:define name="Directory">
				<xpp:bloc>/home/dupond/</xpp:bloc>
			</xpp:define>
			<xpp:define name="RootURL">
				<xpp:expand select="LinuxURL"/>
			</xpp:define>
		</xpp:bloc>
	</xpp:define>
	<xpp:define name="Windows">
		<xpp:bloc>
			<xpp:define name="Directory">
				<xpp:bloc>c:\Documents\Dupond\</xpp:bloc>
			</xpp:define>
			<xpp:define name="RootURL">
				<xpp:expand select="WindowsURL"/>
			</xpp:define>
		</xpp:bloc>
	</xpp:define>
	<xpp:define name="File">
		<xpp:bloc>
			<xpp:expand select="Directory"/>
			<xpp:expand select="FileName"/>
		</xpp:bloc>
	</xpp:define>
	<xpp:ifeq select="OS" value="Linux">
		<xpp:expand select="Linux"/>
	</xpp:ifeq>
	<xpp:ifeq select="OS" value="Windows">
		<xpp:expand select="Windows"/>
	</xpp:ifeq>
	<SomeFile>
		<xpp:define name="FileName">
			<xpp:bloc>SomeFile</xpp:bloc>
		</xpp:define>
		<xpp:expand select="File"/>
	</SomeFile>
	<OtherFile>
		<xpp:define name="FileName">
			<xpp:bloc>OtherFile</xpp:bloc>
		</xpp:define>
		<xpp:expand select="File"/>
	</OtherFile>
	<SomeURL>
		<xpp:bloc>http://</xpp:bloc>
		<xpp:expand select="RootURL"/>
		<xpp:bloc>/something</xpp:bloc>
	</SomeURL>
</xpp:bloc>
  • # XSLT?

    Posté par (page perso) . Évalué à 7.

    C'est quoi la différence avec XSLT?

    http://devnewton.bci.im

    • [^] # Re: XSLT?

      Posté par (page perso) . Évalué à 2.

      Si je devais essayer une comparaison avec les outils classiques manipulant du texte brut, je dirais que XSLT est une sorte de awk tandis que expp est plutôt assimilable à m4. Les cas d’utilisations des deux outils peuvent se chevaucher partiellement mais leurs tâches de prédilection ne sont pas les mêmes (a priori on n’utilisera pas awk pour faire du remplacement intensif de macros ni m4 pour traiter des lignes de texte).

      • [^] # Re: XSLT?

        Posté par (page perso) . Évalué à 1.

        Hein ?
        XSLT est un langage de programmation fonctionnel. Tu peux tout faire avec ce langage ; pas juste du remplacement...

        • [^] # Re: XSLT?

          Posté par (page perso) . Évalué à 1.

          C’est bien ce que j’essayais de dire. La différence entre le langage XSLT et expp est du même genre que la différence entre le langage awk et le processeur de macro m4.

          On ne fait pas que du remplacement de texte avec awk (même si on peut le faire occasionnellement, m4 ou cpp seront plus appropriés) tout comme on ne fait pas que du remplacement de nœuds XML avec XSLT (même si on peut le faire).

    • [^] # Re: XSLT?

      Posté par (page perso) . Évalué à 4.

      expp est conçu pour réaliser des transformations beaucoup moins importantes que XSLT (que j'utilise par ailleurs quotidiennement, mais dans un tout autre contexte d'utilisation).
      Typiquement, je m'en sert pour gérer un jeu de fichiers de configurations ayant peu de différences entre eux, différences essentiellement dues au fait qu'ils sont destinés à un même logiciel, mais installé sur des systèmes d'exploitation différents. Grâce à la gestion des macros et des variables proposée par expp, je n'ai qu'un seul fichier de configuration à maintenir, à partir duquel je génère les variantes propres à chaque système d'exploitation.
      Le fait que les différentes directives sont situées directement dans le fichier à transformer, à l'endroit même où elles vont agir (contrairement à XSLT où elles doivent être situées dans un fichier distinct), permet d'un simple coup d'œil de voir leurs effets.

      Développeur freelance.

  • # xmllint également

    Posté par . Évalué à 0.

    Ben oui, lo pin compris à quoi ça sert.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.