不带花括号的 Sitecore 项目指南

发布于 2024-11-09 11:28:10 字数 328 浏览 0 评论 0原文

从 xslt 中的 Sitecore 项 @id 输出中删除/替换 {} 字符的最佳方法是什么?

问题: 我必须从 id 属性中识别 html 中的某些标签。使用名称很危险,因为 Sitecore 最终用户存在在名称中输入空格或非法字符的风险。

另一方面,使用项目 id 会导致 html 中的 id 为:id="{xxxxxxxx-xxx(...)},在这种情况下 {} 作为 html id 属性中的字符是非法的

。 从 xslt @id 输出中删除/替换 {} 字符的最佳方法是什么?

What is the best way to strip/replace the {} characters from the Sitecore item @id output in xslt?

Problem:
I have to identity certain tags in my html from the id attribute. Using names is dangerous because of the risk of the Sitecore end user typing spaces or illegal characters in the name.

On the other hand using the item id causes the id in the html to say: id="{xxxxxxxx-xxx(...)}, in which case the {} are illegal as characters in html id attribute.

So:
What is the best way to strip/replace the {} characters from the xslt @id output?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

情话已封尘 2024-11-16 11:28:10

我不熟悉 Sitecore,但对于 XSLT/XPath,表达式 translate(@id, '{}', '') 应该足以从 id 属性值中删除任何大括号。但要小心使用属性值模板的任何 XSLT 代码,因为其中的花括号具有特殊含义。因此 是安全的,因为 select 属性不安全被视为属性值模板。

I am not familiar with Sitecore but with XSLT/XPath the expression translate(@id, '{}', '') should suffice to remove any curly braces from the id attribute value. Be careful however with any XSLT code using attribute value templates as there the curly braces have a special meaning. So <xsl:value-of select="translate(@id, '{}', '')"/> is safe as the select attribute is not treated as an attribute value template.

冷情妓 2024-11-16 11:28:10

正确的方法是使用 NormalizeGuid。

我之前(在 Sitecore V5 上)使用过 MainUtils 中的 NormalizeGuid 方法。
我刚刚在 Sitecore 6.2 上进行了测试,但它正在崩溃,因为有 2 个相同的方法名称。这会导致 XslTransformException

您使用的是哪个版本的 Sitecore?我建议尝试 NormalizeGuid:

Goes 类似:

Web.Config

<extension mode="on" type="Sitecore.MainUtil, Sitecore.Kernel" namespace="http://www.sitecore.net/util" singleInstance="true"/>

XSLT

xmlns:util="http://www.sitecore.net/util" 

<xsl:variable name="itmId"><xsl:value-of select="@id"/></xsl:variable>
<xsl:value-of select="util:NormalizeGuid($itmId)"/>

如果您获得 RTE,则可以使用自定义包装类来修复它。 看看这篇文章

实际上,我认为您可以使用 MainUtil 中的 GenerateShortID() 来解决这个问题。

Right way to do this would be with NormalizeGuid.

I have used before (on Sitecore V5) NormalizeGuid Method from MainUtils.
I just tested on Sitecore 6.2 but it is breaking because there are 2 same method names. This results in an XslTransformException

Which version of Sitecore you are using? I suggest trying out NormalizeGuid:

Goes something like:

Web.Config

<extension mode="on" type="Sitecore.MainUtil, Sitecore.Kernel" namespace="http://www.sitecore.net/util" singleInstance="true"/>

XSLT

xmlns:util="http://www.sitecore.net/util" 

and

<xsl:variable name="itmId"><xsl:value-of select="@id"/></xsl:variable>
<xsl:value-of select="util:NormalizeGuid($itmId)"/>

If you get RTE it is possible to fix it with a custom wrapper class. Take a look this post.

Actually, I think you can get around this by using GenerateShortID() it's also in MainUtil.

对你再特殊 2024-11-16 11:28:10

谢谢马丁,使用 translate() 函数帮助了我,但你的答案并不完整。

据我了解,问题是关于在 HTML 中剥离尖括号内的大括号,不幸的是,这里 不起作用。

考虑这个(非法)代码:

<div id="<xsl:value-of select="translate(@id, '{}', '')"/>">`

相反,使用这个:

<div id="{translate(@id, '{}', '')}">

Thanks Martin, using the translate() function helped me out, but your answer is not complete.

The question - as I understand it - was concerning stripping curly braces inside angle braces in HTML, and here <xsl:value-of select="..."/> unfortunately wont work.

Consider this (illegal) code:

<div id="<xsl:value-of select="translate(@id, '{}', '')"/>">`

Instead, use this:

<div id="{translate(@id, '{}', '')}">
南烟 2024-11-16 11:28:10

您可以这样做以仅包含连字符:

item.ID.Guid.ToString("D")

或者您可以使用以下格式:

  1. D:连字符fed3f822-e79f-4318-a99d-aaf75feea459
  2. N:数字fed3f822e79f4318a99daaf75feea459
  3. B:大括号 {fed3f822-e79f-4318-a99d-aaf75feea459}
  4. P:圆括号 (fed3f822-e79f-4318-a99d-aaf75feea459)

You can do it like this to include only the hyphens:

item.ID.Guid.ToString("D")

Alternatively you can use the following formats:

  1. D: hyphens fed3f822-e79f-4318-a99d-aaf75feea459
  2. N: digits fed3f822e79f4318a99daaf75feea459
  3. B: braces {fed3f822-e79f-4318-a99d-aaf75feea459}
  4. P: parenthese (fed3f822-e79f-4318-a99d-aaf75feea459)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文