@解決済み
私が作成した2つのサブ質問は解決されたので(これを分割してください!)、これは解決されました。samjudsonの答えが最も近いので、私はsamjudsonにチェックマークを付けます。ただし、実際に機能するソリューションについては、以下のサブ質問を参照してください。実装したソリューションとチェックした回答の両方。
@非推奨
これはかなり複雑な問題であるため、この質問を2つの別々の質問に分割しています。答えはまだ大歓迎です。
疑惑は次のとおりです。
こんにちは。ここにいる誰かが、 Evernoteのエクスポート形式であるXMLを写真を含むHTMLに変換することに成功したかどうか疑問に思っています。Evernoteにこれを行うHTML関数へのエクスポートがあることは知っていますが、最終的にはもっと凝ったことをしたいと思っています。
次のXSLTのみを使用してテキストを取得することができました。
サンプルコードが削除されました
実装されたソリューションについては、子の質問を参照してください。
ただし、atmは単に写真を無視するため、ここでサポートが必要です。
つまずきのブロック#1:Evernoteは画像をGIFまたはPNGとして保存し、エクスポートすると、base64のように見えるものを使用してこれらのGIFとPNGをXMLに直接埋め込みます(間違っている可能性があります)。写真を再構成できるようにする必要があります。テキストエディタでファイルを開く場合は、でデータの巨大なブロックを探します**//note/resource/data**
。例(手動で追加されたインデント):
<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>
つまずきブロック#2:Evernoteは、各画像のファイル名をリソースノードの下に保存しますが
**//note/resource/resource-attributes/file-name**
、画像を参照する実際のノートでは、ファイル名ではなくハッシュで画像を参照します。たとえば、次のようになります。
<en-media hash="4aaafc3e14314027bb1d89cf7d59a06c" type="image/gif" border="0" width="16" height="16" alt="Alt Text"/>
XML内で(base64)エンコードされたバイナリデータを処理する方法に誰かが光を当てることができますか?
編集
コメントと回答から、単純なol'XSLTでは画像の処理が完了しないことがわかります。私が使用しているXSLTプロセッサはXalanですが、これが画像処理やbase64の目的に十分でない場合は、これらを実行するものを提案してください。
また、ご要望に応じて、Evernoteのエクスポートファイルのサンプルをご紹介します。上記のコードクリップは、これの一部にすぎません。メモが1つだけ含まれるように削除し、ほとんどのテキストを編集して、わかりやすくするためにインデントを追加しました。
<?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>
ファイルclip_image001.gif
が生成され、保存されます。