2017-01-09 3 views
1

У меня возникли некоторые проблемы с XSLT, это мой XML-код:XSL: для каждого-возвращает только первый узел

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> 
<!DOCTYPE xml_tube SYSTEM "C:\Users\Asus\Desktop\LEIM\tps\tp2\Um utilizador\Utilizador\xml__tube.dtd"> 

<?xml-stylesheet type="text/xsl" href="utilizadorG.xsl" ?> 

<xml_tube> 
    <playlist> 
     <lista owner="Guicky" dataIns="2016-10-24" id="PV1"> 
      <titulo>BEST MUSIC.</titulo> 
      <descricao>Compilation of my favourite music videos.</descricao> 
      <gostosL gostouL="Guicky"/> 
      <links_vid vid="Vid2"/> 
      <links_vid vid="Vid3"/> 
      <administradores> 
       <admin ref="Guicky"/> 
       <admin ref="Daisy"/> 
      </administradores> 
      <editores> 
       <editor ref="Guicky"/> 
      </editores> 
      <subscritores> 
       <subs ref="Daisy"/> 
       <subs ref="Anabela65"/> 
      </subscritores> 
     </lista> 
     <lista owner="Anabela65" dataIns="2016-02-29" id="PV2"> 
      <titulo>Cooking Lessons!</titulo> 
      <descricao>Cooking lesson's with Guicky's mom!</descricao> 
      <links_vid vid="Vid4"/> 
      <administradores> 
       <admin ref="Anabela65"/> 
       <admin ref="Guicky"/> 
      </administradores> 
      <editores> 
       <editor ref="Anabela65"/> 
      </editores> 
      <subscritores> 
       <subs ref="Guicky"/> 
       <subs ref="Daisy"/> 
      </subscritores> 
     </lista> 
    </playlist> 
    <comentarios> 
     <comentario id="C1" refV="Vid1" user="Guicky" data="2016-10-23"> 
      <text>AHAHAHAHA, bom vídeo.</text> 
      <gosto gostou="Daisy"/> 
      <respostas> 
       <texto autor="Daisy">Grande clássico!</texto> 
      </respostas> 
     </comentario> 
     <comentario id="C2" refL="Vid2" user="Anabela65" data="2016-10-22"> 
      <text>Timmy timmy timmy turner...</text> 
      <gosto gostou="Guicky"/> 
      <gosto gostou="Daisy"/> 
      <respostas> 
       <texto autor="Guicky">U know it.</texto> 
       <resposta autor="Daisy">LOL!</resposta> 
      </respostas> 
     </comentario> 
    </comentarios> 
</xml_tube>` 

Это мой XSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:output doctype-public="-//W3C//DTD XHTML 1.1//EN" 
      doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" /> 


    <xsl:template match="/"> 
     <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="eng"> 
      <head> 
       <title>My XML Tube</title> 
       <link rel="stylesheet" type="text/css" href="XML_Tube.css" charset="UTF-8"/> 
       <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet"/> 
       <link rel="icon" 
         type="image.png" 
         href="favicon-16.png"/> 
      </head> 
      <body> 
       <div class="spacer"/> 
       <img id="img" src="img/logos/logo.png"/> 
       <nav> 
        <ul> 
         <li><a href="home.html">Playlists</a> 
          <ul> 
           <li><a href="../XMLTube.xml#body">Playlist</a></li> 
           <li><a href="">Playlists</a></li> 
          </ul> 
         </li> 
         <li><a href="portfolio.html">Utilizadores</a> 
          <ul> 
           <li><a href="Portfolio.html#NOSLeague">Um utilizador</a></li> 
           <li><a href="Portfolio.html#PremierLeague">Lista geral de utilizadores</a></li> 
          </ul> 
         </li> 
         <li><a href="contacts.html">Vídeos</a> 
          <ul> 
           <li><a href="Contacts.html#gui">Vídeo</a></li> 
           <li><a href="Contacts.html#rodri">Lista geral de vídeos</a></li> 
          </ul> 
         </li> 
        </ul> 
       </nav> 
       <h1 id="lala">Playlists</h1> 
       <section> 
       <xsl:for-each select="xml_tube/playlist/lista"> 
       <article class="list"> 
        <figure> 
         <xsl:element name="img"> 
          <xsl:attribute name="src"> 
           <xsl:value-of select="thumbnail/@link"/> 
          </xsl:attribute> 
          <xsl:attribute name="width">50%</xsl:attribute> 
          <xsl:attribute name="height">auto</xsl:attribute> 
         </xsl:element> 
         <figcaption> 
          <a href="https://www.google.com"><h1><xsl:value-of select="titulo"/></h1></a> 
          <p><strong>Nome de utilizador: </strong> <xsl:value-of select="@owner"/></p> 
          <p><strong>Descrição: </strong> <xsl:value-of select="descricao"/></p> 
          <p><strong>Administradores:</strong> <xsl:value-of select="administradores/admin/@ref"/></p> 
          <p><strong>Editores: </strong> <xsl:value-of select="editores/editor/@ref"/></p> 
          <p><strong>Subscritores: </strong> <xsl:value-of select="subscritores/subs/@ref"/> 
          <xsl:text></xsl:text> 
          </p> 


         </figcaption> 
        </figure> 
       </article> 
       </xsl:for-each> 
       </section> 
      </body> 
     </html> 
    </xsl:template> 
</xsl:stylesheet> 

В основном моя проблема заключается в том, что xsl: for-each только получает мне первый атрибут @subs. И у меня такая же проблема с administradores/@ref. Я португальский, и это часть школьной работы, у меня не было времени переводить каждый узел, но я думаю, что это не должно быть проблемой. В любом случае, спасибо заранее!

Мой ожидается выход:

Subscritores: Daisy 
Subscritores: Anabela 
+1

Пожалуйста, измените свой вопрос и добавить (1) ** ** полные таблицы стилей (или, по крайней мере, полный шаблон) и (2) ожидаемый результат. –

ответ

1

В XSLT 1.0 - который, по-видимому, что вы используете - xsl:value-of инструкция возвращает значение только первого узла в выбранном наборе узлов.

Если вы хотите перечислить все значения, вам необходимо получить их по одному: например. вместо:

<xsl:value-of select="administradores/admin/@ref"/> 

использование:

<xsl:for-each select="administradores/admin"> 
    <xsl:value-of select="@ref" /> 
    <xsl:text> </xsl:text> 
</xsl:for-each> 
+0

Ты мой герой, спасибо тебе много! – Guilhermeffable

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