2008-11-11 13 views

Répondre

0

Vous pouvez commencer à partir this tutorial

Mais sachez que généralement XSLT exige bien formé XML en entrée et HTML est pas toujours bien formé

3

Ce que vous devez d'abord est bien formé HTML (au moins transitionnel), bien que recommandé XHTML. Certains processeurs XSLT peuvent accepter du HTML malformé mais ce n'est pas la règle.

Pour essayer l'exemple ci-dessous, vous pouvez télécharger this small Microsoft command line app.

exemple XSLT rapide et sale pour ce que vous avez besoin (exemple-xslt.xsl):

<xsl:stylesheet version="1.0" 
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
     <xsl:template match="*"> 
      <xsl:copy> 
       <xsl:copy-of select="@*"/> 
       <xsl:apply-templates/> 
      </xsl:copy> 
     </xsl:template> 

     <xsl:template match="form[@action='foo']"> 
      <xsl:copy> 
       <xsl:copy-of select="@*"/> 
       <xsl:attribute name="action">non-foo</xsl:attribute> 
       <input type="hidden" name="my-hidden-prop" value="hide-foo-here"/> 
       <xsl:apply-templates select="*"/> 
      </xsl:copy> 
     </xsl:template> 

</xsl:stylesheet> 

Et l'exemple XML correspondant (example.xml).

<?xml version ="1.0"?> 
<?xml-stylesheet type="text/xsl" href="example-xslt.xsl"?> 
<html> 
    <head></head> 
    <body> 
     <form action="foo"> 
     </form> 
     <form action="other"> 
     </form> 
    </body> 
</html> 
0

Pensée de la réponse de Gurin: une voie à base XSLT possible pour HTML est d'utiliser bien rangé pour le convertir en XHTML, appliquer XSLT au XHTML, mais utiliser xsl:output[@method="html"] pour obtenir HTML arrière. Les attributs @doctype-system et @doctype-public vous permettent également de fournir une déclaration doctype dans le fichier de sortie.

Je n'ai aucun fichier d'exemple pour shahbhat, mais l'approche générale est simple d'un point de vue XSLT: commencez avec une transformation d'identité et ajoutez des modèles pour que les attributs d'action les remplacent comme vous le souhaitez. Pour ajouter des champs cachés, je pense que le moyen le plus simple serait de créer explicitement un modèle pour l'élément form en tant que transformation d'identité, mais avec des éléments supplémentaires à l'intérieur qui sont également générés. Je pense que Fernando Miguélez vient de publier un exemple.