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

В частности задача:
Есть 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
xsl:result-document и бинарные файлы на выходе
    #35415606
pavelblk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, что нашел:
http://markmail.org/message/bhq3na2exdcmo3dq
http://www.oreillynet.com/xml/blog/2008/06/xslt_and_binary_file_formats_1.html
...
Рейтинг: 0 / 0
xsl:result-document и бинарные файлы на выходе
    #35415715
pavelblk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
xsl:result-document и бинарные файлы на выходе
    #35416147
pavelblk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче нельзя!
...
Рейтинг: 0 / 0
xsl:result-document и бинарные файлы на выходе
    #35416149
pavelblk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только через javascript
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xsl:result-document и бинарные файлы на выходе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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