我对XSLT有问题。。。
<xsl:text> </xsl:text>
然后在生成之后,由于某种原因,生成的JSP文件生成一个“?”相反。发生了什么?
我最近的系统更改:
我改变了Java5->Java6
网络逻辑->网络逻辑12
Eclipse Ganymede->Oracle包Eclipse
编辑1:
<xsl:output method="xml"/>
,编码=UTF-8原始XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="common.xsl"/>
<xsl:output method="xml"/>
...
<xsl:template name="makeLink">
<xsl:variable name="fieldtype" select="name()"/>
<xsl:variable name="currentNode"><xsl:value-of select="generate-id()"/></xsl:variable>
<xsl:variable name="appendSpace">
<xsl:for-each select="ancestor::ButtonList[position() = 1]/descendant::Button">
<xsl:if test="generate-id() = $currentNode and position() > 1">true</xsl:if>
</xsl:for-each>
</xsl:variable>
<a href="{$url}">
<xsl:attribute name="id">btn_<xsl:value-of select="Action"/></xsl:attribute>
<xsl:call-template name="populateAttributes">
<xsl:with-param name="fieldtype">
<xsl:value-of select="$fieldtype"/>
</xsl:with-param>
</xsl:call-template>
<xsl:copy-of select="@class"/>
<xsl:copy-of select="@style"/>
<xsl:text><span><span></xsl:text><xsl:value-of select="$buffer"/><xsl:text></span></span></xsl:text>
</a>
<xsl:if test="not(@omitWhiteSpace)">
<xsl:text> </xsl:text>
</xsl:if>
<xsl:if test="ReadOnly and ReadOnly != 'someReadOnlyMethod'
and ReadOnly != 'someReadyOnlyMethod'
and ReadOnly != ''">
<xsl:text></c:if></xsl:text>
</xsl:if>
</xsl:template>
....
转换(在XSLT之后),并生成JSP页面:
<%@ page contentType = "text/html;charset=GBK"%>
<%@ page isELIgnored = "false"%>
<%@ page language="java"
import=" my.controller.*, my.core.config.*, my.core.datastructure.*, my.core.error.*, my.core.util.*,
my.service.Constants, my.service.modulesvr.ModuleBean, myW.sn.*, java.util.Locale, java.util.Map"%>
<%@ taglib uri="http://www.mycompany.com/my/tags/htmltag-10" prefix="html"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%MySn mySession = (MySn) session.getValue("MySn"); QuickSearchController mb = (mySession == null) ? null : (QuickSearchController)
mySession.getModuleBean(); String sessionToken = mySession.getSessionToken(); String htmlCharSet = mySession.getEncoding();
MyUsr user = mySession.getMyUsr(); String[] result; Object o;%>
.........
<a href="#" id="btn_NEWPROP" onclick="submitForm('/xxx/xxx/NEWPROP','theForm'); return (false);" class="actionBtn"><span><span>NEW PROP</span></span></a> </c:if>
编辑2:如果我使用
<xsl:text>&#160;</xsl:text>
而不是<xsl:text> </xsl:text>
,问题似乎已经消失了。在JSP中,它将显示为 ,在浏览器中,它被视为不间断的空格,这是预期的。 最佳答案
如果你的编码是错误的,这种情况经常发生。你用什么编码来写你的输出?你是怎么上报纸的?可能您正在使用UTF-8进行序列化,但试图在ISO-8859-1(或Windows-1252)中显示,反之亦然。
检查某个地方的默认编码是否已更改。
仅仅因为你说<xsl:output method="xml" encoding="UTF-8"/>
并不意味着程序会遵守它。XSLT是否嵌入在Java中?Java是否控制流/读/写器?
如果您可以保存文件的一部分并将其转储为十六进制,那么您应该能够很快找到答案。如果您看到0xC2 0xA0
,那么您的文件确实是UTF-8格式的。但是,如果您只看到0xA0
一个,那么您就处于ISO-8859-1或它的一个密切关系中。
也有可能页面被正确呈现,但是页面被错误的编码服务。您可以查看返回的头文件吗,也许可以在Firefox中使用Firebug,或者在Chrome中使用“Web开发人员->信息->查看响应头文件”,或者使用IE调试工具。
关于html - &#160显示为“?” HTML上的问号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11748978/