Symphony CMS 中的奇数 XSL 输出



我在交响乐CMS中试图像这样返回文章图像。

<img src="{$workspace}/uploads/{/data/news-articles/entry/image-thumbnail}"/>

输出如下所示

<img src="/workspace/uploads/%0A%09%09%09%09penuts_thumb.png%0A%09%09%09%09%0A%09%09%09">

如果我只是尝试返回节点值

<xsl:value-of select="image-thumbnail" />

输出看起来正确

penuts_thumb.png

关于为什么我得到所有多余的字符有什么想法吗?

Output looks correct

不,它只是"看起来正确",因为浏览器忽略了空格字符。

发生的情况是字符串"penuts_thumb.png"被空格包围。当此空格序列化为 src 属性值的一部分时,它将被编码(规范化(——这就是为什么您会看到%0A(换行符代码(和 %09(制表符代码(的原因。

此转换有助于准确查看每种情况下生成的内容:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="html" indent="yes"/>
 <xsl:variable name="workspace" select="'/workspace'"/>

 <xsl:template match="/">
     <img src="{$workspace}/uploads/{/data/news-articles/entry/image-thumbnail}"/>
     ===========
     <xsl:apply-templates/>
 </xsl:template>
 <xsl:template match="entry">
  "<xsl:value-of select="image-thumbnail"/>"
 </xsl:template>
</xsl:stylesheet>

应用于此 XML 文档时

<data>
 <news-articles>
  <entry>
    <image-thumbnail>
                     penuts_thumb.png
    </image-thumbnail>
  </entry>
 </news-articles>
</data>

生成以下输出

<img src="/workspace/uploads/%0A                     penuts_thumb.png%0A    ">
     ===========

"
penuts_thumb.png
    "

正如我们所看到的(感谢引号(,在第二种情况下,字符串"penuts_thumb.png"也被许多空格字符包围。

解决方案

通过以下方式使用 normalize-space() 函数:

<img src=
"{$workspace}/uploads/{normalize-space(/data/news-articles/entry/image-thumbnail)}"/>

相关内容

  • 没有找到相关文章

最新更新