XSLT - 将输出中的撇号替换为转义文本
我正在编写一个 XSLT 模板,需要为 xml 站点地图输出有效的 xml 文件。
<url>
<loc>
<xsl:value-of select="umbraco.library:NiceUrl($node/@id)"/>
</loc>
<lastmod>
<xsl:value-of select="concat($node/@updateDate,'+00:00')"/>
</lastmod>
</url>
不幸的是,输出的 URL 包含撇号 - /what's-new.aspx
我需要将 ' 转义为 google Sitemap 的 '
。 不幸的是,我尝试的每一次尝试都将字符串“'
”视为无效的“”,这令人沮丧。 XSLT 有时会让我发疯。
对技术有什么想法吗? (假设我可以找到 XSLT 1.0 模板和函数的方法)
I'm writing an XSLT template that need to output a valid xml file for an xml Sitemap.
<url>
<loc>
<xsl:value-of select="umbraco.library:NiceUrl($node/@id)"/>
</loc>
<lastmod>
<xsl:value-of select="concat($node/@updateDate,'+00:00')"/>
</lastmod>
</url>
Unfortunately, Url that is output contains an apostrophe - /what's-new.aspx
I need to escape the ' to '
for google Sitemap. Unfortunately every attempt I've tried treats the string ''
' as if it was ''' which is invalid - frustrating. XSLT can drive me mad sometimes.
Any ideas for a technique? (Assume I can find my way around XSLT 1.0 templates and functions)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
那么您的输入中有
?
'
,但输出中需要字符串在您的 XSL 文件中,使用 此查找/替换实现(除非您使用的是 XSLT 2.0):
这样调用:
问题是
' 由 XSL 解释为
'
。'
将被解释为'
。So you have
in your output?
'
in your input, but you need the stringIn your XSL file, replace
'
with'
, using this find/replace implementation (unless you are using XSLT 2.0):Call it this way:
The problem is
'
is interpreted by XSL as'
.'
will be interpreted as'
.从 URL 中删除不需要的字符的简单方法是更改 umbraco 在生成 NiceUrl 时使用的规则。
编辑 config/umbracoSettings.config
添加一条规则,从 NiceUrls 中删除所有撇号,如下所示:
注意:“org”属性的内容将替换为元素的内容,这是另一个示例:
The simple way to remove unwanted characters from your URL is to change the rules umbraco uses when it generates the NiceUrl.
Edit the config/umbracoSettings.config
add a rule to remove all apostrophes from NiceUrls like so:
Note: The contents of the "org" attribute is replaced with the contents of the element, here's another example:
这将起作用,您只需要更改两个参数,如下所示
This will work, you just need to change TWO params as given below
您是否尝试过将 xsl 的 disable-output-escaping 设置为 yes :value-of element:
实际上 - 这可能与你想要的相反。
将 xsl:value-of 包装在 xsl:text 元素中怎么样?
也许您应该尝试将
'
翻译为'
Have you tried setting disable-output-escaping to yes for your xsl:value-of element:
Actually - this is probably the opposite of what you want.
How about wrapping the xsl:value-of in an xsl:text element?
Perhaps you should try to translate
'
to'