首页 文章

评估< >在XML XSL(又名双解析)中

提问于
浏览
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生成器生成 . 因此代码的评估 Value 不高 . 我们看到可爱的标签为<table border = 1 width = 300>和大量未闭合的img,input,br和hr标签 .

当前导出已将所有<>替换为&lt;&gt;所以它评估为xml文件 . 我想要做的是能够查看包含所有预期HTML标记的XML文件 . 所以<b> </ b>会让事情变得大胆 . 但我不知道怎么做,因为&lt; b&gt;&lt; / b&gt;没有正确评估 .

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

输出

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

而不是

我吃了一个美味的黄瓜

有办法解决这个问题吗?由于将xml文件中的所有lt,gt更改为<>,因此由于HTML错误而无法评估 . 而且我不想通过700个帖子来手动评估 .

1 回答

  • 1

    一个 <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>
    

相关问题