2012-03-22 11 views
1

私は、テンプレートとしてsymfony2とtwigを使ってアプリケーションを開発しています。この問題は、XSLファイルでTwigを使用しようとするときに発生します。これは小枝とXSLコードです:Symfony2 TwigとXSL

<?xml version='1.0' encoding='ISO-8859-1'?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    {# src/Anotatzailea/AnotatzaileaBundle/Resources/views/Page/testuaanotatu.html.twig #} 
    {% extends 'AnotatzaileaAnotatzaileaBundle::layout.html.twig' %} 

    {% block title %}Testua anotatu{% endblock%} 

    {% block body %} 

    <div class="box600_lower"> 
    <xsl:template match="word"> 
     <label> 
     <xsl:attribute name="class"> 
      <xsl:text>annotation_checkbox</xsl:text> 
     </xsl:attribute> 
     <xsl:attribute name="id"> 
      <xsl:text>Ascripta</xsl:text> 
     </xsl:attribute> 
     <xsl:attribute name="name"> 
      <xsl:text>Bscripta</xsl:text> 
     </xsl:attribute> 
     <xsl:attribute name="value"> 
      <xsl:text>Cscripta</xsl:text> 
     </xsl:attribute> 
     <xsl:attribute name="type"> 
      <xsl:text>checkbox</xsl:text> 
     </xsl:attribute> 
     </label> 
     <label> 
     <xsl:attribute name="class"> 
      <xsl:text>altcheckboxoff</xsl:text> 
     </xsl:attribute> 
     <xsl:attribute name="for"> 
      <xsl:text>Ascripta</xsl:text> 
     </xsl:attribute> 
     <xsl:attribute name="id"> 
      <xsl:text>Bscripta</xsl:text> 
     </xsl:attribute> 
     <xsl:value-of select="text()"/> 
     <xsl:text> </xsl:text> 
     </label> 
    </xsl:template> 
    </div> 
    {% endblock %} 
</xsl:stylesheet> 

コードは失敗し、次のメッセージを示しています。

警告:XSLTProcessor :: importStylesheet():コンパイルエラー:ファイルは/ var/www /のsymfonyは/ウェブ/ MyXSLFile.xslライン12要素テンプレート

答えて

1

コンパイルエラーの理由は明白です:<xsl:stylesheet>要素は、任意の(非空白のみ)、テキストノードの子を持つことができず、上記のコードでは、あなたが持っている:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    {# src/Anotatzailea/AnotatzaileaBundle/Resources/views/Page/testuaanotatu.html.twig #} 
    {% extends 'AnotatzaileaAnotatzaileaBundle::layout.html.twig' %} 

    {% block title %}Testua anotatu{% endblock%} 

    {% block body %} 

このテキストは、いくつかのプリプロセッサで削除するか、特別な要素またはコメントのいずれかにラップする必要があります。

+0

問題は、XSLドキュメントでそのテキスト(TWIGコード)を使用して、コンパイルエラーが発生しないようにすることです。ありがとうございます。 – Haritz

+0

前にも述べたが、XSLTはTWIGについて何も知らない。 *生成する場合は、そのテキスト(TWIGコード)を 'xsl:template'の中に入れ、さらに' xsl:value-of'または他の同様の命令( 'xsl:text')に入れなければなりません。 –

+0

ありがとうDimitre、私はそれを試してみましょう。 – Haritz