У меня есть XML-файл, который я хочу преобразовать в кодовую страницу jsf. Для этого я создал файл xsl.
XML:
<?xml version='1.0' encoding='ISO-8859-1'?>
<questionario xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:noNamespaceSchemaLocation='Schema2.xsd'>
<componente nome='input'>
<id>input1</id>
</componente>
<componente nome='input'>
<id>input2</id>
</componente>
</questionario>
Код:
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<c:set var="xml" value="${questionarioXSLBean.xml}"/>
<c:set var="xsl">
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
exclude-result-prefixes="f h">
<xsl:template match="/">
<xsl:for-each select="questionario/componente">
<xsl:if test="attribute::nome = 'input'">
<xsl:variable name="id">
<xsl:value-of select="id" />
</xsl:variable>
<h:inputText id="{$id}"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
</c:set>
<x:transform xml="${xml}" xslt="${xsl}" />
Проблема в том, что на моем экране ничего не отображается, потому что сгенерированный код для <h:inputText id="input1"/>
равен <h:inputText id="input_1" xmlns:h="http://java.sun.com/jsf/html"/>
, как я могу заменить xmlns: h = "http://java.sun.com/jsf/html" или подавить его.
Спасибо!
Обновление : Позвольте мне уточнить, что я хочу сделать. Я хочу динамически генерировать страницу jsf в зависимости от атрибутов xml-файла, например, 2 входных текста, 3 флажка и т. Д. Для преобразования в jsf я подумал о двух подходах: один с использованием jstl, а другой с использованием xslt. Проблема с первым заключается в том, что я не смог интегрировать jstl с кодом jsf (для установки атрибутов компонентов jsf с помощью переменных jstl), и при последнем подходе я столкнулся с проблемой, описанной выше. Я не хотел бы создавать компоненты в Java (UIComponents). Какие-либо предложения?