Для того чтобы использовать xpath-functions (в частности, fn
часть), я включил соответствующее пространство имен в моей таблице стилей XSLT, например так:Как вы можете использовать xpath-функции с XSLT 2.0?
<xsl:stylesheet
version="2.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
>
В specified W3C.
Однако, когда я использую fn:document-uri
, мои XSLT двигатели говорят мне, что я назвал неизвестную функцию/расширение:
<xsl:variable name="uri" select="fn:document-uri()" />
Опера говорит:
This document had an invalid XSLT stylesheet. Error message from the XSLT engine:
Error: XPath expression compilation failed: fn:document-uri()
Details: compilation error (characters 1-17, "fn:document-uri()"): unknown function called: '{ http://www.w3.org/2005/xpath-functions , document-uri }'
Firefox говорит:
Error during XSLT transformation: An unknown XPath extension function was called.
И xsltproc
отказывается от трансформации, из-за xslt 2.0.
Итак, как правильно указать пространство имен fn
?
Bitmask, мой ответ предоставил вам информацию, или у вас еще есть вопрос по этому вопросу? –
@DimitreNovatchev: Технически у вас есть, но обходным решением было бы здорово (хотя я не думаю, что это возможно). Вот почему я оставил вопрос открытым дольше. – bitmask
Я четко сказал, что * совместимый * XSLT 1.0 процессор * не должен * реализовывать функции XPath 2.0. Это очень ясно означает, что нет «обходного пути» - если вам нужен XPath 2.0 в XSLT, то они * должны * использовать процессор XSLT 2.0 (или верхнюю версию). –