关于XML中换行的问题。——十万火急。(200分)

  • 主题发起人 主题发起人 momosong
  • 开始时间 开始时间
M

momosong

Unregistered / Unconfirmed
GUEST, unregistred user!
XML中的CDATA中的数据,是包括换行一起提交给读他的程序的对吧。但是就因为这个换行。
我用javascript读出来后,会报语句没有结束的错误。举个例子吧。
XML中的数据如下:
……
<Content type="text" disable-output-escaping="no">
<![CDATA[
<b>你好
我好
大家好</b>
]]>
</Content>
……
XSL中的javascript读它时的语句如下:
<script language="javascript">
//<xsl:comment>
<![CDATA[
do
cument.write("]]><xsl:value-of select="."/><![CDATA[");
]]>
//</xsl:comment>
</script>
读出来以后,后成的HTML中的javascript语句是这样的:
<script language="javascript">
document.write(<b>你好
我好
大家好</b>);
</script>
看,这就是出错的原因。我该怎么办呢?当然在程序中提前将换行改成 <br>是行不通的。
 
In short, whether the script (or style sheet) is packaged in a CDATA section is irrelevant
to further processing, it is no more relevant to the infoset than the amount of white space
in a tag such as <br />.
http://lists.w3.org/Archives/Public/www-xml-infoset-comments/2001JanMar/0034.html
 
YB_unique:谢谢你,我说的"在程序中提前将换行改成 <br>是行不通的"意思是说,
我们现在的情况在程序中提前将换行改成 <br>或者是<br />不太好办。
因此我想找一个简单的在XSL中可以控制的方法。
 
还有就是,在CDATA中的那些文字,是需要用户输入的,而我不能保证用户使用的就是
格式良好的XHTML,所以我一定要用CDATA,但是我还要求读出来的最终要是网页代码,
而不是被替换了一些符号的东西。例如用户输入的是<b>圣诞节快乐</b>,那我的程序
要求把这句话,放在CDATA标记中,但最终却还要显示成粗体的“圣诞节快乐”.
 
是不是少个引号"
再加上脚本的换行语句
如VB的_
 
MrMengyi,谢谢,可我怎么在用户输入的文本中间插入一些符号呢?现在程序不允许
否则我就把他们全部变成换行了。:(
 
在<![CDATA[
]]>
之间的一切文字、符号、标记(除了CDATA[ ]]>外)不是都不会被xml解析器解释的吗?
这样你的<b></b>自然不会被解释
 
把CDATA中的数据先放入一个隐含层中,再用jscript调用显示,可以完成你需要的功能。
<div id="disp" style="DISPLAY: none">
<xsl:value-of select="."/>
</div>
<script language="javascript">
//<xsl:comment>
<![CDATA[
do
cument.write(disp.innerHTML);//用innerHTML支持显示html格式
]]>
//</xsl:comment>
</script>
 
是个好想法,运行成功了吗?
继续保持关注
 
在XML中不会自动换行的!
 
needtemp:真是太感谢了。你真聪明!你的方法提醒了我。我换了个控件就全部解决了。
下面我就把我的XSL中解决这个问题的代码拿出来让大家一起看。如果有谁遇到和我一样
的问题就不怕了,感谢needtemp,你帮了我的大忙:)
……
<TEXTAREA id="disp" style="position:absolute;top:300;left:300;VISIBILITY: hidden;
WIDTH: 251px;
HEIGHT: 150px" rows="7" cols="27">
<xsl:value-of select="." />
</TEXTAREA>
……
<script language="javascript">
//<xsl:comment>
<![CDATA[
do
cument.write(disp.value);
]]>
//</xsl:comment>
</script>
……
 
感谢大家关心我的问题!大家圣诞节快乐!
 
后退
顶部