Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML XSD架构验证失败,错误为';';http://www.xchanging.com/USM/xml:MyCode' 元素未声明;_Xml_Xsd_Xsd Validation - Fatal编程技术网

XML XSD架构验证失败,错误为';';http://www.xchanging.com/USM/xml:MyCode' 元素未声明;

XML XSD架构验证失败,错误为';';http://www.xchanging.com/USM/xml:MyCode' 元素未声明;,xml,xsd,xsd-validation,Xml,Xsd,Xsd Validation,我有一个需要用模式验证的xml。这两个都在下面。 我定义了两个模式 XML: <?xml version="1.0" encoding="UTF-8"?> <Jv-Ins-Reinsurance xmlns="http://www.ACORD.org/standards/Jv-Ins-Reinsurance/2008-1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:lm="http://www.

我有一个需要用模式验证的xml。这两个都在下面。 我定义了两个模式

XML:

<?xml version="1.0" encoding="UTF-8"?> 
<Jv-Ins-Reinsurance  
xmlns="http://www.ACORD.org/standards/Jv-Ins-Reinsurance/2008-1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:lm="http://www.xchanging.com/USM/xml" xsi:schemaLocation="http://www.ACORD.org/standards/Jv-Ins-Reinsurance/2008-1 Jv-Ins-Reinsurance-2008-1.xsd"> 
<TechAccount> 
<Extension> 
<lm:MyCode>Test</lm:MyCode> 
</Extension> 
</TechAccount>
</Jv-Ins-Reinsurance>

试验
要测试的架构:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:usm="http://www.xchanging.com/USM/xml" xmlns="http://www.ACORD.org/standards/Jv-Ins-Reinsurance/2008-1" targetNamespace="http://www.ACORD.org/standards/Jv-Ins-Reinsurance/2008-1" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2008-1b">
<xs:import namespace="http://www.xchanging.com/USM/xml" schemaLocation="USM.xsd"/>

  <xs:element name="Jv-Ins-Reinsurance" type="Jv-Ins-ReinsuranceType"/>
  <xs:element name="TechAccount" type="TechAccountType"/>

  <xs:complexType name="Jv-Ins-ReinsuranceType">
    <xs:choice>
      <xs:element ref="TechAccount"/>
    </xs:choice>
   </xs:complexType>

     <xs:complexType name="TechAccountType">
    <xs:sequence>
    <xs:element name="Extension" type="TechAccount_ExtensionType" 
          minOccurs="0"/>
    </xs:sequence>
    </xs:complexType>

    <xs:complexType name="TechAccount_ExtensionType">
    <xs:sequence>
      <xs:element ref = "usm:MyCode" />
     </xs:sequence>
  </xs:complexType>
</xs:schema>

导入的架构是:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.xchanging.com/USM/xml" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.xchanging.com/USM/xml" elementFormDefault="unqualified">
 <xs:element name="MyCode" type="xs:string" />
</xs:schema>

我以错误告终: 未声明“”元素


我在这方面尝试了很多方法,但都没有得到解决。甚至link:上的示例也在执行相同的操作

我发现所有的XML和XSD在NotePad++中都可以正常工作。 我编写了c#应用程序,但它不起作用,后来我发现c#逻辑没有添加架构“”,这就是为什么无法在另一个架构中找到元素,而该架构是由notepad++等工具在内部完成的。 谢谢Fabian调查此事

这是我缺少的东西(在添加模式的前几行中)


要知道,在调用validate之前,我们需要添加所有导入的模式,以便验证器了解所有信息。我的错误://

您的示例验证了我的正确性(使用Xerces、xmllint和Saxon EE)。请描述您的验证设置。
 schemas.Add(null, XmlReader.Create(new StringReader(schema2)));

   schemas.Add(null, XmlReader.Create(new StringReader(schema3)));

   string message = string.Empty;

   doc = new XDocument(xml);

            doc.Validate(schemas, (o, e) =>
            {
                message = e.Message;
                isValidated = false;
            });