You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UWP中XslCompiledTransform加载XSL报错:该平台不支持XSLT编译

解决UWP中XslCompiledTransform编译不支持的问题

嘿,你遇到的这个System.PlatformNotSupportedException其实是UWP平台的明确限制:XslCompiledTransform的编译功能在UWP沙箱环境下是被禁用的。这个类的编译逻辑依赖动态代码生成能力,而UWP出于安全和性能考量,不允许应用进行这类操作,所以直接调用Load方法必然会抛出异常。

替代方案:使用UWP原生XSLT API

UWP专门提供了Windows.Data.Xml.Xsl.XslTransform类,它是为UWP平台量身打造的,支持XSLT 1.0转换,完全避开了编译环节的限制,正好适配你的XML转HTML需求。

修改后的代码实现

把你的ConvertXML2HTML方法改成下面这样就可以正常工作了:

private async void ConvertXML2HTML(IStorageFile xmlFile, IStorageFile xslFile)
{
    // 读取XML和XSL文件的文本内容
    string xmlText = await FileIO.ReadTextAsync(xmlFile);
    string xslText = await FileIO.ReadTextAsync(xslFile);

    // 初始化UWP原生的XSL转换器
    Windows.Data.Xml.Xsl.XslTransform xsltTransformer = new Windows.Data.Xml.Xsl.XslTransform();
    xsltTransformer.LoadFromString(xslText);

    // 执行XML到HTML的转换
    string htmlResult = xsltTransformer.TransformToString(xmlText);

    // 接下来你就可以把htmlResult保存为.html文件,再进行PDF生成的步骤了
    // 示例:await FileIO.WriteTextAsync(htmlOutputFile, htmlResult);
}

为什么这个方案能解决问题?

  • 这是UWP官方提供的API,完全适配沙箱环境,不存在平台兼容性问题;
  • 你的XSL文件用的是1.0版本,这个API完美支持XSLT 1.0的所有语法,包括你用到的模板调用、条件判断等;
  • 代码更简洁,不需要处理复杂的流转换,直接用字符串读写即可。

关于你之前尝试的EnableScript设置

你之前开启EnableScript的操作其实没抓住问题本质——报错不是因为脚本被禁用,而是UWP根本不允许XSLT编译,所以这个设置无法解决问题。

内容的提问来源于stack exchange,提问作者Wt.N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 16:45:29