XSLT 和特殊字符的问题

本文关键字:问题 特殊字符 XSLT | 更新日期: 2023-09-27 18:33:57

在我的网络应用程序(ASP.net 4,C#)上,我使用XML PATH('')将数据从SQL Server转换为XML,并使用以下行将其提供给 XSLT:

MemoryStream stream = new MemoryStream(UTF8Encoding.UTF8.GetBytes(xml));
XPathDocument document = new XPathDocument(stream);
StringWriter writer = new StringWriter();
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load(xsltPath);
transform.Transform(document, null, writer);
return writer.ToString();

现在,当我从我的论坛提供消息时,在晴天的情况下,应该根本没有问题,也没有。当用户决定在他们的消息中使用特殊字符(如<>)时,我们就下雨了。顺便说一下,我收到一个错误,该错误不时不同(从消息到消息取决于他们在那里写的内容)。我已经尝试过禁用输出转义="是"不用说,我希望用户能够使用一些标签,例如

<a href... or <font ...>

下面是导致此问题的消息之一的示例:

setting-->about phone----< software update

有什么可能的解决方案吗?

XSLT 和特殊字符的问题

您需要对此类特殊字符进行编码。就XML而言,有5个:

  • > - &gt;
  • < - &lt;
  • & - &amp;
  • " - &quot;
  • ' - &apos;

您需要从使用输入对这些内容进行编码。

另一种方法是将所有用户生成的内容放在<!'[CDATA'[']']>部分中,这有效地实现了相同的目标。