我需要使用XSLT和必要的C#生成GUID,有没有人知道如何最好地执行此操作?
这是为HTML元素生成唯一ID。
generate-id
函数返回一个字符串,用于唯一标识文档中的节点。请注意规范中的以下警告:
但是,如果您只需要在输出中唯一标识每个元素,则使用实现不必每次转换文档时都生成相同的标识符。不能保证生成的唯一标识符与源文档中指定的任何唯一标识符都不同。
generate-id
足够了。最终我只是使用了一个扩展方法,并将Guid.NewGuid()包装在一个静态方法中,然后从我的XSLT中调用它,一旦我弄清楚了扩展方法的工作原理,这就足够容易了。
使用C#,可以很容易地通过Script Blocks Using msxsl:script来实现。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="urn:my-scripts">
<msxsl:script language="C#" implements-prefix="user">
<![CDATA[
public string getguid(){
return Guid.NewGuid().ToString();
}
]]>
</msxsl:script>
<xsl:template match="data">
<Guid><xsl:value-of select="user:getguid()"/></Guid>
</xsl:template>
</xsl:stylesheet>