xsl: apply-templates: соответствие не соблюдается - PullRequest
2 голосов
/ 01 ноября 2011

У меня проблема с xsl: apply-templates.Я пытаюсь применить шаблон к одному конкретному тегу, но вижу текст из других тегов.Простой XML-файл:

<?xml version="1.0"?>                                                  

<!-- execute with xsltproc foo.xsl foo.xml -->                         
<xsl:stylesheet version="1.0"                                          
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >     

    <xsl:output method="text" />                                       

    <xsl:template match="/foo">                                        
        <xsl:for-each select="bar">                                    
            <xsl:value-of select="grill"/>                             
            <xsl:apply-templates match="baz"/>                         
        </xsl:for-each>                                                
    </xsl:template>                                                    

    <xsl:template match="foo">[<xsl:value-of select="." />|http://example.com/<xsl:value-of select="." />]</xsl:template>                     
</xsl:stylesheet>                                                      

Входные данные:

<?xml version="1.0"?>

<foo>
    <bar>
        <baz>a <foo>b</foo> c</baz>
        <grill>grill</grill>
    </bar>
</foo>

Выходные данные:

grill
        a [b|http://example.com/b] c
        grill

Я ожидал, что результат будет

grill
a [b|http://example.com/b] c

(мне пока не нужны проблемы с пробелами)

Я могу обойти эту проблему, обернув xsl: apply-templates с xsl: for-each:

<xsl:for-each select="grill">
    <xsl:apply-templates match="grill"/>
</xsl:for-each>

Но мне действительно не нравится это решение.Есть ли лучший способ?

1 Ответ

3 голосов
/ 01 ноября 2011

Атрибут match недопустим для элемента xsl:apply-templates.Измените match на select в xsl:apply-templates и попробуйте снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...