2009-12-03 44 views
1

如何将XML文件作为内容包含在XHTML文档的textarea元素中?如果特殊字符没有转义,它将导致验证错误。如何使用JSP将XML文件插入XHTML页面<textarea>?

在使用include指令插入特殊字符(如使用JSTL)之前,JSP中有没有简单的方法来转义特殊字符?

示例代码:

<div> 
     <textarea name="content" rows="20" cols="80"><%@ include file="example.xml" %></textarea> 
    </div> 

这看起来很好的浏览器,但因为嵌入式文件启动另一个XML声明XHTML验证将失败。

+0

如果浏览器从错误中恢复,并且XML文件不包含字符串“”,它只会在浏览器中“显得很好”。 – Quentin 2009-12-03 14:25:48

回答

5

的这样的“官方” JSTL方式如下:

<c:import url="example.xml" var="xmlContent"/> 

<textarea><c:out value="${xmlContent}" escapeXml="true"/></textarea> 

escapeXml属性默认为true,无论如何,但它可能是明智的,在这里指定为文档的原因。

+0

你可能意味着它默认为'true' ...? – Romain 2009-12-03 14:28:05

+0

s /默认为false /默认为true。尽管如此+1。 – BalusC 2009-12-03 14:29:25

+0

哎呀,对不起,是的,我以为“真”,并输入“假”。 – skaffman 2009-12-03 14:29:55

1

您可能希望将<%@ include %>嵌入<![CDATA[...]]>,因此它被认为是纯文本而不是XML部分。您可以阅读this以更深入地了解CDATA的用途。

+0

仅当文档使用XML内容类型(例如application/xhtml + xml)时才起作用XHTML的大多数用途将其用作text/html,因此忽略CDATA标记。 – Quentin 2009-12-03 14:25:10