Очередная проблема с Xslt

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем morfius, 16 фев 2010.

  1. morfius

    morfius Гость

    Люди ну если ктонибудь тут есть живой помогите пожалуйста!!!!!
    Первые две проблемы всё таки решил хотя и с огромным трудом.

    Появилась новая:
    после выполнения XSLT выдаёт нужную информацию а в конец файла дописывает данные из исходного XML в чистом виде: без тегов, но с переносами строк.
    Исходный, файл и результат прилагаются в архиве. XSLT приведено здесь. XML-парсер - saxon 8. OS: Ubuntu 9.10
    <!--shcode--><pre><code class='xml'><xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
    <xsl:param name='height' select ='/report/rephead/@height' />
    <xsl:param name='width' select ='/report/rephead/@width' />

    <xsl:template match='/report/rephead'>
    <xsl:param name='lev' select='1'/>

    <table border='1'>
    <tr>
    <td>
    <xsl:attribute name='colspan'>
    <xsl:value-of select='$width' />
    </xsl:attribute>
    <xsl:attribute name='rowspan'>
    <xsl:value-of select='$height+1' />
    </xsl:attribute>
    </td>
    </tr>

    <xsl:call-template name='headTransform'>
    <xsl:with-param name='lev' select='1'/>
    </xsl:call-template>

    <xsl:call-template name='bodyTransform' />

    </table>
    </xsl:template>

    <xsl:template name='headTransform'>
    <xsl:param name='lev'/>
    <tr align='center'>
    <xsl:for-each select='/report/rephead/descendant::cell'>
    <xsl:if test='@level = $lev'>
    <td>
    <xsl:attribute name='colspan'>
    <xsl:value-of select='count(descendant::header)' />
    </xsl:attribute>
    <xsl:value-of select='@value' />
    </td>
    </xsl:if>
    </xsl:for-each>
    </tr>
    <xsl:if test='$lev &lt; $height'>
    <xsl:call-template name='headTransform'>
    <xsl:with-param name='lev' select='$lev+1'/>
    </xsl:call-template>
    </xsl:if>

    </xsl:template>

    <xsl:template name='bodyTransform'>
    <xsl:for-each select='/report/body/descendant::row'>
    <tr>
    <xsl:for-each select='descendant::cell'>
    <td>
    <xsl:value-of select="." />
    </td>
    </xsl:for-each>
    </tr>
    </xsl:for-each>
    </xsl:template>

    </xsl:stylesheet>[/CODE]
     

    Вложения:

    • test.tar.gz
      Размер файла:
      2,8 КБ
      Просмотров:
      8
  2. morfius

    morfius Гость

    Мдаааааааааааааа
    узнаю классический форум
    Куча народу которые собираются вместе лишь для того чтобы поболтать
    Три проблемы три вопроса....
    На них 200 просмотров в сумме И НИ ОДНОГО ХОТЬ КАКОГО-НИБУДЬ ОТВЕТА
    Хоть бы уточняющие вопросы задали:please:
    Отвечают на самое простое а решение реальных проблем никто не хочет даже обдумывать:)
    Так держать народ:)
    МОЛОДЦЫ!!!!!!!!!!!!!!
    ***P.S.***Можете меня забанить за этот пост:) Я не против этого:) Один чёрт здесь нет людей готовых помочь комуто другому
     
  3. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    разобрался уже?
    мне кажется или тот xml, который ты прикрепил не все хранит, что надо?
    где /report/rephead?
    а результат обработки, подобный твоему, у меня вылазил, если шаблоны некорректные были, получалось, что данные дублировались в конце... правда, точную ошибку я не вспомню - давно было дело... звыняй. но постараюсь помочь чем смогу, если актуально :)
     
  4. morfius

    morfius Гость

    Ну да точно... перепутал XML'ы.... :)
    Проблема уже ушла..... Ушла после замены <xsl:template match='/report/rephead'> на <xsl:template match='/'> почему я не знаю....
    кстати как тут тему сделать "закрытой"????? Раз уж меня не забанили то попробую остаться у вас:)
     
  5. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
  6. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    думаю, что от того, что так ты начинал обрабатывать XML от сущности '/report/rephead', для остальных данных обработчика не было, т.к. они были вне этой сущности, поэтому они были просто выброшены в результат.
    а в случае с <xsl:template match='/'> обработка ведется для всех сущностей начиная с корневой, т.к. шаблоны для обработки у тебя были.
    например, если ты уберешь один из шаблонов, то эффект должен быть такой же - данные, для которых нет шаблона, попадут в результат без обработки.

    зы: зачем тему закрывать-то? у кого-то будет схожая беда, пусть и допишет сюда же
     
Загрузка...
Похожие Темы - Очередная проблема Xslt
  1. pbnoob
    Ответов:
    9
    Просмотров:
    4.854
  2. AgniXRudra
    Ответов:
    1
    Просмотров:
    39
  3. Zloikaktus
    Ответов:
    0
    Просмотров:
    18
  4. c0de3r
    Ответов:
    5
    Просмотров:
    135
  5. DobermannTT
    Ответов:
    10
    Просмотров:
    140

Поделиться этой страницей