he creado el servicio web simple en C#:Cómo compilar un esquema que usa un DataSet (xs: schema)?
public void AddData(DataSet ds)
El esquema generado (WSDL) tiene el siguiente aspecto:
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema">
...
<s:element ref="s:schema" />
...
</s:schema>
Nota del esquema no contiene ninguna importación/incluir elementos.
Estoy tratando de cargar este esquema para aC# System.Xml.XmlSchema y añadirlo a System.Xml.XmlSchemaSet:
var set = new XmlSchemaSet();
var fs = new FileStream(@"c:\temp\schema.xsd", FileMode.Open);
var s = XmlSchema.Read(fs, null);
set.Add(s);
set.Compile();
La última línea de tiros esta excepción:
The 'http://www.w3.org/2001/XMLSchema:schema' element is not declared.
Tiene sentido: el esquema generado por .Net usa el tipo "s: schema" que se declara en un esquema que no se importa.
- ¿Por qué .Net crea un esquema no válido?
- ¿Cómo compilar el esquema de todos modos? Lo que hice fue descargar el esquema en http://www.w3.org/2001/XMLSchema y también lo agregué al XmlSchemaSet. Esto no funcionó ya que ese esquema en línea contiene definición DTD. Tuve que eliminarlo manualmente y ahora todo funciona. ¿Tiene sentido o me falta algo?
No, significa que el servicio devuelve un 'DataSet'. Esa no es una buena idea. ¿Cómo se esperaría que un cliente Java maneje un 'DataSet'. En general, no utilice ningún tipo específico de .NET en el contrato de un servicio web. –