3

我刚刚使用导出应用程序将整个 LiveJournal-Blog 导出到 XML 文件。这样做的原因是将其全部存档并为后代保留。我想为它制作一个简单的布局文件,这样我就可以阅读帖子并怀旧。它看起来像任何常规 XML 文件:

<livejournal>
  <entry>
    <itemid>1</itemid>
    <eventtime>Date/time</eventtime>
    <subject>Subject Line</subject>
    <event>The actual post</event>
    <allowmask>0</allowmask>
    <current_mood>current mood</current_mood>
    <current_music>current mood</current_music>
    <taglist>comma, separated, tags</taglist>
    <comment>
      <itemid>2433</itemid>
      <eventtime>Date</eventtime>
      <subject>Subject Line</subject>
      <event>The actual comment</event>
      <author>
        <name>Commenter</name>
        <email>Commenter@email</email>
      </author>
    </comment>
  </entry>
  <entry>
</livejournal>

到目前为止,一切都很好。当我尝试为它制作一个 xsl 文件时,就会出现问题。xml 文件中的 <event> 标记不仅包含文本,还包含 HTML。首先,HTML 编写于 2004 年,由各种 meme 生成器生成。因此,代码的评估价值不高。我们看到可爱的标签为 <table border=1 width=300> 和大量未封闭的 img、input、br 和 hr 标签。

当前导出已将所有 <> 替换为 <> 所以它评估为一个 xml 文件。我想要做的是能够查看带有所有预期 HTML 标记的 XML 文件。所以 <b></b> 使事情变得大胆。但是我不知道该怎么做,因为<b></b> 没有正确评估。

<event>I ate a &lt;b&gt;tasty&lt;/b&gt; cucumber</event>

输出

我吃了一个<b>好吃的</b>黄瓜

而不是

我吃了一个好吃的黄瓜

有没有办法解决这个问题?由于将 xml 文件中的所有 lt、gt 更改为 <>,因此由于 HTML 错误而无法对其进行评估。而且我不想通过 700 多个帖子来手动正确评估内容。

4

1 回答 1

1

A<xsl:value-of select="entry" disable-output-escaping="yes"/>会做的伎俩。

示例 XSLT:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

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

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

    <xsl:template match="event">
        <div class="event">
            <xsl:value-of select="." disable-output-escaping="yes"/>                        
        </div>
    </xsl:template>

</xsl:stylesheet>

运行:

<livejournal>
    <entry>
        <itemid>1</itemid>
        <eventtime>Date/time</eventtime>
        <subject>Subject Line</subject>
        <event>I ate a &lt;b&gt;tasty&lt;/b&gt; cucumber</event>
        <allowmask>0</allowmask>
        <current_mood>current mood</current_mood>
        <current_music>current mood</current_music>
        <taglist>comma, separated, tags</taglist>
        <comment>
            <itemid>2433</itemid>
            <eventtime>Date</eventtime>
            <subject>Subject Line</subject>
            <event>The actual comment</event>
            <author>
                <name>Commenter</name>
                <email>Commenter@email</email>
            </author>
        </comment>
    </entry>
</livejournal>

结果是:

<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   </head>
   <body>
      <div class="event">I ate a <b>tasty</b> cucumber</div>
      <div class="event">The actual comment</div>
   </body>
</html>
于 2013-05-30T02:04:09.613 回答