XSLT: можно ли в шаблоне вставить результат вывода некой проги?

yolki

Например, есть такой исходник:

...
<image url="http://somewhere.com/path/to/image.jpg"/>
...

такой шаблон

<xsl:template match="image">
<xsl:element name="object">
<xsl:attribute name="type">image</xsl:attribute>
<xsl:attribute name="encoding">mime-base64</xsl:attribute>

?тут нечто с (<xsl:value-of select=".[@url]/>) ?
</xsl:template>

хочется из этого получить результат работы такой цепочки:

wget http://somewhere.com/path/to/image.jpg -O - |recode data..b64

т.е. на выходе получить что-то типа:

<object type="image" encoding="mime-base64">
/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAKgAA/+4ADkFkb2JlAGTAAAAAAf/b
AIQACwgICAgICwgICxALCQsQEw4LCw4TFhISExISFhURExISExEVFRkaGxoZFSEhJCQhITAvLy8w
...
</object>

или тут проще вставить маркер а потом sed/awk пройтись?

SCIF32

каким процессором пользуешься?
иногда, можно, иногда - нет.

yolki

имеет значение? по-моему пофиг.
ну, допустим мелкософтовским. вот только не надо сюда WSH приплетать, пожалуйста.

SCIF32

про мелкософт и wsh ниче не знаю :)

pitrik2

иногда, можно
а пример?

artimon

Имеет значение. В чистой теории этого нельзя, но у каждого процессора есть свой набор расширений, и, возможно с их помощью что-нибудь получится.
Вот, например http://ru2.php.net/manual/en/function.xsl-xsltprocessor-regi...

Dasar

еще бывает можно зацепить xml-документ через http

SCIF32

Из того что удалось быстро загуглисть, например, php (сам не пробовал):
 
Wow, I spent the better part of a day looking for how one could pass an entire test expression to an XSL stylesheet. It seems that the XSLT 1.0 specification doesn't support it but PHP 5 (and maybe 4s) inclusion of EXSLT allows one to do exactly that...
simply add these lines...
xmlns:dyn="http://exslt.org/dynamic"
extension-element-prefixes="dyn"
to the <xsl:stylesheet> element and when using an expression stored in a <xsl:param> element write
<xsl:if test="dyn:evaluate($param-name)">
and viola! you can now use expressions generated externally in your stylesheet!
EXSLT adds many useful functions that can be integrated into your XSL in a similar fashion. You can go to http://exslt.org/ to learn more...

Сам пробовал для java в saxon-е (или чем-то подобном). Там можно было вызывать динамические функции внутри XQuery. Но уже не помню что да как.
Для XSLT не пробовал, не знаю. Но возможно также все ок.
В dbxml обещали написать поддержку вызовов внешних функций, но пока вроде не осилили.
Суть везде, на сколько я понял, одна : объявляется некоторое пространство имен внешних функций и через него их можно вызывать. Кстати, в общем случае вызов функций касается скорее XPath, нежели XSLT или XQuery.

SCIF32

о, еще про яву:
на этот раз про Xalan
http://www.ibm.com/developerworks/library/x-xalanextensions....
Оставить комментарий
Имя или ник:
Комментарий: