Xslt Evernote导出格式(ENEX)为HTML,包括图片? @解决

Xslt Evernote导出格式(ENEX)为HTML,包括图片? @解决,xslt,file-io,image-processing,hash,evernote,Xslt,File Io,Image Processing,Hash,Evernote,我创建的两个子问题已经解决了(是的,把这个问题分解了!),所以这个问题就解决了。我将给他打勾,因为他的答案是最接近的。但是,对于实际的工作解决方案,请参见下面的子问题;我实施的解决方案和检查过的答案 @不赞成 我把这个问题分成两个独立的问题,因为这是一个相当复杂的问题。尽管如此,答案仍然是受欢迎的 这些问题是: 大家好,我想知道这里是否有人成功地将XML转换为HTML,包括图片。我确实知道Evernote有一个导出到HTML的函数,可以实现这一点,但我最终想用它做更多有趣的事情 我已成功地

我创建的两个子问题已经解决了(是的,把这个问题分解了!),所以这个问题就解决了。我将给他打勾,因为他的答案是最接近的。但是,对于实际的工作解决方案,请参见下面的子问题;我实施的解决方案和检查过的答案

@不赞成 我把这个问题分成两个独立的问题,因为这是一个相当复杂的问题。尽管如此,答案仍然是受欢迎的

