2014-09-24 3 views
0

Я опубликовал, как три недели назад, вопрос о XSL 1.0, который получил отличный ответ о каждом. Но теперь мне нужен совет о создании для каждого внутри узла. Я почти уверен, что это вопрос о нобе, но, пожалуйста, помогите мне.XSL - Сделать для каждого внутри узла

Мой XML:

<?xml version="1.0" encoding="utf-8" ?> 
    <eOrden xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <EquipoServicio> 
     <eElemento> 
     <Clave>PAMO1</Clave> 
     <Descripcion>MODEM</Descripcion> 
     </eElemento> 
     <eElemento> 
     <Clave>ISP01</Clave> 
     <Descripcion>PRODIGY</Descripcion> 
     </eElemento> 
     <eElemento> 
     <Clave>IFR28</Clave> 
     <Descripcion>ACCESS</Descripcion> 
     </eElemento> 
    </EquipoServicio> 
    </eOrden> 

Мой XSL (до сих пор):

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:template match="/eOrden"> 

    <html> 
     <head></head> 
      <body> 
      <div> 
       <section class="sections"> 
        <fieldset> 
         <legend class="lbold">EQUIPO O SERVICIO</legend> 

         <div class="primerdiv" style="width:99.5%; padding-top:5px; padding-bottom: 7px; "> 

          <xsl:for-each select="EquipoServicio/eElemento[position() mod 7 = 1]" > 
           <div class="primerdiv letra" style="width:12.3%;"> 
            <div class="primerdiv letra" style="padding-top:2px; padding-bottom: 2px; width:100%"> 
             <div class="primerdiv eqsertitulo lbold" style="text-align:right; width:100%"> 
              EQ. O SERV.:&#xA0; 
             </div> 
             <div class="primerdiv eqsertitulo lbold" style="text-align:right; width:100%"> 
              DESCR.:&#xA0; 
             </div> 
             </div> 
            </div> 

           <xsl:apply-templates select=". | following-sibling::EquipoServicio/eElemento[position() &lt; 7]"/> 

          </xsl:for-each> 

         </div> 
        </fieldset> 
       </section> 
      </div> 
      </body> 
    </html> 
</xsl:template> 

<xsl:template match="eElemento"> 
    <div class="altbordeptes" style="float:left; width:12%;"> 
     <div class="primerdiv letra" style="width:98.5%;"> 
      <div class="eqser letra" style="border: 1px solid #D0D0D0; text-align:left; width:98.5%;"> 
       <xsl:value-of select="Clave"/> 
      </div> 
     </div> 
     <div class="primerdiv letra" style="width:98.5%;"> 
      <div class="eqser letra" style="border: 1px solid #D0D0D0; text-align:left; width:99.5%;"> 
       <xsl:value-of select="Descripcion"/> 
      </div> 
     </div> 
    </div> 
</xsl:template> 

</xsl:stylesheet> 

Почему, если я запускаю это итерация просто получает информацию о первом eElemento узле и не целых три узла? Если я возьму eElemento узлы за пределами узла EquipoServicio, выход будет правильным!

В результате я ожидаю, как это:

<section class="sections"> 
     <fieldset> 
      <legend class="lbold">EQUIPO O SERVICIO</legend> 
      <div class="primerdiv" style="width:99.5%; padding-top:5px; padding-bottom: 7px; "> 
       <div class="primerdiv letra" style="width:12.3%;"> 
        <div class="primerdiv letra" style="padding-top:2px; padding-bottom: 2px; width:100%"> 
        <div class="primerdiv eqsertitulo lbold" style="text-align:right; width:100%"> 
                  EQ. O SERV.:&nbsp; 

        </div> 
        <div class="primerdiv eqsertitulo lbold" style="text-align:right; width:100%"> 
                   DESCR.:&nbsp; 

        </div> 
        </div> 
       </div> 
       <div class="altbordeptes" style="float:left; width:12%;"> 
        <div class="primerdiv letra" style="width:98.5%;"> 
        <div class="eqser letra" style="border: 1px solid #D0D0D0; text-align:left; width:100%;">PAMO1</div> 
        </div> 
        <div class="primerdiv letra" style="width:98.5%;"> 
        <div class="eqser letra" style="border: 1px solid #D0D0D0; text-align:left; width:100%;">MODEM</div> 
        </div> 
       </div> 
       <div class="altbordeptes" style="float:left; width:12%;"> 
        <div class="primerdiv letra" style="width:98.5%;"> 
        <div class="eqser letra" style="border: 1px solid #D0D0D0; text-align:left; width:100%;">ISP01</div> 
        </div> 
        <div class="primerdiv letra" style="width:98.5%;"> 
        <div class="eqser letra" style="border: 1px solid #D0D0D0; text-align:left; width:100%;">PRODIGY</div> 
        </div> 
       </div> 
       <div class="altbordeptes" style="float:left; width:12%;"> 
        <div class="primerdiv letra" style="width:98.5%;"> 
        <div class="eqser letra" style="border: 1px solid #D0D0D0; text-align:left; width:100%;">IFR28</div> 
        </div> 
        <div class="primerdiv letra" style="width:98.5%;"> 
        <div class="eqser letra" style="border: 1px solid #D0D0D0; text-align:left; width:100%;">ACCESS</div> 
        </div> 
       </div> 

      </div> 
     </fieldset> 
     </section> 

Спасибо заранее. Tonio.

ответ

0

изменение Try:

<xsl:apply-templates select=". | following-sibling::EquipoServicio/eElemento[position() &lt; 7]"/> 

к:

<xsl:apply-templates select=". | following-sibling::eElemento[position() &lt; 7]"/> 

Эти два не почти то же самое.


Примечание:

Ваш вход недействительный: EquipoServicio элемент не имеет закрывающего тега. Было бы также лучше удалить все «шум» (например, CSS), несущественный для вопроса.

Смежные вопросы