Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xsl:result-document и бинарные файлы на выходе / 5 сообщений из 5, страница 1 из 1
07.07.2008, 15:59
    #35415490
pavelblk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xsl:result-document и бинарные файлы на выходе
Существует ли какая-либо возможность на выходе после трансформации получить бинарный файл.

В частности задача:
Есть xml, содержащий картинку в base64, а на выходе нужно получить 1.bmp

Так выдает ошибку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:saxon="http://saxon.sf.net/">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
<root>
<xsl:for-each select="//binData/text()">
<xsl:result-document href="{concat(position(),'.bmp')}"  encoding="US-ASCII" method="text">
<xsl:value-of select="saxon:base64Binary-to-string(xs:base64Binary(.), 'US-ASCII')"></xsl:value-of>
<!--???<xsl:value-of select="unparsed-text(saxon:hexBinary-to-string(saxon:octets-to-hexBinary(saxon:base64Binary-to-octets(xs:base64Binary(.))),'US-ASCII'))"></xsl:value-of>???-->
</xsl:result-document>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>

Сталкивался кто-нибудь с подобной проблемой.
SAXON говорит, что
The byte sequence contains a character not allowed by XML (hex f)
Нашел только, что это из-за значения 0 байта в строке.

Есть идеи?
...
Рейтинг: 0 / 0
07.07.2008, 16:33
    #35415606
pavelblk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xsl:result-document и бинарные файлы на выходе
Вот, что нашел:
http://markmail.org/message/bhq3na2exdcmo3dq
http://www.oreillynet.com/xml/blog/2008/06/xslt_and_binary_file_formats_1.html
...
Рейтинг: 0 / 0
07.07.2008, 17:09
    #35415715
pavelblk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xsl:result-document и бинарные файлы на выходе
The difficulty is that XML
is character based, not byte-based. This means you output the
character 'A', not the byte 65 (being the ASCII representation of
'A'). Sure, if you need byte 65 and you are using an ASCII (or
ASCII-like) output encoding, you could get away with telling XSLT
to output an 'A', but this won't always work. Certain characters
(notably most of the "control" character which come before "space"
in the ASCII character set and are represented by byte codes less
than 32) are illegal in XML documents. This means that you have
absolutely no way of telling your XSLT processor to output the
byte value '0' (null), or the byte value '1', etc.
...
Рейтинг: 0 / 0
07.07.2008, 19:43
    #35416147
pavelblk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xsl:result-document и бинарные файлы на выходе
Короче нельзя!
...
Рейтинг: 0 / 0
07.07.2008, 19:44
    #35416149
pavelblk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xsl:result-document и бинарные файлы на выходе
Только через javascript
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xsl:result-document и бинарные файлы на выходе / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]