基本XML / XSLT:将模板应用于多个元素

时间:2014-07-11 11:46:46

标签: xml xslt

我正在尝试自学XSLT。这可能是一个非常基本的问题,但经过大量的搜索,以及网络上的其他网站,我仍然无法解决这个问题。

我一直在尝试重新创建此问题中描述的方案:How can you deal with embedded XML tags in XSLT?

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test.html.xsl"?>
<favoriteMovies>
  <favoriteMovie>the <i>Star Wars</i> saga</favoriteMovie>
</favoriteMovies>

这是XSL:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="html" omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
  <html>
    <head />
    <body>
     <xsl:apply-templates/>
    </body>
  </html>
 </xsl:template>

 <xsl:template match="/*">
  <ul>
   <xsl:apply-templates/>
  </ul>
 </xsl:template>

 <xsl:template match="favoriteMovie">
  <li><xsl:copy-of select="node()"/></li>
 </xsl:template>
</xsl:stylesheet>

这适用于这个特定的例子。但是当我添加另一部最喜欢的电影&#34; ...

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test.html.xsl"?>
<favoriteMovies>
  <favoriteMovie>the <i>Star Wars</i> saga</favoriteMovie>
</favoriteMovies>
<favoriteMovies>
  <favoriteMovie>the <i>Godfather</i> trilogy</favoriteMovie>
</favoriteMovies>

我得到的只是一个错误...

  

XML解析错误:文档元素之后的垃圾位置:   localhost:8888 / test.xml第6行,第1列:      ^

我需要做些什么来改变这项工作?

1 个答案:

答案 0 :(得分:1)

任何XML文档都需要包含一个顶级根元素,其中包含所有其他元素,例如。

<root>
<favoriteMovies>
  <favoriteMovie>the <i>Star Wars</i> saga</favoriteMovie>
</favoriteMovies>
<favoriteMovies>
  <favoriteMovie>the <i>Godfather</i> trilogy</favoriteMovie>
</favoriteMovies>
</root>

<favoriteMovies>
 <favoriteMovie>the <i>Star Wars</i> saga</favoriteMovie>
 <favoriteMovie>the <i>Godfather</i> trilogy</favoriteMovie>
<favoriteMovies>