validacion tutorial opcional minoccurs español enlazar elemento con atributos xsd guid xsd.exe

tutorial - xsd atributos



¿Cuál es la forma correcta de usar el tipo Guid en un archivo XSD? (3)

Tengo un archivo .xsd que utilizo para generar código con la herramienta xsd.exe de Visual Studio. Algunos miembros de la clase son Guids y la herramienta xsd.exe da 2 advertencias:

El espacio de nombres '' http://microsoft.com/wsdl/types/ '' no está disponible como referencia en este esquema. El tipo '' http://microsoft.com/wsdl/types/:guid '' no está declarado.

El tipo Guid se reconoce porque el archivo C # generado es válido y funciona. ¿Alguien sabe cómo deshacerse de esas advertencias?

¿Cuál es la sintaxis correcta para la validación de XSD Y los miembros de la clase que se generan como System.Guid?


Cita de here :

XmlSchema guidSchema = new XmlSchema(); guidSchema.TargetNamespace = "http://microsoft.com/wsdl/types/"; XmlSchemaSimpleTypeRestriction guidRestriction = new XmlSchemaSimpleTypeRestriction(); guidRestriction.BaseTypeName = new XmlQualifiedName("string", XmlSchema.Namespace); XmlSchemaPatternFacet guidPattern = new XmlSchemaPatternFacet(); guidPattern.Value = @"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"; guidRestriction.Facets.Add(guidPattern); XmlSchemaSimpleType guidType = new XmlSchemaSimpleType(); guidType.Name = "guid"; guidType.Content = guidRestriction; guidSchema.Items.Add(guidType); schemaSet.Add(guidSchema); XmlSchema speakerSchema = new XmlSchema(); speakerSchema.TargetNamespace = "http://www.microsoft.com/events/teched2005/"; // ... XmlSchemaElement idElement = new XmlSchemaElement(); idElement.Name = "ID"; // Here''s where the magic happens... idElement.SchemaTypeName = new XmlQualifiedName("guid", "http://microsoft.com/wsdl/types/");


Gracias a todos, he encontrado cómo eliminar las advertencias.

Como dijo sysrqb , el espacio de nombres wsdl se ha eliminado o nunca ha existido. Parece que la herramienta xsd.exe conoce la definición de Guid internamente, pero no puede validar el esquema xsd.

Como señaló boj , la única manera de validar el esquema con Guids en él, es (re) definir ese tipo en un esquema. El truco aquí es agregar el tipo Guid al mismo espacio de nombres " http://microsoft.com/wsdl/types ". De esta manera, el xsd.exe hará la asociación adecuada entre http://microsoft.com/wsdl/types:Guid y System.Guid

Hice un nuevo archivo xsd para el tipo guid:

<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://microsoft.com/wsdl/types/" > <xs:simpleType name="guid"> <xs:annotation> <xs:documentation xml:lang="en"> The representation of a GUID, generally the id of an element. </xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:pattern value="/{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}/}"/> </xs:restriction> </xs:simpleType> </xs:schema>

Luego, ejecuto xsd.exe con mi archivo xsd original y este nuevo archivo xsd:

xsd.exe myschema.xsd guid.xsd /c


Parece que la página de extensión de espacio de nombres wsdl se eliminó, por lo que no puede encontrar la información de tipo que necesita.