在 XSLT 中生成 GUID

发布于 2024-10-28 21:35:59 字数 79 浏览 3 评论 0原文

我需要使用 XSLT 生成 GUID,如果需要 C#,有人知道如何最好地做到这一点吗?

它是为 HTML 项目生成唯一的 ID。

I need to generate a GUID with XSLT and if needed C#, does anyone know how to best do this?

It is to generate unique IDs for HTML items.

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

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

发布评论

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

评论(4

已下线请稍等 2024-11-04 21:35:59

XSLT generate-id 函数 返回一个唯一标识文档中节点的字符串。请注意规范中的这些警告:

没有实施
产生相同的义务
每次文档被识别时的标识符
转变了。没有保证
生成的唯一标识符
将与任何唯一 ID 不同
在源文档中指定。

但是,如果您需要的只是唯一标识输出中的每个元素,那么 generate-id 就足够了。

The XSLT generate-id function returns a string that uniquely identifies a node in the document. Note these warnings from the spec:

An implementation is under no
obligation to generate the same
identifiers each time a document is
transformed. There is no guarantee
that a generated unique identifier
will be distinct from any unique IDs
specified in the source document.

However, if all you need is to uniquely identify each element in your output, then generate-id is sufficient.

锦爱 2024-11-04 21:35:59

C# 提供了一个方便的 Guid.NewGuid() 静态方法。我希望任何 XSLT 实现都会大量利用某些特定于系统的组件,因为 Guid 通常部分基于硬件/MAC 地址/等生成。在底层机器上。

C# provides a handy Guid.NewGuid() static method. I'd expect any XSLT implementation would heavily leverage some system-specific component since Guids are often generated in part based on hardware/MAC address/etc. on the underlying machine.

早乙女 2024-11-04 21:35:59

我最终只是使用扩展方法并将 Guid.NewGuid() 包装在静态方法中,然后从我的 XSLT 中调用它,一旦我弄清楚扩展方法是如何工作的,这就很容易了。

I ended up just using an extension method and wrapping Guid.NewGuid() in a static method, then calling this from my XSLT, it was easy enough once I figured out how extension methods work.

望喜 2024-11-04 21:35:59

使用 C#,可以通过 使用 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>

With C#, it can be achieved easily with 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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文