ОБСУЖДЕНИЕ

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

5 ответов 5,7 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

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

Появилась новая:
после выполнения 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 < $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]
 

Вложения

Мдаааааааааааааа
узнаю классический форум
Куча народу которые собираются вместе лишь для того чтобы поболтать
Три проблемы три вопроса....
На них 200 просмотров в сумме И НИ ОДНОГО ХОТЬ КАКОГО-НИБУДЬ ОТВЕТА
Хоть бы уточняющие вопросы задали:please:
Отвечают на самое простое а решение реальных проблем никто не хочет даже обдумывать:)
Так держать народ:)
МОЛОДЦЫ!!!!!!!!!!!!!!
***P.S.***Можете меня забанить за этот пост:) Я не против этого:) Один чёрт здесь нет людей готовых помочь комуто другому
 
разобрался уже?
мне кажется или тот xml, который ты прикрепил не все хранит, что надо?
где /report/rephead?
а результат обработки, подобный твоему, у меня вылазил, если шаблоны некорректные были, получалось, что данные дублировались в конце... правда, точную ошибку я не вспомню - давно было дело... звыняй. но постараюсь помочь чем смогу, если актуально :)
 
Ну да точно... перепутал XML'ы.... :)
Проблема уже ушла..... Ушла после замены <xsl:template match='/report/rephead'> на <xsl:template match='/'> почему я не знаю....
кстати как тут тему сделать "закрытой"????? Раз уж меня не забанили то попробую остаться у вас:)
 
https://codeby.net/threads/33809.html
Если самому не получится (у некоторых глюки-пустое меню было), закрою завтра сама.
 
Проблема уже ушла..... Ушла после замены <xsl:template match='/report/rephead'> на <xsl:template match='/'> почему я не знаю....
думаю, что от того, что так ты начинал обрабатывать XML от сущности '/report/rephead', для остальных данных обработчика не было, т.к. они были вне этой сущности, поэтому они были просто выброшены в результат.
а в случае с <xsl:template match='/'> обработка ведется для всех сущностей начиная с корневой, т.к. шаблоны для обработки у тебя были.
например, если ты уберешь один из шаблонов, то эффект должен быть такой же - данные, для которых нет шаблона, попадут в результат без обработки.

зы: зачем тему закрывать-то? у кого-то будет схожая беда, пусть и допишет сюда же