gpt4 book ai didi

xslt - 在 XSLT 中的值周围加上双引号

转载 作者:行者123 更新时间:2023-12-04 23:54:46 26 4
gpt4 key购买 nike

我有一个 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>

然后将我的值(value)包装为:
<xsl:value-of select="$quote"/>
<xsl:value-of select="./*/*/StreetName"/>
<xsl:value-of select="$quote"/>

但是当转换运行时,我什么也得不到。它看起来和以前一样。我尝试过的其他事情是:
  • 将双引号作为文字放在模板中。完全把事情搞砸了。
  • 使用“代替”。没有效果,无论如何我输出的是文本而不是 html。
  • 使用和选择变量。

  • 有什么建议?

    最佳答案

    针对您的评论,我认为这里的问题在于 Microsoft Excel,而不是 XSLT。引号被视为文本分隔符,通常只有在字段中包含逗号时才使用它们,以表明它只是一个字段,而不是两个。无论如何,当您将 CSV 文件读入 Microsoft Excel 时,它不会显示任何文本分隔符(无论该字段是否包含逗号),只会显示其中的文本。引号不被视为字段中文本的一部分,而只是用于分隔字段中可能包含特殊字符的文本。

    此外,当您将文件另存为 CSV 文件时,Excel 将仅在需要时使用文本分隔符(即当字段包含逗号时)。如果 CSV 文件在不包含逗号的字段周围有引号,例如您的示例 10,"SMITH",ST ,然后这些在保存时会被删除。

    为了证明这一点,在浏览器中提供服务之前,尝试将您的文件重命名为 .txt 文件(因此它应该在 IE 或记事本中打开),并查看数据是否符合预期。

    如果打算将引号作为实际字段文本的一部分,而不是作为分隔符处理,则需要在数据周围输出三个引号

    <xsl:param name="delim" select="','" />
    <xsl:param name="quote">"</xsl:param>

    <xsl:value-of select="./*/*/LotNumber"/>
    <xsl:value-of select="$delim"/>
    <xsl:value-of select="$quote"/>
    <xsl:value-of select="$quote"/>
    <xsl:value-of select="$quote"/>
    <xsl:value-of select="./*/*/StreetName"/>
    <xsl:value-of select="$quote"/>
    <xsl:value-of select="$quote"/>
    <xsl:value-of select="$quote"/>
    <xsl:value-of select="$delim"/>
    <xsl:value-of select="./*/*/StreetType"/>

    所以,作为文本,它将输出如下
    10,"""SMITH""",ST

    在 Excel 中打开时,您应该会在“Smith”周围看到一组引号。

    这里需要三个引号,因为最外面是文本分隔符,然后一对连续引号在实际字段中被视为单引号。

    关于xslt - 在 XSLT 中的值周围加上双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18245830/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com