2011-03-04 17 views
5

Dentro de mi aplicación web, estoy validando documentos Xml utilizando archivos xsd como recursos integrados, y eso fue fácil usando assembly.GetManifestResourceStream(string).¿Cómo uso include en un xsd incrustado que hace referencia a otro xsd incrustado?

Ahora necesito usar el elemento include (en realidad necesito redefine, pero el error que consigo es la misma, por lo que estoy ampliando el alcance de la cuestión) dentro de una de mis de xsd referencia a otra xsd incorporado, por lo que lo lo que hice fue:

  • añadir las siguientes líneas a AssemblyInfo.cs del proyecto

    [assembly: System.Web.UI.WebResource("TurniArc.xml.schema.ImportOperatoriParametri.xsd", "text/xml", PerformSubstitution = true)]

    [assembly: System.Web.UI.WebResource("TurniArc.xml.schema.ProcessiInput.xsd", "text/xml", PerformSubstitution = true)]

  • modificado el elemento de "incluir" dentro "ImportOperatoriParametri.xsd" en esto:

    <xs:include schemaLocation="<% = WebResource("TurniArc.xml.schema.ProcessiInput.xsd") %>"> 
    

Esta técnica funcionó cuando tenía que hacer referencia a una imagen incrustada de un CSS incrustado. Lamentablemente, aquí no es así, ya que el método GetManifestResourceStream lanza la excepción

'<', hexadecimal value 0x3C, is an invalid attribute character. Line 3, position 34. 

Parece que no se ha establecido el atributo "PerformSubstition", porque está tratando de leer el atributo de schemaLocation como una cadena "regular".

¿Qué estoy haciendo mal? Gracias

+0

+1 Muy útil, e importante, pregunta. –

Respuesta

1

Parece que ha anotado incorrectamente comillas dobles en el atributo. Lo más simple sería usar comillas simples para el par externo.

<xs:include schemaLocation='<% = WebResource("TurniArc.xml.schema.ProcessiInput.xsd") %>'> 
+0

Tiene razón, me lo perdí, pero todavía no funciona con comillas simples, ya sea dentro o fuera – Piddu

+0

Oh, ¿el mismo mensaje de error? – xan

+0

mismo mensaje de error (¿por qué los comentarios tienen que tener al menos 15 caracteres de largo? :-) Pude haber respondido con un simple sí) – Piddu