如何使用 C# 在 XSLT 文件中呈现自定义 XSL 控件?

发布于 2024-08-18 07:40:45 字数 843 浏览 5 评论 0原文

我正在使用 C# 通过 XSLT 将 XML 文件转换为 HTML。

我使用扩展对象来呈现我自己的代码:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
  xmlns:widget="urn:serverTime"
>

<xsl:output method="html" indent="yes"/>

<xsl:template match="/">
    <xsl:value-of select="demo:printTime()"/>
</xsl:template>

在我的 C# 中:

XsltArgumentList myList = new XsltArgumentList();
myList.AddExtensionObject("demo:serverTime", new ServerTime());
transform.Transform(document, myList, writer);

这非常有效。但是,我想创建自己的自定义标签,例如:

<demo:printTime />

这不起作用:标签被打印到输出而不被渲染。我怎样才能完成这项工作,以便我可以使用自己的标签?

I'm using C# to translate a XML file to HTML with the use of XSLT.

I use an Extension object to render my own code:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
  xmlns:widget="urn:serverTime"
>

<xsl:output method="html" indent="yes"/>

<xsl:template match="/">
    <xsl:value-of select="demo:printTime()"/>
</xsl:template>

and in my C#:

XsltArgumentList myList = new XsltArgumentList();
myList.AddExtensionObject("demo:serverTime", new ServerTime());
transform.Transform(document, myList, writer);

This works perfectly. However, I would like to create my own custom tags like:

<demo:printTime />

This doesn't work: the tag is printed to the output without being rendered. How can I make this work so I can use my own tags?

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

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

发布评论

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

评论(1

落花随流水 2024-08-25 07:40:45

你不能这样做。 XSLT 不支持“自定义标签”。

如果您想要打印出任何非文字值,那么它必须是函数调用的结果,包含在 中。

You can't do this. XSLT does not support "custom tags".

If you want to print out anything that is not a literal value, then it must be the result of a function call, wrapped in <xsl:value-of/>.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文