我正在使用XSL将JSP转换为HTML。转换时,我正在链接CSS。 当请求有一个字符&要显示在输入类型=“文字”或 textarea 中,如下所示,浏览器会显示空白页。
我怎样才能在网页上显示该字符?
url在web.xml中定义。
我的JSP
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page contentType="text/html; charset=ISO-8859-1"%>
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>
<c:import var="xslt" url="${initParam.URL_XSLT}" charEncoding="ISO-8859-1"/>
<x:transform xslt="${xslt}">
<MyTag>
<content>
<div class="">
<input type="text" name="aName" value="${requestScope.myString}"/>
<textarea name="aComment">${requestScope.myString2}</textarea>
</div>
</content>
</MyTag>
我的XSL
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" omit-xml-declaration="yes" encoding="ISO-8859-1" indent="yes" />
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<link type="text/css" rel="stylesheet" href="http://general.css"/>
...
</head>
<xsl:element name="body">
...
<xsl:copy-of select="MyTag/content/div"></xsl:copy-of>
...
</xsl:element>
</html>
我尝试过更改
<xsl:copy-of-select>
通过
<xsl:for-each select="//MyTag/content/*">
<xsl:calltemplatename="node"/>
</xsl:for-each>
...
<xsl:template name="node">
<xsl:variable name="name" select="name()"/>
<xsl:element name="{$name}">
<xsl:copy-of select="@*" />
<xsl:if test="child::*">
<xsl:for-each select="current()/*">
<xsl:call-template name="node"/>
</xsl:for-each>
</xsl:if>
<!-- first attempt -->
<xsl:value-of select="translate(text(),'&','&')" />
<!-- second attempt -->
<xsl:value-of select="concat('<![CDATA[', text(),']]>')" />
</xsl:element>
</xsl:template>
要解决这个问题,我无法修改JSP。只需修改XSL即可。
提前完成。
答案 0 :(得分:0)
xsl:value-of
有一个属性disable-output-escaping
来禁用放大器的编码。
<xsl:value-of select="..." disable-output-escaping="yes" />