문제

@해결

두 subquestions 내가 만들어가 해결되었습니다(예를 나누는 이 하나를!), 그래서 이것은 하나의 해결합니다.나는 수상하려면 체크 표시 samjudson, 이후,그의 대답이었습니다.을 위해 실제 작업 솔루션이지만,아래를 참고 subquestions;모두 나의 솔루션을 구현 및 확인 답변이 있습니다.

@Deprecated

나는 나누는 이 질문으로 두 가지 별도의 질문 때문에,이것은 상당히 복잡한 문제입니다.답변은 여전히 환영합니다 하지만입니다.

이 suquestions 습니다:

  1. XSLT:변환로 데이터를 base64 이미지 파일
  2. XSLT:취득 또는 일치하는 해시 를 base64 인코딩된 데이터

안녕하세요,그 궁금하는 경우 여기에 사람이 있었는 모든 성공에서 변환하는 Evernote 의 형식으로 내보내기, 는 XML,HTML 포함합니다.내가 알고 있는 Evernote 는 HTML 내보내기 기능이 있는 않지만,나는 결국 더 많은 일을 할 멋진 물건을 가진다.

내가 달성하기 위해 관리하기에만 사용하여 다음과 같은 XSLT:

샘플코드 제거

조 아이 질문을 위해 구현한 솔루션이 있습니다.

그러나,니다.t.m 입니다.이것은 단순히 무시하는 사진이고,이것은 내가 도움이 필요합니다.

걸림돌이 #1:Evernote 저장된 사진으로 Gif 또는 Png,그리고로 내보낼 때,그것은 포함하는 이러한 Gif 를&Png 파일에 직접 XML 을 사용하여 나타나는 것이 base64(내가 잘못 될 수 있습니다.).내가 필요할 수 있 reconsitute 습니다.해당 파일을 열면 텍스트 편집기에서 찾을 위한 거대한 데이터 블록에서 **//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"/>

할 수 있는 사람에 어떤 빛을 발산을 처리하는 방법(base64)인코딩된 데이터는 바이너리 내부에 XML?

편집

내가 이해서 의견에 대한 답변을 ol'XSLT 을 얻지 않을 것이 작업을 완료 처리 이미지입니다.XSLT 프로세서에서 사용가 Xalan 는 경우에,그러나 이것은 좋은 충분한의 목적을 위해 이미지 처리 또는 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>

과하는 것으로 변형이:

<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 지원 <32k 이미지).

다른 것보다는 다른 것을 할 수 있는 사용을 일부 외부의 스크립트를 내보내는 이미지 데이터 파일을 사용합니다.이라에 크게 무엇 XSLT 프로세서에서 당신이 사용하고 있습니다.

다른 팁

그것은 존재하는 순수한 XSLT 대답하여 이 문제점; 이 페이지에서 보기

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top