2011-09-20 11 views
5

XSLT es una herramienta muy poderosa, pero su uso puede ser doloroso ... incluso con zencoding.¿Existe algún lenguaje que se compile en xslt y lo simplifique y lo utilice?

Aproximadamente Quiero un CoffeeScript para XSLT, algo que va a compilar por ejemplo

template test 
    params = {:foo => 'foo', :bar => 1} 
    <p>$foo, $bar</p> 
end 

call test :foo => 'oof', :bar => 2 

en

<xsl:call-template name="test"> 
    <xsl:with-param select="'oof'" name="foo"></xsl:with-param> 
    <xsl:with-param select="2" name="bar"></xsl:with-param> 
</xsl:call-template> 

<xsl:template name="test"> 
    <xsl:param select="'foo'" name="foo" /> 
    <xsl:param select="1" name="bar" /> 
    <p><xsl:value-of select="$foo" />, <xsl:value-of select="$bar" /></p> 
</xsl:template> 

o algo ...

+0

te recomiendo para evitar cualquier "herramienta" tal porque no hay garantía de que transmite y conserva todo el significado y la funcionalidad de la Lenguaje XSLT. Mucho mejor que usar tales herramientas es usar un buen IDE XSLT como XSelerator, Visual Studio o oXygen. –

+0

Use un editor con finalización de código controlada por esquema. Por ejemplo, en Visual Studio escribe ' '. –

+0

Por supuesto, me refiero a alguna herramienta que preserve el "significado y funcionalidad XSLT" completo. Esos IDE-s son buenos para crear xsl, pero mientras trabajas con él todavía tienes mucho código para ver y editar. – installero

Respuesta

1

Es posible comprobar XMLStarlet.

Puede ayudarle a generar plantillas XSL.

Por ejemplo:

xml sel -C -t -c "xpath0" -m "xpath1" -m "xpath2" -v "xpath3" -t -m "xpath4" -c "xpath5" 

generará

<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output omit-xml-declaration="yes" indent="no"/> 
    <xsl:template match="/"> 
    <xsl:call-template name="t1"/> 
    <xsl:call-template name="t2"/> 
    </xsl:template> 
    <xsl:template name="t1"> 
    <xsl:copy-of select="xpath0"/> 
    <xsl:for-each select="xpath1"> 
     <xsl:for-each select="xpath2"> 
     <xsl:value-of select="xpath3"/> 
     </xsl:for-each> 
    </xsl:for-each> 
    </xsl:template> 
    <xsl:template name="t2"> 
    <xsl:for-each select="xpath4"> 
     <xsl:copy-of select="xpath5"/> 
    </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 
Cuestiones relacionadas