powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Проблема с порядком отображения информации.
4 сообщений из 4, страница 1 из 1
Проблема с порядком отображения информации.
    #34438334
ags05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пожалуйста, помогите разобратся.
Есть XML файл, со следующей структурой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
  <?xml version="1.0" encoding="windows-1251" ?> 
 <InfoPacket>
  <Source type="string">ПРАЙМ-ТАСС</Source> 
  <Time type="datetime"> 29 . 01 . 2007   10 : 41 : 51 </Time> 
 <InfoItem>
  <Text> 29  января. /Dow Jones/. Время и даты приведены по Гринвичу.</Text> 
 <Data>
 <Table abstract="">
  <Column name="col0" type="string">Дата</Column> 
  <Column name="col1" type="string">Событие, индикатор</Column> 
  <Column name="col2" type="string">Прогноз</Column> 
  <Column name="col3" type="string">Предыдущий показатель</Column> 
 <Row>
  <Cell name="col0" type="string"> 29  января  2007  года, понедельник</Cell> 
  <Cell name="col1" type="string" /> 
  <Cell name="col2" type="string" /> 
  <Cell name="col3" type="string" /> 
  </Row>
 <Row>
  <Cell name="col0" type="string"> 09 . 00  Италия</Cell> 
  <Cell name="col1" type="string">Показатели занятости в крупных компаниях за ноябрь</Cell> 
  <Cell name="col2" type="string" /> 
  <Cell name="col3" type="string" /> 
  </Row>
  </Table>
  </Data>
  <Text>/Конец/</Text> 
  <Text>Dow Jones Newswires, ПРАЙМ-ТАСС</Text> 
  </InfoItem>
  </InfoPacket> 

Для его отображения в браузере, написал такой xsl файл:

<?xml version="1.0" encoding="WINDOWS-1251" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<xsl:for-each select="InfoPacket/InfoItem/Text">
<p><xsl:value-of select="."/></p>
</xsl:for-each>

<table border="1">

<xsl:for-each select="InfoPacket/InfoItem/Data/Table/Column">
<td align="center"><strong><xsl:value-of select="."/></strong></td>
</xsl:for-each>

<xsl:for-each select="InfoPacket/InfoItem/Data/Table/Row">
<tr bgcolor="#F5F5F5">
<xsl:for-each select="Cell">
<td><xsl:value-of select="."/></td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>

</xsl:template>
</xsl:stylesheet>

Все работает, то есть в браузере я вижу текст и таблицу, но мне нужно, чтобы их порядок не менялся, то есть сейчас я вижу следующее:

29 января. /Dow Jones/. Время и даты приведены по Гринвичу.
/Конец/
Dow Jones Newswires, ПРАЙМ-ТАСС
ТАБЛИЦА.

Нужно:
29 января. /Dow Jones/. Время и даты приведены по Гринвичу.
ТАБЛИЦА.
/Конец/
Dow Jones Newswires, ПРАЙМ-ТАСС

Спасибо.
...
Рейтинг: 0 / 0
Проблема с порядком отображения информации.
    #34439384
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="Text">
        <p><xsl:value-of select="."/></p>
        <xsl:text>
</xsl:text>
    </xsl:template>
    <xsl:template match="Data">
    <table border="1">
        
        <xsl:for-each select="Table/Column">
            <td align="center"><strong><xsl:value-of select="."/></strong></td>
        </xsl:for-each>
        
        <xsl:for-each select="Table/Row">
            <tr bgcolor="#F5F5F5">
                <xsl:for-each select="Cell">
                    <td><xsl:value-of select="."/></td>
                </xsl:for-each>
            </tr>
        </xsl:for-each>
    </table>
    <xsl:text>
</xsl:text>
    
</xsl:template>
    <xsl:template match="InfoPacket/InfoItem">
    <xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
Токо выведется еще текст тех тегов которые ты не обрабатываешь
...
Рейтинг: 0 / 0
Проблема с порядком отображения информации.
    #34439413
ags05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Susa, большое спасибо. Все работает!

А можно все-таки не выводить теги, которые мне не нужны?
Это возможно как-нибудь сделать?
...
Рейтинг: 0 / 0
Проблема с порядком отображения информации.
    #34439534
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть два способа (третий пока не нашел.. а жаль.. ищу)
в общем
1. Описать все теги которые есть в твоем документе отдельными шаблонами, Можешь в них ничего не делать но описать должен
Просто добавь к коду:
Код: plaintext
1.
2.
<xsl:template match="Source"/>
    <xsl:template match="Time"/>
    
2. Писать как писал раньше, ну в смысле твой пример, токо
вместо
Код: plaintext
1.
2.
<xsl:for-each select="InfoPacket/InfoItem/Text">
<p><xsl:value-of select="."/></p>
</xsl:for-each>
пишешь
Код: plaintext
1.
2.
<xsl:for-each select="InfoPacket/InfoItem/Text[1]">
<p><xsl:value-of select="."/></p>
</xsl:for-each>
И еще в конце добавляешь. токо с [2] и [3]. Но такой код будет работать только для конкретного случая, и если что-то поменяешь придется переписывать весь xsl.
Так что лучше пиши как в 1-ом
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Проблема с порядком отображения информации.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]