c# - XSLT 转换期间 XSD 上的 XML 验证

标签 c# xml xslt

我有这个简单的代码来使用 xslt 转换 xml 文件

XslCompiledTransform transform = new XslCompiledTransform(true);
transform.Load("XSLTFile1.xslt", new XsltSettings(true, true), null);
XmlReader input = XmlReader.Create("XMLFile1.xml");
XmlWriter output = XmlWriter.Create("Result.xml", transform.OutputSettings);
transform.Transform(input, null, output);

在 xslt 转换期间如何验证 XSD 上的输出 xml 文件?例如:如果 xslt 尝试创建另一个明确标记(具有相同的名称)并且 XSD 不允许 - xslt 转换器将不会执行此操作(或生成异常)

最佳答案

XSLT 1.0 不支持架构。任何兼容的 XSLT 1.0 处理器都没有任何功能来指定所需输出的模式并验证输出。因此,XSLT 程序员只能执行验证作为转换之后的第二步。

XSLT 2.0 指定了架构感知 (SA) XSLT 2.0 处理器的功能,从而实现了这一点。 SA 还可以验证使用 document() 函数获取的参数、变量、中间(临时)树和文档的类型。

一些著名的 XSLT 2.0 SA 处理器包括 Saxon 9.x、XQSharp 和 AltovaXML。至少还有另外两个——IBM 的(WebSphere 的一部分)和 Intel 的。

关于c# - XSLT 转换期间 XSD 上的 XML 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7318491/

相关文章:

HashSet<List<float>> 上的 C# SetEquals 当预期为 true 时为 false

Java - 将 CSV 转换为 XML 的脚本不按行拆分

java - 使用 JAXB 进行数字签名的命名空间处理

Java:将 StreamResult 转换为 DOM

xml - 如何使用 XSL 从 XML 创建 XML?

xml - XML/XSLT 中的美元符号转义

c# - 互斥量偶尔会失败

Javascript按位转c#

c# - 如果输入相同的种子,Delphi 的随机生成器是否与 C# 的计算相同?

java - 如何从 vaadin 7 中的流打印 pdf 文件?