1

好的,我有 2 个 XML(一个用于动漫和电影)文件(具有相同的标签和 DTD,因此您只需要查看其中 1 个 XML 文件的格式)。1 XML(电影 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(以动漫为主题的 XML 文件)文件具有完全相同的格式,除了它在每个“流派”标签中都有“动漫”。

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

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

4

1 回答 1

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 认为文件名包含空格。

于 2013-10-24T06:52:46.550 回答