我有一個xml文件,我想要在jsf代碼頁中進行轉換。爲此,我創建了一個xsl文件。XSLT,JSTL e JSF
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「或抑制它。
謝謝!
更新:讓我澄清一下我想做的事情。我想根據xml文件的屬性動態生成一個jsf頁面,例如,2個輸入文本,3個複選框等等。爲了轉換爲jsf,我認爲有兩種方法,一種使用jstl,另一種使用xslt。前者的問題是我無法將jstl與jsf代碼(使用jstl變量設置jsf組件屬性)以及最後一種方法集成,我正面臨上述問題。我不想在java(UIComponents)。有什麼建議麼?
url模式是正確的,問題出在轉換過程中。當我試圖在bean中進行這樣的過程時,我也得到了 ,但我可以將其視爲一個字符串並壓制這些不需要的內容。但我無法在jsf頁面中寫入字符串的內容,並讓它在飛行中更新其內容。 –
2010-10-08 17:04:25