Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите новичку с XSLT / 4 сообщений из 4, страница 1 из 1
03.11.2009, 12:11
    #36287878
Silence1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с XSLT
Мой поклон, уважаемый ALL!

Имеется xml вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<Table>
       <Row>
            <Naim>Экземпляр1</Naim>
            <id123> 7 </id123>
            <id444> 6 </id444>
            <id345> 8 </id345>
       </Row>
       <Row>
            <Naim>Экземпляр2</Naim>
            <id123> 4 </id123>
            <id444> 1 </id444>
            <id345> 1 </id345>
       </Row>
       <Row>
            <Naim>Экземпляр3</Naim>
            <id123> 10 </id123>
            <id444> 10 </id444>
            <id345> 5 </id345>
       </Row>
</Table>

До сих пор использовал XSLT вида:

Код: 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.
30.
31.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version = "1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/">
    <table border="1">
      <caption>Перечень</caption>
      <tr>
          <td >Наименование</td>
          <td >Код1</td>
          <td >Код2</td>
          <td  >Код3</td>          
       </tr>        
    <xsl:for-each select="Table/Row">
      <tr>
        <td >
          <xsl:value-of select="Naim"/>
        </td>
        <td >
          <xsl:value-of select=" id123"/>
        </td>
        <td >
          <xsl:value-of select=" id444"/>
        </td>
        <td>
          <xsl:value-of select=" id345"/>
        </td>
      </tr>
    </xsl:for-each>
    </table>       
    </xsl:template>
</xsl:stylesheet>

Т.е. поля idXXX задавались явным образом. Однако задача усложнилась и теперь заранее неизвестно какое будет число после id в исходном XML файле в конструкции idXXX. Можно ли как-то обойти такую неприятность?
...
Рейтинг: 0 / 0
03.11.2009, 18:27
    #36289240
Silence1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с XSLT
Сделал сам.:)
...
Рейтинг: 0 / 0
03.11.2009, 22:12
    #36289552
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с XSLT
Код: 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"?>
<xsl:stylesheet version = "1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="/Table">
    <table border="1">
      <caption>Перечень</caption>
      <tr>
        <td>Наименование</td>
        <td>Код1</td>
        <td>Код2</td>
        <td>Код3</td>          
      </tr>
      <xsl:apply-templates select="Row"/>
    </table>       
  </xsl:template>

  <xsl:template match="Row">
    <tr>
      <xsl:apply-templates select="*"/>
    </tr>
  </xsl:template>

  <xsl:template match="Row/*">
    <td>
      <xsl:value-of select="."/>
    </td>
  </xsl:template>

</xsl:stylesheet>

С уважением, Vasilisk
...
Рейтинг: 0 / 0
05.11.2009, 11:53
    #36291674
Silence1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку с XSLT
Vasilisk, спасибо.

Сам я сделал вот так:

Код: 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.
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version = "1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
    <table border="1">
      <caption>Перечень</caption>
      <tr>
          <td >Наименование</td>
          <td >Код1</td>
          <td >Код2</td>
          <td  >Код3</td>          
       </tr>        
       <xsl:for-each select="Table/Row">
       <tr>
        <td >
          <xsl:value-of select="Naim"/>
        </td>       
                <xsl:for-each select="*"> 
                       <xsl:if test="contains(name(),'id')">
  	             <td><xsl:value-of select="."/></td> 
  	          </xsl:if>   
                </xsl:for-each> 
       </tr> 
    </xsl:for-each>
    </table>       
    </xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите новичку с XSLT / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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