2009-11-20 105 views
1

我想在XSL文档中包含特殊字符,如£,#,但一直没有找到一个好的方法来做到这一点如果有人可以提出一种方法来实现这一点,我会非常感激下面的示例在XSL中使用特殊字符

尼克

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:template match="/"> 
<HTML> 
    <HEAD></HEAD> 
    <BODY> 
    <TABLE> 
     <TR> 
     <TD>Account&nbsp;Name</TD> 
     <TD>Finish</TD> 
     <TD>Start</TD> 
     <TD>Completed</TD> 
     <TD>Completed&nbsp;Date</TD> 
     <TD>Day</TD> 
     <TD>User</TD> 
     <TD>Your&nbsp;Name</TD> 
     <TD>Company&nbsp;Name</TD> 
     <TD>Job&nbsp;Title</TD> 
     <TD>Would&nbsp;you&nbsp;like&nbsp;to&nbsp;attend?</TD> 
    </TR> 
     <xsl:for-each select="NewDataSet/Table"> 
     <TR> 
      <TD> 
      <xsl:value-of disable-output-escaping="yes" select="Account&nbsp;Name"/> 
      </TD> 
      <TD> 
+0

这个:select =“帐户 名称”对我来说看起来很奇怪 - 你有一个你想要处理的XML的例子吗? – Murph 2009-11-20 12:58:35

回答

4

只要把字符的文件中原样,£和#不是特殊字符。

您的问题是&nbsp;这不仅仅是HTML中的XML中的已知实体,因此您的XSL无效。我将使用&#160;这是非破坏空间的unicode字符实体。

将您的文件保存为UTF-8也是一个不错的主意。

+0

感谢您的回应安东尼。 我发现了以下错误: 消息= “预期的表达的最后,发现 '' 帐户 - >< - 名称” <的xsl:for-每个选择= “NewDataSet /表”> 的 希望我失去了一些东西很明显这里! 再次感谢 尼克 – Nick 2009-11-20 12:50:40

+0

嗯,我们没有结束的乐趣和游戏与英镑,所以我不同意它不是特殊的。实际上,如果你把它作为数字值,即£,你将更有可能得到想要的结果。 – Murph 2009-11-20 13:00:48

+0

+1。 £和非破坏性空间没有什么特别之处;如果您遇到问题,您在使用所有非ASCII字符时遇到问题,这在本世纪是一个耻辱。 @Nick:'select =“Account Name”'不是一个有效的XPath,无论你如何编码non-breaking空间。你想做什么? – bobince 2009-11-20 13:09:37