【问题标题】:Symfony2 Twig and XSLSymfony2 Twig 和 XSL
【发布时间】:2012-03-22 12:13:29
【问题描述】:

我正在开发一个使用 symfony2 和 twig 作为模板的应用程序。尝试在 XSL 文件中使用 Twig 时会出现问题。这是 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/web/MyXSLFile.xsl 第 12 行元素模板

【问题讨论】:

    标签: xslt symfony twig


    【解决方案1】:

    编译错误的原因很明显&lt;xsl:stylesheet&gt; 元素不能有任何(仅非空白)文本节点子节点,在上面的代码中你有:

        <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 %}
    

    要么这个文本必须被某些预处理器删除,要么它们需要被包裹在一个特殊的元素中,或者在一个注释中。

    【讨论】:

    • 问题是如何在 XSL 文档中使用该文本(TWIG 代码)而不出现编译错误。谢谢。
    • 正如我之前所说,XSLT 对 TWIG 一无所知。如果您想生成它,您必须将该文本(TWIG 代码)放在xsl:template 中,并进一步放在xsl:value-of 或其他类似指令(xsl:text)中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多