【发布时间】:2013-08-17 05:42:21
【问题描述】:
我有一个 XSLT 模板,它以 CSV 格式输出地址数据。我想将一些值用双引号括起来,因为它们包含逗号作为地址数据的一部分。
我的问题是转换后,双引号丢失。我可以让处理器插入几乎任何东西,但不能插入我想要的双引号。
这里是一些示例代码:
<xsl:value-of select="./*/*/LotNumber"/>
<xsl:value-of select="$delim"/>
<xsl:value-of select="./*/*/StreetName"/>
<xsl:value-of select="$delim"/>
<xsl:value-of select="./*/*/StreetType"/>
我之前将 $delim 定义为:
<xsl:param name="delim" select="','" />
所以这段模板会输出例如:
10,SMITH,ST
假设为了争论,我想将街道名称用双引号括起来,这样它就可以显示为:
10,"SMITH",ST
我尝试了很多方法,但它们都是将双引号声明为主题的变体:
<xsl:param name="quote">"</xsl:param>
然后将我的值包装为:
<xsl:value-of select="$quote"/>
<xsl:value-of select="./*/*/StreetName"/>
<xsl:value-of select="$quote"/>
但是当转换运行时,我什么也得不到。它只是看起来和以前一样。我尝试过的其他事情是:
- 将双引号作为文字放在模板中。完全搞砸了。
- 使用“而不是”。没有效果,而且我输出的是文本而不是 html。
- 使用和选择变量。
有什么建议吗?
【问题讨论】:
-
使用 $quote 的代码是正确的,应该可以工作。在运行之前检查基本的事情,比如你保存了样式表(并清除了缓存)。
-
@MichaelKay 做到了,不高兴。通过在参数中使用两个双引号,我确实取得了更大的成功,即 ,但是这种行为很奇怪,因为它会在周围加上很多双引号相邻的字段。我不得不承认,现在我只是不明白这里发生了什么。
-
对不起,如果这是一个光顾的问题,但是您使用什么来查看转换后创建的 CSV 文件?一个普通的旧文本编辑器,还是像 Microsoft Excel 这样的完整电子表格应用程序?
-
@TimC 该文件被传送到浏览器(它是一个网络应用程序),因此它在 Excel 中的浏览器中打开。我保存它(以 CSV 格式),然后在 Notepad++ 中打开它以查看实际交付的内容。
标签: xslt double-quotes