如何针对各种xsd验证xml?其中一些引用其他。 UBL验证

时间:2013-12-03 14:48:19

标签: c# xml validation xsd

我正在尝试针对它的UBL xsd规范验证一些UBL xml定义。我在schemaset中有每个xsd,但是我得到了一个XmlSchemaValidationException:

  

在   '瓮:绿洲:名称:规格:UBL:架构:XSD:CommonBasicComponents-2:SubscriberIDType'   元素未声明。

XmlSchemaSet schemas = new XmlSchemaSet();
schemas.Add(null, @"path_to_every_schema.xsd");

如果我致电schemas.Compile();或设置xmlDocument.Schemas = schemas;并致电xmlDocument.Validate(ValidationErrorHandler);,那么我将获得XmlSchemaValidationException

我有什么特别的步骤吗?

1 个答案:

答案 0 :(得分:0)

原谅我用西班牙语写答案。在接下来的几个小时里,我保证用英语写答案而不滥用Google Tanslate。

感谢!


布宜诺斯艾利斯

La estructura del UBL esta definida en varios esquemas,con lo que es unpocomáscomplicadopoder validar correctamente la estructura del UBL,la clave esta en los enlaces de cada esquema,por ejemplo los enlaces del esquemas principal son:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        xmlns:udt="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" 
        xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" 
        xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" 
        xmlns:ccts="urn:un:unece:uncefact:documentation:2" 
        xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" 
        xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" 
        xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" 
        targetNamespace="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" 
        elementFormDefault="qualified" 
        attributeFormDefault="unqualified" 
        version="2.0">
<xsd:import namespace="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" schemaLocation="UBL-CommonAggregateComponents-2.0.xsd"/>
<xsd:import namespace="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" schemaLocation="UBL-CommonBasicComponents-2.0.xsd"/>
<xsd:import namespace="urn:un:unece:uncefact:data:specification:UnqualifiedDataTypesSchemaModule:2" schemaLocation="UnqualifiedDataTypeSchemaModule-2.0.xsd"/>
<xsd:import namespace="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" schemaLocation="UBL-CommonExtensionComponents-2.0.xsd"/>
<xsd:import namespace="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2" schemaLocation="UBL-QualifiedDatatypes-2.0.xsd"/>

Después,registra el espacio de nombre y esquema principal con los enlaces esquemas internos correctos:

 //Load the XmlSchemaSet.
 XmlSchemaSet schemaSet = new XmlSchemaSet();
 schemaSet.Add("urn:oasis:names:specification:ubl:schema:xsd:Invoice-2", "..\\..\\SchemasUBL\\ED.xsd");

Adjunto un proyecto de Visual Studio en el que le定义了el XML del UBL y se valida con los esquemasqueestánintegradosenlasolución。 https://www.dropbox.com/s/oo9viqxsthcpnak/ValidateSchemaUBL.rar?dl=0

相关问题