Xml 故障解决位置在<;xs:import>;C中的元素#
我使用一个XML模式文档来验证传入的数据文档,但是该模式在运行时的编译过程中似乎失败了,因为它引用了一个复杂类型,它是外部模式的一部分。外部架构在文档顶部的Xml 故障解决位置在<;xs:import>;C中的元素#,xml,validation,import,schema,document,Xml,Validation,Import,Schema,Document,我使用一个XML模式文档来验证传入的数据文档,但是该模式在运行时的编译过程中似乎失败了,因为它引用了一个复杂类型,它是外部模式的一部分。外部架构在文档顶部的元素中指定。我原以为这可能是访问问题,所以我将外部文档的一个副本移到了localhost文件夹中。我得到了同样的错误,所以现在我想知道元素的使用是否会有某种问题 架构文档片段如下所示: <xs:schema targetNamespace="http://www.smpte-ra.org/schemas/429-7/2006/CPL"
元素中指定。我原以为这可能是访问问题,所以我将外部文档的一个副本移到了localhost文件夹中。我得到了同样的错误,所以现在我想知道
元素的使用是否会有某种问题
架构文档片段如下所示:
<xs:schema targetNamespace="http://www.smpte-ra.org/schemas/429-7/2006/CPL" xmlns:cpl="http://www.smpte-ra.org/schemas/429-7/2006/CPL" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
...
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://localhost/TMSWebServices/XMLSchema/xmldsig-core-schema.xsd"/>
...
<xs:element name="Signer" type="ds:KeyInfoType" minOccurs="0"/>
...
</xs:schema>
在while循环之前实例化XMLReader对象的那一行之前,一切都进展顺利。然后它会失败,并出现类型未声明的错误。它试图查找的类型KeyInfoType是在import元素中的一个文档中定义的。我已确保名称空间对齐。我想知道名称空间定义中的#符号是否导致了问题,但删除它们没有任何效果,它只是改变了错误的外观(即未声明“类型“”。”与未声明“类型“”。)
我怀疑在
元素的处理过程中我遗漏了一些东西。欢迎提出任何建议。谢谢 我认为您只需添加一行代码即可使其正常工作:
settings.ValidationFlags =
System.Xml.Schema.XmlSchemaValidationFlags.ProcessSchemaLocation;
马克好吧,这有点令人困惑。我尝试了几种不同的方法,包括添加行:
settings.ValidationFlags |= System.Xml.Schema.XmlSchemaValidationFlags.ProcessSchemaLocation;
我不断地得到同样的错误:
Type 'http://www.w3.org/2000/09/xmldsig#:KeyInfoType' is not declared.
该命名空间指定的文档是:
http://localhost/TMSWebServices/XMLSchema/xmldsig-core-schema.xsd
文档可以从我所在的位置访问,我可以在第152行找到(似乎)有问题的KeyInfoType类型
只是为了好玩,我检查了正在验证的文档,发现这种模式中定义的元素不在文档中。模式将其定义为可选(minOccurs=“0”),因此这不是问题所在
当一个schmea文档导入外部模式文档时,框架编译该文档的能力似乎有些奇怪。有人见过这种行为吗?谷歌在解决这个问题上并没有取得任何成效,尽管它确实给了我一些建议让我尝试一下。谢谢 我试过那句话,但没有效果。我查看了ProcessSchemaLocation标志,发现我看到的示例使用了复合运算符(对我来说是新的):settings.ValidationFlags |=System.Xml.Schema.XmlSchemaValidationFlags.ProcessSchemaLocation;不幸的是,这也不起作用。我想我会继续努力的。谢谢
http://localhost/TMSWebServices/XMLSchema/xmldsig-core-schema.xsd