首页
学习
活动
专区
圈层
工具
发布

XSLT,JSTL
EN

Stack Overflow用户
提问于 2010-10-08 14:47:28
回答 1查看 2.1K关注 0票数 0

我有一个xml文件,我想在jsf代码页中转换它。为此,我创建了一个xsl文件。

xml:

代码语言:javascript
复制
<?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>

代码:

代码语言:javascript
复制
<%@ 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转换为jsf,一种是使用jstl,另一种是使用xslt。前者的问题是,我无法将jstl与jsf代码集成(使用jstl变量设置jsf组件属性),而使用最后一种方法,我将面临上述问题。我不想在java (UIComponents)中创建组件。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2010-10-08 16:35:48

我从来没有这样做过,但理论上,当您看到得到的XHTML输出中没有解析JSF标记时,这就意味着FacesServlet没有完成它的工作。您需要确保它是在指定的web.xml上注册的,并且请求URL (如浏览器地址栏中的)与FacesServleturl-pattern匹配。例如,如果是*.jsf,那么您不应该通过http://example.com/page.jsp打开JSP页面,而应该通过http://example.com/page.jsf打开。

更新:说过,我从来没有这样做过,我怀疑它在理论上是否会起作用。但是,从经验中我可以看出,this answer中描述的方法是可行的。XSL应该在视图通过FacesServlet之前完成它的工作。现在你想同时做这件事。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3891696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档