如何在 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 文件通过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 脚本深入了解 2 个文档并将数据编译成一个 HTML 文件?
如何使用 xslt 获取 XML 的属性值和代码作为 html 的值