меня ест такой XSL :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform" xmlns:fo="
http://www.w3.org/1999/XSL/Format">
<xsl:output encoding="Windows-1251" method="html" indent="yes"/>
<xsl:template match="navigation">
<xsl:param name="menu_id" select="1"/>
........
</xsl:template>
</xsl:stylesheet>
Как мне из сервлета передать в шаблон пареметр?
в сервлете код такой:
InputStream xslStream = getServletContext().getResourceAsStream("/menu_left.xsl" );
Source xslSource = new StreamSource( xslStream );
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer( xslSource );
/* пробывал вот так, но ничегоне поулчается
transformer.setParameter("menu_id","2");
*/
// perform transformation and deliver content to client
transformer.transform( xmlSource, result );
Здравствуйте, Vovka2b, Вы писали:
пиши просто
<xsl:param name="menu_id"/>
а потом
transformer.setParameter("menu_id","2");
параметру значение можно присвоить только раз.
Здравствуйте, Vovka2b, Вы писали:
V> меня ест такой XSL :
V><?xml version="1.0" encoding="UTF-8"?>
V><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
V> <xsl:output encoding="Windows-1251" method="html" indent="yes"/>
V> <xsl:template match="navigation">
V> <xsl:param name="menu_id" select="1"/>
V> ........
V> </xsl:template>
V></xsl:stylesheet>
V>Как мне из сервлета передать в шаблон пареметр?
V>в сервлете код такой:
V> InputStream xslStream = getServletContext().getResourceAsStream("/menu_left.xsl" );
V> Source xslSource = new StreamSource( xslStream );
V> TransformerFactory transformerFactory = TransformerFactory.newInstance();
V> Transformer transformer = transformerFactory.newTransformer( xslSource );
V> /* пробывал вот так, но ничегоне поулчается :xz:
V> transformer.setParameter("menu_id","2");
V> */
V> // perform transformation and deliver content to client
V> transformer.transform( xmlSource, result );
попробуй <param> вынести на уровень выше -- из <template> в <stylesheet>.
Здравствуйте, Lucker, Вы писали:
L>Здравствуйте, Vovka2b, Вы писали:
L>пиши просто
L>L><xsl:param name="menu_id"/>
L>
L>а потом
L>L>transformer.setParameter("menu_id","2");
L>
L>параметру значение можно присвоить только раз.
в крайнем случае, всегда можно попробовать динамику сделать через преобразовываемый xml, предусмотрев в нем нечто типа
<самый_объемлющий_элемент>
<menu id="X"/>
<somedata>...</somedata>
</самый_объемлющий_элемент>
при генерации этого xml вместо X подставляется нужное значение ("2")
Здравствуйте, dshe, Вы писали:
D>Здравствуйте, Vovka2b, Вы писали:
V>> меня ест такой XSL :
D>V>><?xml version="1.0" encoding="UTF-8"?>
V>><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
V>> <xsl:output encoding="Windows-1251" method="html" indent="yes"/>
V>> <xsl:template match="navigation">
V>> <xsl:param name="menu_id" select="1"/>
V>> ........
V>> </xsl:template>
V>></xsl:stylesheet>
D>
D>попробуй <param> вынести на уровень выше -- из <template> в <stylesheet>.
а я и не заметил...
теперь что-то стало передаваться, но не то.
XML у меня имеет вид:
<?xml version="1.0" encoding="UTF-8"?>
<navigation>
<menu>
<id>top</id>
<title>top</title>
<menu_up>
<id>root</id>
<title>Главная</title>
<url>index.jsp</url>
<menu_left>
<id>welcomepage</id>
<title>Описание</title>
<url>about.jsp</url>
</menu_left>
<menu_left>
<id>Login</id>
<title>Вход в систему</title>
<url>login.jsp</url>
</menu_left>
</menu_up>
<menu_up>
<id>info</id>
<title>Информация</title>
<url>index.jsp</url>
<menu_left>
<id>info</id>
<title>Информация</title>
<url>/info/info.jsp</url>
</menu_left>
<menu_left>
<id>Структура</id>
<title>Структура</title>
<url>/info/struct.jsp</url>
</menu_left>
<menu_left>
<id>История</id>
<title>История</title>
<url>/info/hostory.jsp</url>
</menu_left>
</menu_up>
</menu>
</navigation>
теперь стали выбираться все записи в структуре <menu_left> , только конкретного <menu_up>
Что еще интерсно, что в инструментраии XMLPSY все работает. (там в нем можно трансформацию делать).: выбираешь XSL , для него выбираешь XML-файл, задаешь параметры для трасформации. и все работает. а вот в JBuildere почему то выводит все <menu_left> что есть в XML-документе.
Ы чем может буть проблема?