Xslt 不带花括号的Sitecore项目guid
从xslt中的Sitecore项@id输出中剥离/替换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
{}
字符的最佳方法是什么
问题:
我必须从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()的提示!