这些问题是:


  • 大家好,我想知道这里是否有人成功地将XML转换为HTML,包括图片。我确实知道Evernote有一个导出到HTML的函数,可以实现这一点,但我最终想用它做更多有趣的事情

    我已成功地仅使用以下XSLT获取文本:

    示例代码已删除 有关已实施的解决方案,请参见子问题

    然而,a.t.m.这只是忽略了任何图片,这就是我需要帮助的地方

    绊脚石#1:Evernote将其图片存储为GIF或PNG,导出时,它使用看起来像base64的内容将这些GIF和PNG直接嵌入XML中(我可能错了)。我需要能够重新定位这些照片。如果在文本编辑器中打开文件,请在
    **//note/resource/data**
    中查找大量数据块。例如(手动添加缩进):

    有人能解释一下如何在XML中处理(base64)编码的二进制数据吗

    编辑 我从评论和回答中了解到,纯ol'XSLT无法完成处理图像的工作。然而,我使用的XSLT处理器是,如果这对于图像处理或base64来说不够好,那么请推荐一个这样做的处理器

    此外,根据要求,这里是一个示例Evernote导出文件。上面的代码片段只是其中的一部分。我把它删去了,只包含了一个注释,编辑了其中的大部分文本,并添加了缩进以保持清晰

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE en-export SYSTEM "http://xml.evernote.com/pub/evernote-export.dtd">
    <en-export export-date="20091029T063411Z" application="Evernote/Windows" version="3.0">
    
    <note>
        <title>A title here</title>
        <content><![CDATA[
            <?xml version="1.0" encoding="UTF-8"?>
            <!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml.dtd">
            <en-note bgcolor="#FFFFFF">
                <p>Some text here (followed by the picture)
                <p><en-media hash="4aaafc3e14314027bb1d89cf7d59a06c" type="image/gif" border="0" width="16" height="16" alt="A picture"/></p>
                <p>Some more text here (preceded by the picture)
            </en-note>
        ]]></content>
        <created>20090925T063154Z</created>
        <note-attributes>
            <author/>
        </note-attributes>
        <resource>
            <data encoding="base64">
    R0lGODlhEAAQAPMAMcDAwP/crv/erbigfVdLOyslHQAAAAECAwECAwECAwECAwECAwECAwECAwEC
    AwECAyH/C01TT0ZGSUNFOS4wGAAAAAxtc09QTVNPRkZJQ0U5LjAHgfNAGQAh/wtNU09GRklDRTku
    MBUAAAAJcEhZcwAACxMAAAsTAQCanBgAIf8LTVNPRkZJQ0U5LjATAAAAB3RJTUUH1AkWBTYSQXe8
    fQAh+QQBAAAAACwAAAAAEAAQAAADSQhgpv7OlDGYstCIMqsZAXYJJEdRQRWRrHk2I9t28CLfX63d
    ZEXovJ7htwr6dIQB7/hgJGXMzFApOBYgl6n1il0Mv5xuhBEGJAAAOw==
            </data>
            <mime>image/gif</mime>
            <resource-attributes>
                <file-name>clip_image001.gif</file-name>
            </resource-attributes>
        </resource>
    </note>
    
    </en-export>
    
    
    这里有一个标题
    这里有一些文字(后面是图片)
    

    这里有更多的文字(前面有图片) ]]> 20090925T063154Z R0lGODlhEAAQAPMAMcDAwP/crv/ERBIGFDVDLOYSLHQAAAECAWECAWEC AwECAyH/C01TT0ZGSUNFOS4WGAAAAAAXTC09QTVNPRKZJQ0U5LJAHGFNAGQAH/wtNU09GRklDRTku mbuaaajcehzcwaacxmaaastaqcanbgaif8ltvnprkzq0u5ljataaaab3rjtuuh1akwbtysqxe8 fQAh+QQBAAAACWAAAAAAAAQAAADSQHGPV7OLDGYSTCIMQSZAXYJJEDRQRWRRHK2I9T28CLFX63D ZEXovJ7htwr6dIQB7/hgJGXMzFApOBYgl6n1il0Mv5xuhBEGJAAAOw== 图像/gif clip_image001.gif
    这需要转化为:

    <html>
        <body>
            <p>Some text here (followed by the picture)
            <p><img src="clip_image001.gif" border="0" width="16" height="16" alt="A picture"/></p>
            <p>Some more text here (preceded by the picture)
        </body>
    </html>
    
    
    这里有一些文字(后面是图片)
    

    这里有更多的文字(前面有图片)

    生成并保存文件
    clip\u image001.gif

    有一个新的数据URI规范,如果您只打算支持现代浏览器,并且图像较小,它可能会有所帮助(例如IE8只支持这是一个纯XSLT的问题答案;

    顺便说一句-没有任何必要编写
    ,只需编写
    。另外,不要编写
    ,而要编写
    。样式表会短得多。除非发布一些示例XML,否则很难提供帮助。发布您所处的环境是什么也很有帮助,因为vanilla XSLT不支持Base64编码字符串。`Hi Tomolak,谢谢你的建议。我对使用哪种XSLT处理器的建议持开放态度。我还在编辑我的原始问题时发布了一个示例XML文件。Hi Sam,谢谢你的建议。不过,我的Evernote文档主要是variou的注释剪辑,并且它们确实包含>32k的图像,因此我认为数据URI方案在这里没有帮助(尽管看起来非常相似)。请推荐您将使用的XSLT处理器和外部脚本,因为我对环境非常灵活。我个人会用C#处理它们,因为我是.Net开发人员,但您可以使用Java(在这种情况下,XSLT处理器几乎是无限的——Saxon是最好的IMHO)。然而,每个处理器都有自己的实现扩展方法的方式。是的,我以前在该站点上使用过copme,不幸的是,它使用base64编码字符串(而不是像图像那样的二进制数据)。此外,我还需要一种实际生成图像(写入文件)的方法。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE en-export SYSTEM "http://xml.evernote.com/pub/evernote-export.dtd">
    <en-export export-date="20091029T063411Z" application="Evernote/Windows" version="3.0">
    
    <note>
        <title>A title here</title>
        <content><![CDATA[
            <?xml version="1.0" encoding="UTF-8"?>
            <!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml.dtd">
            <en-note bgcolor="#FFFFFF">
                <p>Some text here (followed by the picture)
                <p><en-media hash="4aaafc3e14314027bb1d89cf7d59a06c" type="image/gif" border="0" width="16" height="16" alt="A picture"/></p>
                <p>Some more text here (preceded by the picture)
            </en-note>
        ]]></content>
        <created>20090925T063154Z</created>
        <note-attributes>
            <author/>
        </note-attributes>
        <resource>
            <data encoding="base64">
    R0lGODlhEAAQAPMAMcDAwP/crv/erbigfVdLOyslHQAAAAECAwECAwECAwECAwECAwECAwECAwEC
    AwECAyH/C01TT0ZGSUNFOS4wGAAAAAxtc09QTVNPRkZJQ0U5LjAHgfNAGQAh/wtNU09GRklDRTku
    MBUAAAAJcEhZcwAACxMAAAsTAQCanBgAIf8LTVNPRkZJQ0U5LjATAAAAB3RJTUUH1AkWBTYSQXe8
    fQAh+QQBAAAAACwAAAAAEAAQAAADSQhgpv7OlDGYstCIMqsZAXYJJEdRQRWRrHk2I9t28CLfX63d
    ZEXovJ7htwr6dIQB7/hgJGXMzFApOBYgl6n1il0Mv5xuhBEGJAAAOw==
            </data>
            <mime>image/gif</mime>
            <resource-attributes>
                <file-name>clip_image001.gif</file-name>
            </resource-attributes>
        </resource>
    </note>
    
    </en-export>
    
    <html>
        <body>
            <p>Some text here (followed by the picture)
            <p><img src="clip_image001.gif" border="0" width="16" height="16" alt="A picture"/></p>
            <p>Some more text here (preceded by the picture)
        </body>
    </html>