Xpoint
   [напомнить пароль]

Не выполняется цикл

Метки: [без меток]
2009-03-13 08:02:49 [обр] Ex_Soft[досье]

Дрозофила:

<?xml version="1.0" encoding="windows-1251"?>
<?xml-stylesheet type="text/xsl" href="data.xsl"?>
<contract xmlns="http://localhost/contract" xmlns:othersperson="http://localhost/othersperson">
   <contragent>Иванов Иван Иванович</contragent>
   <date>2009.03.11</date>
   <no>13</no>
   <othersperson:othersperson>
      <othersperson:contragent othersperson:date="1870.04.22">Ленин Владимир Ильич</othersperson:contragent>
      <othersperson:contragent othersperson:date="1878.12.18">Сталин Иосиф Виссарионович</othersperson:contragent>
      <othersperson:contragent othersperson:date="1894.04.17">Хрущев Никита Сергеевич</othersperson:contragent>
   </othersperson:othersperson>
</contract>
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="http://localhost/contract" xmlns:othersperson="http://localhost/othersperson">
   <xsl:output method="html" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN" encoding="windows-1251" />
   <xsl:template match="/">
      <html>
         <head>
            <title><xsl:value-of select="//my:contragent"/></title>
         </head>
         <body>
            <p><strong><xsl:value-of select="//my:contragent"/></strong></p>
            <p><xsl:value-of select="//my:date"/></p>
            <p><xsl:value-of select="//my:no"/></p>
            <table>
               <caption>Others Person I</caption>
               <thead>
                  <tr>
                     <th>Name</th>
                     <th>BirthDate</th>
                  </tr>
               </thead>
               <tbody>
                  <xsl:apply-templates select="my:contract/othersperson:othersperson" />
               </tbody>
            </table>
            <hr />
            <table>
               <caption>Others Person II</caption>
               <thead>
                  <tr>
                     <th>Name</th>
                     <th>BirthDate</th>
                  </tr>
               </thead>
               <tbody>
                  <xsl:for-each select="my:contract/othersperson:othersperson">
                     <tr>
                        <td><xsl:value-of select="othersperson:contragent" /></td>
                        <td><xsl:value-of select="othersperson:contragent/@othersperson:date" /></td>
                     </tr>
                  </xsl:for-each>
               </tbody>
            </table>
         </body>
      </html>
   </xsl:template>

   <xsl:template match="othersperson:othersperson">
      <tr>
         <td><xsl:value-of select="othersperson:contragent" /></td>
         <td><xsl:value-of select="othersperson:contragent/@othersperson:date" /></td>
      </tr>
   </xsl:template>
</xsl:stylesheet>

В обоих случаях выводит только 1 TR (с Лениным). А почему?

спустя 2 часа [обр] GRAy(64/259)[досье]
Дык вы же берёте только элемент othersperson в качестве итератора по циклу а он у вас один.
Должно быть видимо как-то так:
...
                  <xsl:for-each select="my:contract/othersperson:contragent">
                     <tr>
                        <td><xsl:value-of select="text()" /></td>
                        <td><xsl:value-of select="@othersperson:date" /></td>
                     </tr>
                  </xsl:for-each>
...
спустя 2 часа 27 минут [обр] Ex_Soft[досье]
Общими усилиями - вот так все растолкалось...
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="http://localhost/contract" xmlns:othersperson="http://localhost/othersperson">
   <xsl:output method="html" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN" encoding="windows-1251" />
   <xsl:template match="/">
      <html>
         <head>
            <title><xsl:value-of select="//my:contragent"/></title>
         </head>
         <body>
            <p><strong><xsl:value-of select="//my:contragent"/></strong></p>
            <p><xsl:value-of select="//my:date"/></p>
            <p><xsl:value-of select="//my:no"/></p>
            <table>
               <caption>Others Person I</caption>
               <thead>
                  <tr>
                     <th>Name</th>
                     <th>BirthDate</th>
                  </tr>
               </thead>
               <tbody>
                  <xsl:apply-templates select="my:contract/othersperson:othersperson" />
               </tbody>
            </table>
            <hr />
            <table>
               <caption>Others Person II</caption>
               <thead>
                  <tr>
                     <th>Name</th>
                     <th>BirthDate</th>
                  </tr>
               </thead>
               <tbody>
                  <xsl:for-each select="my:contract/othersperson:othersperson/othersperson:contragent">
                     <tr>
                        <td><xsl:value-of select="." /></td>
                        <td><xsl:value-of select="@othersperson:date" /></td>
                     </tr>
                  </xsl:for-each>
               </tbody>
            </table>
         </body>
      </html>
   </xsl:template>

   <xsl:template match="othersperson:othersperson">
      <xsl:apply-templates select="othersperson:contragent" />
   </xsl:template>

   <xsl:template match="othersperson:contragent">
      <tr>
         <td><xsl:value-of select="." /></td>
         <td><xsl:value-of select="@othersperson:date" /></td>
      </tr>
   </xsl:template>
</xsl:stylesheet>
Powered by POEM™ Engine Copyright © 2002-2005