Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > XML через XSLT


Автор: Keylo 24.5.2013, 07:56
Добрый день.
Есть xml:

Код

<?xml version="1.0" encoding="UTF-8" ?>
<result>
  <response>
    <code>200</code>
  </response>
  <tracks>
    <track id="62980560039347">
      <code>200</code>
      <status>COMPLETE</status>
      <destination>RU</destination>
      <errstr />
      <updated>1364085317</updated>
      <checked>1364085317</checked>
      <info>
        <status>
          <message>Вручение, Томск 45, Вручение адресату</message>
          <date>14.03.2013 00:00</date>
          <timestamp>1363197600</timestamp>
          <ops_id>11035</ops_id>
          <service_id>EMS_RU</service_id>
          <service_name>Почта России</service_name>
          <operation>Вручение</operation>
          <weight>0</weight>
        </status>
        <status>
          <message>Обработка, Томск 45, Прибыло в место вручения</message>
          <date>14.03.2013 09:24</date>
          <timestamp>1363231440</timestamp>
          <ops_id>11035</ops_id>
          <service_id>EMS_RU</service_id>
          <service_name>Почта России</service_name>
          <operation>Обработка</operation>
          <weight>1,450</weight>
        </status>
        <status>
          <message>Обработка, Томск МСЦ, Покинуло сортировочный центр</message>
          <date>13.03.2013 00:00</date>
          <timestamp>1363111200</timestamp>
          <ops_id>9901</ops_id>
          <service_id>EMS_RU</service_id>
          <service_name>Почта России</service_name>
          <operation>Обработка</operation>
          <weight>0</weight>
        </status>
        <status>
          <message>Обработка, Ноябрьск почтамт, Покинуло сортировочный центр</message>
          <date>09.03.2013 00:00</date>
          <timestamp>1362765600</timestamp>
          <ops_id>55370</ops_id>
          <service_id>EMS_RU</service_id>
          <service_name>Почта России</service_name>
          <operation>Обработка</operation>
          <weight>0</weight>
        </status>
        <status>
          <message>Приём, Ноябрьск 5, Партионный</message>
          <date>07.03.2013 00:00</date>
          <timestamp>1362592800</timestamp>
          <ops_id>14652</ops_id>
          <service_id>EMS_RU</service_id>
          <service_name>Почта России</service_name>
          <operation>Приём</operation>
          <weight>1,134</weight>
        </status>
        <status>
          <message>Сервис ГдеПосылка.ру начал отслеживание посылки</message>
          <date>15.03.2013 08:43</date>
          <timestamp />
          <ops_id />
          <service_id>GP</service_id>
          <service_name>ГдеПосылка.ру</service_name>
          <operation>GP: Added on site</operation>
          <weight />
        </status>
      </info>
    </track>
  </tracks>
  <geo />
</result>



Есть XSLT:

Код

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="result/tracks/track">
                <style type="text/css">
                    h1          { padding: 10px; padding-width: 100%; background-color: silver }
                    td, th      { width: 40%; border: 1px solid silver; padding: 10px }
                    td:first-child, th:first-child  { width: 15% } 
                    table       { width: 650px }
                </style>
    <h1>Трек-номер отправления: <xsl:value-of select="@id"/></h1>
        <table>
            <tr><th>Дата</th><th>Статус</th></tr>
            <xsl:apply-templates/>
         </table>       
    </xsl:template>
    <xsl:template match="info/*">
        <tr>
            <td><xsl:value-of select="date"/></td>
            <td><xsl:value-of select="message"/></td>
        </tr>
    </xsl:template>
</xsl:stylesheet>


Выдает то, что на картинке.
http://s1.ipicture.ru/

Пробовал все убирать, просто дату выдергивать, все равно выдает все данные, прописанные до инфо и даты.
Как их можно убрать? Или как правильно написать xslt, чтобы он их не видел?



M
diadiavova
Не забываем использовать теги CODE, а так же форматировать документ.

Автор: chizz 24.5.2013, 10:27
Вот рабочий xslt

Код

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
                <style type="text/css">
                    h1          { padding: 10px; padding-width: 100%; background-color: silver }
                    td, th      { width: 40%; border: 1px solid silver; padding: 10px }
                    td:first-child, th:first-child  { width: 15% } 
                    table       { width: 650px }
                </style>
    <h1>Трек-номер отправления: <xsl:value-of select="result/tracks/track/@id"/></h1>
        <table>
            <tr><th>Дата</th><th>Статус</th></tr>
            <xsl:apply-templates select="result/tracks/track/info/status"/>
         </table>       
   </xsl:template>
    <xsl:template match="status">
        <tr>
            <td><xsl:value-of select="date"/></td>
            <td><xsl:value-of select="message"/></td>
        </tr>
    </xsl:template>
    
</xsl:stylesheet>



С вложенностью тэгов какие-то траблы. Точно не знаю, в чем проблема. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)