我有这个简单的代码来使用 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/