本文介绍了XmlSchema:带有限制的重新定义的架构不会验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 在尝试编译.NET 3.5中的(有效)SchemaSet时,我得到了以下XmlSchemaException: 限制的无效粒子衍生 - '派生元素'uri:BMU_Waste_Interface / Message:SignedProperties'符合Elt:Elt - NameAndTypeOK没有基本元素的有效限制'http://uri.etsi.org/01903 /v1.3.2#:UnsignedProperties'。'。 (我从德语翻译成英语,所以它可能不是逐字逐句但感觉是相同的) 原始元素在XAdES_ETSI_101903_010302.xsd中,并在XAdES-BMU-redefine.xsd中重新定义。 在http://www.w3.org/2001/03/webdata/xsv验证模式时,它说没有错误,我在这些文件中看不到任何语法错误。 模式文件位于 http://www.bmu.de/files/pdfs/allgemein/application/x -zip-compressed / xml-schema.zip 这是代码: While trying to compile a (valid) SchemaSet in .NET 3.5, i got following XmlSchemaException:Invalid Particlederivation by restriction - 'The derived element 'uri:BMU_Waste_Interface/Message:SignedProperties' is according to Elt:Elt -- NameAndTypeOK no valid restriction of the base element 'http://uri.etsi.org/01903/v1.3.2#:UnsignedProperties'.'. (i translated in from German to English, so it is perhaps not word by word the same but the sense is the same)The original element is in XAdES_ETSI_101903_010302.xsd and beeing redefined in XAdES-BMU-redefine.xsd .On validating the Schema at http://www.w3.org/2001/03/webdata/xsv it says that there are no errors and i don't see any syntax errors in these files.The schema files are at http://www.bmu.de/files/pdfs/allgemein/application/x-zip-compressed/xml-schema.zipHere is the code: 使用 系统; 使用 System.Text; 使用 System.Xml; 使用 System.Xml.Schema; namespace SchemaTest { class Program { static void Main( string [] args) { XmlSchemaSet schemaSet = new 的XmlSchemaSet(); XmlReaderSettings readerSettings = new XmlReaderSettings( ); readerSettings。 ProhibitDtd = false ; XmlReader reader = XmlReader.Create(@ " xmldsig-core-schema.xsd" ,readerSettings); schemaSet。添加(@ " http://uri.etsi.org/01903/v1.3.2#" , @ " XAdES-BMU-redefine.xsd" ); 尝试 { schemaSet.Add(@ " http://uri.etsi.org/01903/v1.3.2#" ,@ " XAdES_ETSI_101903_010302.xsd" ); } catch (XmlSchemaException e) { trace(e.SourceUri + "" + e.LineNumber + "" + e.LinePosition); trace(e.Message); } schemaSet.Add(@ " http://www.w3.org/2000/09/xmldsig#" ,reader); schemaSet。添加(@ " uri:BMU_Waste_Interface / Message" ,@ " Nachricht.xsd" ); schemaSet。编译(); } } } using System; using System.Text; using System.Xml; using System.Xml.Schema;  namespace SchemaTest { class Program { static void Main(string[] args) { XmlSchemaSet schemaSet = new XmlSchemaSet(); XmlReaderSettings readerSettings = new XmlReaderSettings();  readerSettings.ProhibitDtd = false; XmlReader reader = XmlReader.Create(@"xmldsig-core-schema.xsd", readerSettings);  schemaSet.Add(@"http://uri.etsi.org/01903/v1.3.2#", @"XAdES-BMU-redefine.xsd"); try { schemaSet.Add(@"http://uri.etsi.org/01903/v1.3.2#", @"XAdES_ETSI_101903_010302.xsd"); } catch (XmlSchemaException e) { trace(e.SourceUri + " " + e.LineNumber + " " + e.LinePosition); trace(e.Message);  }  schemaSet.Add(@"http://www.w3.org/2000/09/xmldsig#", reader);  schemaSet.Add(@"uri:BMU_Waste_Interface/Message", @"Nachricht.xsd");  schemaSet.Compile(); } } } 推荐答案 您好, 不幸的是,这是当前版本的System.Xml中的一个错误。在某些情况下,当使用重新定义时,模式处理器错误地将命名空间分配给声明的元素,这会导致在以后的XML输入验证期间导致无效模式或错误。 我尝试提出一种解决方法,但我不是能够找到任何。 我们正在考虑在.NET Framework的下一个版本中修复它。 非常感谢您报告此问题,Hi,Unfortunatelly this is a bug in the current version of System.Xml. In some cases when using redefine the schema processor incorrectly assigns namespace to the declared elements which leads to either invalid schema or errors during later validation of XML input.I tried to come up with a workaround but I wasn't able to find any.We are looking into fixing this in the next release of the .NET Framework.Thanks a lot for reporting this issue, 这篇关于XmlSchema:带有限制的重新定义的架构不会验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
10-25 03:44