关于使用XSLT& amp;显示图像的不同问题。 XHTML

时间:2013-10-23 11:54:33

标签: xml image xslt xhtml

好的,我有2个XML(一个用于动漫和电影)文件(使用相同的标签和DTD,因此您只需要查看其中一个XML文件的格式)。 1 XML(Movie XML文件)文件具有以下格式......

<Stories>
<Fan_Fiction>
    <Genre> Movie </Genre>
    <World> The Matrix </World>
    <Story>
        <Title Alternative_Title="The Matrix Sensolutions"> The Matrix Revolverlutions </Title>
        <Year_Made> 2003 </Year_Made>
        <Author Gender="Male">
            <First_Name> James </First_Name>
            <Last_Name> Blake </Last_Name>
        </Author>
        <Author_Country> Unknown </Author_Country>
        <Language> English </Language>
        <Theme> Reality </Theme>
        <Theme> Artificial Intelligence </Theme>
        <Theme> Freedom </Theme>
        <Content_Warning> Intense violence. Nudity. Strong language. Drug use. </Content_Warning>
        <Description> In this alternative ending to the Matrix trilogy; we find Neo has survived his epic battle with Smith.
        However, freeing humanity from the Matrix is proving more difficult than expected </Description>
        <Link> http://matrix.wikia.com/wiki/Neo </Link>
        <Image> Neo.jpg </Image>
    </Story>
</Fan_Fiction>

是的,我在XML文件中为每部电影都有一个“Fan_Fiction”标签(包含所有子标签)。

基本上,第二个XML(Anime主题XML文件)文件具有完全相同的格式,除了它在每个“Genre”标记内都有“Anime”。

好的,现在我有一个XSLT文件,它将这两个XML文件输出为HTML(我可以将两个XML文件链接到一个XSL文件,因为它们共享相同的标签和DTD)。我的问题是如何使用HTML命令(我的XSLT文件中的"<img src=" " />"命令)来显示2个XML文件中NAMED的图像(XML文件的“Neo.jpg”部分)。

好的,所以它似乎很多,但基本上我被告知可以在我的XSL文档中使用"<img src=" " />"命令,这样当我“运行”2个XML文件时,它们将引用我的XSLT文件&amp;分别显示他们的图像。如何在XSLT中使用HTML命令执行此操作,以便它适用于这两个文档?

1 个答案:

答案 0 :(得分:2)

当我必须这样做时,我想出了

<img alt="">
 <xsl:attribute name="src">
  <xsl:value-of select="Stories/Fan_Fiction/Story/Image"/>
 </xsl:attribute>
</img>
在XSLT文件中

。使用</img>和所有内容看起来有点傻,但它运行正常!在Firefox和Opera中,就是这样。 Chrome似乎不想合作,因此您可能需要进行一些实验。无论如何,我希望这会有所帮助。

编辑:这是一个更完整的xsl文件,它与您问题中的文件一起使用,并循环遍历所有Fan_Fiction元素。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="/">
  <html>
   <title>Fanfix</title>
   <body>
    <xsl:for-each select="Stories/Fan_Fiction">
     <h1><xsl:value-of select="World"/></h1>
     <h2><xsl:value-of select="Story/Title"/></h2>
     <img alt="">
      <xsl:attribute name="src">
       <xsl:value-of select="Story/Image"/>
      </xsl:attribute>
     </img>
     <p>Author: <xsl:value-of select="Story/Author/First_Name"/>
         <xsl:value-of select="Story/Author/Last_Name"/></p>
     <p>etc</p>
    </xsl:for-each>
  </body>
  </html>
 </xsl:template>
</xsl:stylesheet>

我在http://strictquirks.nl/temp/neo/stories.xml上放了一个演示,以便您可以看到它的实际效果。

顺便说一句,我不得不删除XML中img名称周围的空格,因为这是它在Chrome中不起作用的原因:Chrome认为文件名包含空格。