XML XSD架构验证失败,错误为';';http://www.xchanging.com/USM/xml:MyCode' 元素未声明;
我有一个需要用模式验证的xml。这两个都在下面。 我定义了两个模式 XML: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 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;
});