这是我的XML: (这是葡萄牙语,但我想这无关紧要)
<xml_tube>
<utilizadores>
<utilizador username="Guicky" password="futurama96">
<nome>Guilherme Luís</nome>
<birthday>1996-11-28</birthday>
<foto href="guilhas.jpg"/>
</utilizador>
<utilizador username="Daisy" password="woofwoof11">
<nome>Daisy Luís</nome>
<birthday>2011-04-04</birthday>
<foto href="daisy.png"/>
</utilizador>
<utilizador username="Anabela65" password="crumble65">
<nome>Anabela Ribeiro</nome>
<birthday>1965-04-02</birthday>
<foto href="belinha.jpg"/>
</utilizador>
<utilizador username="Izzie" password="lagartixa">
<nome>Isadora Luís</nome>
<birthday>1988-06-27</birthday>
<foto href="izzie.jpg"/>
</utilizador>
</utilizadores>
<videos_pub>
<video id="Vid1" publisher="Daisy" duracao="3:37" data="2016-02-29">
<título>Who let the dogs out? - Baha Men</título>
<thumb>http://i3.ytimg.com/vi/Qkuu0Lwb5EM/hqdefault.jpg</thumb>
<descrição>My favorite song, lol.</descrição>
<hyperlink>https://www.youtube.com/watch?v=Qkuu0Lwb5EM</hyperlink>
<qualidade pixelization="1080p"/>
<qualidade pixelization="480p"/>
<likes liked="Guicky"/>
<related></related>
</video>
<video id="Vid2" publisher="Guicky" duracao="4:01" data="2016-02-29">
<título>Desiigner - Timmy Turner</título>
<thumb>http://i3.ytimg.com/vi/JzmRt2VgKYQ/hqdefault.jpg</thumb>
<descrição>Timmy Timmy Timmy Turner.</descrição>
<hyperlink>https://www.youtube.com/embed/ProbPpO_8oo</hyperlink>
<qualidade pixelization="720p"/>
<qualidade pixelization="1080p"/>
<likes liked="Anabela65"/>
<likes liked="Daisy"/>
<related></related>
</video>
<video id="Vid3" publisher="Guicky" duracao="3:47" data="2016-02-29">
<título>I'm all the way up - Fat Joe</título>
<thumb>https://www.youtube.com/watch?v=y2ak_oBeC-I</thumb>
<descrição>Nothing can stop me, I'm all the way up.</descrição>
<hyperlink>https://www.youtube.com/embed/y2ak_oBeC-I</hyperlink>
<qualidade pixelization="480p"/>
<qualidade pixelization="720p"/>
<related></related>
</video>
<video id="Vid4" publisher="Anabela65" duracao="3:21" data="2016-02-29">
<título>Putzgrilla - Sentadinha</título>
<thumb>http://i3.ytimg.com/vi/QC4JbIvIhdI/hqdefault.jpg</thumb>
<descrição>Dá uma sentadinha.</descrição>
<hyperlink>https://www.youtube.com/watch?v=QC4JbIvIhdI</hyperlink>
<qualidade pixelization="720p"/>
<likes liked="Guicky"/>
<likes liked="Daisy"/>
<related></related>
</video>
<video data="2017-01-13" duracao="02:16" id="Vid5" publisher="Izzie">
<título>Yann Tiersen - La Valse d'Amelie</título>
<thumb>http://i3.ytimg.com/vi/uzurqBnALkw/hqdefault.jpg</thumb>
<descrição>A minha música preferida.</descrição>
<hyperlink>https://www.youtube.com/watch?v=uzurqBnALkw</hyperlink>
<qualidade pixelization="720p"/>
<likes liked="Guicky"/>
<likes liked="Anabela65"/>
<related></related>
</video>
</videos_pub>
<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>
<thumbnail link="http://i3.ytimg.com/vi/QC4JbIvIhdI/hqdefault.jpg"/>
</lista>
<lista owner="Anabela65" dataIns="2016-02-29" id="PV2">
<titulo>Sentadinha!</titulo>
<descricao>Siting 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>
<thumbnail link="http://i3.ytimg.com/vi/uMK0prafzw0/hqdefault.jpg"/>
</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: (版本1.0)
<?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"/>
<a href="https://www.youtube.com">
<img id="img" src="img/logos/logo.png"/>
</a>
<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>Lista de Utilizadores</h1>
<xsl:for-each select="xml_tube/utilizadores">
<xsl:for-each select="utilizador">
<xsl:for-each select="foto">
<xsl:element name="img">
<xsl:attribute name="src">
<xsl:value-of select="@href"/>
</xsl:attribute>
<xsl:attribute name="width">20%</xsl:attribute>
<xsl:attribute name="height">auto</xsl:attribute>
</xsl:element>
</xsl:for-each>
<xsl:variable name="utilizadores" select="@username"/>
<p><strong>Username: </strong><xsl:value-of select="@username"/></p>
<p><strong>Nome: </strong> <xsl:value-of select="nome"/></p>
<p><strong>Birthday: </strong> <xsl:value-of select="birthday"/></p>
<p><strong>Vídeos Publicados:</strong> <xsl:value-of select="xml_tube/videos_pub/video[@publisher=$utilizadores]/título"/></p>
</xsl:for-each>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我遇到了这个特定部分的问题:
<xsl:variable name="utilizadores" select="@username"/>
<p><strong>Username: </strong><xsl:value-of select="@username"/></p>
<p><strong>Nome: </strong> <xsl:value-of select="nome"/></p>
<p><strong>Birthday: </strong> <xsl:value-of select="birthday"/></p>
<p><strong>Vídeos Publicados:</strong> <xsl:value-of select="xml_tube/videos_pub/video[@publisher=$utilizadores]/título"/></p>
</xsl:for-each>
我想使用xsl:for-each
迭代的用户的@username,并使用它来搜索@username的已发布视频。
预期产出:
Videos publicados: Vid1Vid3
我的问题是:如何使用xsl:for-each为我提供每个用户名,然后向我提供该特定用户名的视频
答案 0 :(得分:1)
问题不在于您的变量,而在于您的XPath ..您位于utilizador
的上下文中,并且在此上下文中指示:
<xsl:value-of select="xml_tube/videos_pub/video[@publisher=$utilizadores]/título"/>
不选择任何内容,因为xml_tube
不是utilizador
的孩子。
你应该使用绝对路径,如:
/xml_tube/videos_pub/video[@publisher=$utilizadores]/título
并且您应该在xsl:for-each
指令中使用此内容 - 除非每个utilizador
最多只有一个video
。
更好的是,使用 key 来解决交叉引用问题。