質問

@Solved

私が作成した2つのサブ質問は解決済みです(これを分割してください!)ので、この1つは解決されました。彼の答えが最も近いため、 samjudson にチェックマークを付けます。ただし、実際の実用的なソリューションについては、以下のサブ質問を参照してください。実装したソリューションとチェック済みの回答の両方。

@Deprecated

これはかなり複雑な問題なので、この質問を2つの別々の質問に分割しています。それでも答えは大歓迎です。

疑念は次のとおりです。

  1. XSLT:base64データを 画像ファイル
  2. XSLT:ハッシュの取得または照合 base64でエンコードされたデータの場合

こんにちは、 Evernoteのエクスポート形式、これはXMLであり、画像を含むHTMLに変換されます。 Evernoteにはこれを行うHTML関数へのエクスポートがあることは知っていますが、最終的にはそれを使ってもっとおしゃれなことをしたいと思います。

次のXSLTを使用してのみテキストを取得できました。

サンプルコードの削除

実装されたソリューションの子の質問を参照してください。

ただし、午前これは単に写真を無視するだけであり、ここで助けが必要です。

つまずきブロック#1 :Evernoteはその画像をGIFまたはPNGとして保存し、エクスポート時にこれらのGIFを埋め込みます<!> amp; base64のように見えるものを使用して、XMLで直接PNG(私は間違っている可能性があります)。写真を再構成できる必要があります。テキストエディターでファイルを開く場合は、**//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)エンコードされたバイナリデータを処理する方法に光を当てることはできますか?

編集

コメントからわかりました<!> amp;昔ながらの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が生成および保存されます。

役に立ちましたか?

解決

新しいデータURI仕様があります http://en.wikipedia.org/wiki/Data_URI_scheme これは、最新のブラウザのみをサポートするつもりで、画像が小さい場合に役立ちます(たとえば、IE8は<!> lt; 32k画像のみをサポートします)。

それ以外にできることは、外部スクリプトを使用して画像データをファイルにエクスポートして使用することだけです。これは、使用しているXSLTプロセッサに大きく依存します。

他のヒント

この問題に対する純粋なXSLT回答が存在します。 このページを見る

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top