如何在 XSLT 中启用文档功能(从 ASP.NET 调用)?

Posted

技术标签:

【中文标题】如何在 XSLT 中启用文档功能(从 ASP.NET 调用)?【英文标题】:How do you enable document function in XSLT (called from ASP.NET)? 【发布时间】:2021-09-14 04:53:51 【问题描述】:

我有一个在 XML 文档上使用 for each 循环的样式表,但是当它遇到使用 document() 方法时它失败了。

<td >
    <xsl:value-of select="document('Departments.xml')/Departments/Department[@Id=dep]/Name"/>
</td>

每个循环打印出的变量都有一个值

禁止执行“document()”函数。使用 “XsltSettings.EnableDocumentFunction”属性来启用它。

【问题讨论】:

好吧,你完全按照它说的去做。也许如果您向我们展示您是如何调用转换的,我们将能够告诉您如何添加相关设置。 @MichaelKay 我的 aspx 文件通过 表示 hsd 一个 for-each 循环,它正在获取 var 我不确定 ASP.NET asp:Xml 控件是否允许您配置 XsltSettings,您可能需要使用正确的设置实现您自己的调用 XslCompiledTransform 我认为asp:Xml 使用XslTransform,而您没有XsltSettings 问题。哪个版本的 .NET,哪种环境是您使用 asp:xml 的地方,但遇到与 XsltSettings 相关的错误,而这些错误是特定于 XslCompiledTransform 的? 我已经设置 // 创建启用脚本的 XsltSettings 对象。 XsltSettings 设置 = 新 XsltSettings(false, true); settings.EnableDocumentFunction = true;但在cs文件中没有运气。我正在使用 Microsoft Visual Studio Community 2019 版本 16.10.0 VisualStudio.16.Release/16.10.0+31321.278 Microsoft .NET Framework 版本 4.8.04084 安装版本:Community Visual C++ 2019 00435-60000-00000-AA241 Microsoft Visual C++ 2019 blies 和 MSBuild 支持。将 xml 转换为 xslt 文件的代码是 index.aspx 【参考方案1】:

我认为如果asp:xml 控件使用XslCompiledTransform 而不是XslTransform 这意味着您正在工作的环境已将aspnet:RestrictXmlControls 设置为true (https://docs.microsoft.com/en-us/previous-versions/aspnet/hh975440(v=vs.120))

<appSettings>
      <add key="aspnet:RestrictXmlControls" value="true" />
</appSettings>

因此您可能需要尝试/检查您的语言环境 web.config 是否可以将其设置回

<appSettings>
      <add key="aspnet:RestrictXmlControls" value="false" />
</appSettings>

在不受默认 XsltSettings 限制的情况下使用 XslTransform

【讨论】:

以上是关于如何在 XSLT 中启用文档功能(从 ASP.NET 调用)?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 xslt 从 xml 文档中过滤掉任意节点

如何让我的 XSLT 脚本深入了解 2 个文档并将数据编译成一个 HTML 文件?

如何使用 xslt 获取 XML 的属性值和代码作为 html 的值

如何在Marklogic或Couchbase中进行xslt类型转换?

XSLT如何仅对XML文档的字符串节点中的数值进行排序

XSLT 转换从混合内容中删除 HTML 元素