Voici mon fichier XML : (version simplifiée plus bas)
Ce qu'il faut voir :
Les tags du spacename mova sont un appel lorsqu'ils sont dans html
Evidement je veux recopier mes "données" à la bonne "place"
Voici mon fichier XSL :
J'ai deux problèmes :
§§1§§ : Dans le select, il y a un string, il est donc recopié tel-quel et ce n'est pas ce que je veux. Pourtant je dois bien recopier le local-name() du contexte courant pour que <mova:toto /> dans html aille cherche le contenu de <mova:toto>contenu</mova:toto>
§§2§§ : Sans cette ligne, le contenu de <mova:toto> est recopié dans la sortie. Or selon moi je ne lui ai jamais demandé de le faire.
Cette ligne, dont j'aimerais me passer, permet donc d'annuler la sortie.
Quelqu'un peut-il m'aider ?
Modifié par Fredooo (08 Mar 2005 - 19:17)
<?xml version="1.0" ?>
<page xmlns:mova="http://dynip.org/mova">
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="fr">
<head>
<title><mova:titre /></title>
<meta http-equiv="Content-Type" content="text/HTML; charset=iso-8859-1" />
<style type="text/css">
#smile {width: 100px;border: 1px solid black;}
</style>
</head>
<body>
<mova:exemple /><br/>
<!-- ttt -->
<h1>Exemple</h1>
<h2>Présentation</h2>
<p>Il s'agit d'un exemple d'utilisation.</p>
<img id="smile" src="greg.jpg" alt="cheep smile" />
<p>Les images sont prises avec le bon chemin.</p>
</body>
</html>
<mova:titre>Le titre de la page</mova:titre>
<mova:exemple>--oOo--</mova:exemple>
</page>
Ce qu'il faut voir :
<page>
<html>
<head><titre><mova:titre /></titre></head>
<body>...</body>
</html>
<mova:titre>leTitre</mova:titre>
</page>
Les tags du spacename mova sont un appel lorsqu'ils sont dans html
Evidement je veux recopier mes "données" à la bonne "place"
Voici mon fichier XSL :
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:html="http://www.w3.org/1999/xhtml" exclude-result-prefixes="html"
xmlns:mova="http://dynip.org/mova"
>
<xsl:output
method="xml"
indent="yes"
omit-xml-declaration="yes"
encoding="ISO-8859-1"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
/>
<!-- ici on recopie le code html du tag /page/html vers la sortie -->
<xsl:template match="/page/html:html//html:*">
<xsl:element name="{local-name()}">
<xsl:for-each select="attribute::*">
<xsl:attribute name="{name()}"><xsl:value-of select="."/></xsl:attribute>
</xsl:for-each>
<xsl:apply-templates />
</xsl:element>
</xsl:template>
<!-- ici, on est sensé remplacer les appels /page/html//mova:toto par
les données /page/mova:toto.
local-name() c'est justement "toto" -->
<xsl:template match="/page/html:html//mova:*">
<xsl:value-of select="concat('/page/mova:', local-name())" /> [fache]§§1§§
</xsl:template>
<xsl:template match="/page/mova:*"></xsl:template> [fache]§§2§§
<!-- Ceci recopie les commentaires -->
<xsl:template match="comment()">
<xsl:copy />
</xsl:template>
</xsl:stylesheet>
J'ai deux problèmes :
§§1§§ : Dans le select, il y a un string, il est donc recopié tel-quel et ce n'est pas ce que je veux. Pourtant je dois bien recopier le local-name() du contexte courant pour que <mova:toto /> dans html aille cherche le contenu de <mova:toto>contenu</mova:toto>
§§2§§ : Sans cette ligne, le contenu de <mova:toto> est recopié dans la sortie. Or selon moi je ne lui ai jamais demandé de le faire.
Cette ligne, dont j'aimerais me passer, permet donc d'annuler la sortie.
Quelqu'un peut-il m'aider ?
Modifié par Fredooo (08 Mar 2005 - 19:17)