我有这个简单的代码用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 transformator将不会这样做(或生成异常)
答案 0 :(得分:2)
您可以根据需要执行XSLT转换,然后使用 Validation Event Handling 验证输出文档。
答案 1 :(得分:2)
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的。
答案 2 :(得分:1)
Saxon有一个Schema Aware处理器,但我认为你必须支付许可费。
或者你可以只验证XSLT的输出。