• Бесплатный ВЕБИНАР по OSINT с Екатериной Тьюринг: ➡️9 февраля в 19:00 (мск) пройдет урок

    Как безопасно искать информацию в открытых источниках

    🔥 Записаться 🔥

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

  • Автор темы Автор темы morfius
  • Дата начала Дата начала
M

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 < $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='/'> почему я не знаю....
кстати как тут тему сделать "закрытой"????? Раз уж меня не забанили то попробую остаться у вас:)
 
Проблема уже ушла..... Ушла после замены <xsl:template match='/report/rephead'> на <xsl:template match='/'> почему я не знаю....
думаю, что от того, что так ты начинал обрабатывать XML от сущности '/report/rephead', для остальных данных обработчика не было, т.к. они были вне этой сущности, поэтому они были просто выброшены в результат.
а в случае с <xsl:template match='/'> обработка ведется для всех сущностей начиная с корневой, т.к. шаблоны для обработки у тебя были.
например, если ты уберешь один из шаблонов, то эффект должен быть такой же - данные, для которых нет шаблона, попадут в результат без обработки.

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!