Xslt 不带花括号的Sitecore项目guid

Xslt 不带花括号的Sitecore项目guid,xslt,sitecore,Xslt,Sitecore,从xslt中的Sitecore项@id输出中剥离/替换{}字符的最佳方法是什么 问题: 我必须从id属性识别html中的某些标记。使用名称是危险的,因为Sitecore最终用户可能会在名称中键入空格或非法字符 另一方面,使用项目id会导致html中的id显示:id=“{xxxxxxx-xxx(…)},在这种情况下,{}作为html id属性中的字符是非法的 因此: 从xslt@id输出中去除/替换{}字符的最佳方法是什么?我不熟悉Sitecore,但熟悉xslt/XPath表达式translat

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

问题: 我必须从
id
属性识别html中的某些标记。使用名称是危险的,因为Sitecore最终用户可能会在名称中键入空格或非法字符

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

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

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

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

正确的方法是使用正常化GUID

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

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

有点像:

Web.Config

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


如果您得到RTE,可以使用自定义包装器类修复它


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

正确的方法是使用NormalizeGuid

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

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

有点像:

Web.Config

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


如果您得到RTE,可以使用自定义包装器类修复它


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

谢谢Martin,使用
translate()
函数帮了我的忙,但您的答案并不完整

据我所知,这个问题是关于在HTML中去掉角括号中的花括号,这里不幸的是,
不起作用

考虑以下(非法)代码:

`
相反,请使用以下命令:

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

谢谢Martin,他使用了
translate()
函数帮了我的忙,但你的答案并不完整

据我所知,这个问题是关于在HTML中去掉角括号中的花括号,这里不幸的是,
不起作用

考虑以下(非法)代码:

`
相反,请使用以下命令:

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

您可以这样做,只包括连字符:

item.ID.Guid.ToString("D")
或者,您可以使用以下格式:

  • D:连字符fed3f822-e79f-4318-a99d-aaf75feea459
  • N:数字fed3f822e79f4318a99daaf75feea459
  • B:大括号{fed3f822-e79f-4318-a99d-aaf75feea459}
  • P:括号(fed3f822-e79f-4318-a99d-aaf75feea459)

  • 您可以这样做,只包括连字符:

    item.ID.Guid.ToString("D")
    
    或者,您可以使用以下格式:

  • D:连字符fed3f822-e79f-4318-a99d-aaf75feea459
  • N:数字fed3f822e79f4318a99daaf75feea459
  • B:大括号{fed3f822-e79f-4318-a99d-aaf75feea459}
  • P:括号(fed3f822-e79f-4318-a99d-aaf75feea459)

  • 问题是您正在使用AVT,但不知道如何表示其中的卷曲vrackets吗?答案是,它们必须通过加倍来转义。因此,在AVT中使用
    {{
    而不是
    {
    }
    而不是
    }
    问题是您使用AVT时不知道如何表示其中的卷曲VRacket吗?答案是,它们必须通过加倍来转义。因此,在AVT中使用
    {{
    而不是
    {
    }
    而不是
    }
    感谢有关GenerateShortID()的提示!感谢您提供有关GenerateShortID()的提示!