2009-12-28 33 views
6

Acabo de descubrir la belleza de la generación automática de esquemas XSD de Visual Studio. *¿Adjuntar automáticamente archivos XML al esquema XSD en Visual Studio?

¿Hay alguna manera fácil de que VS adjunte automáticamente archivos con nombres específicos al esquema XSD existente? Entonces, si tengo archivos myconfig.xml esparcidos por un proyecto (o varios proyectos), me gustaría que siempre validen contra myconfig.xsd, en lugar de tener que abrir cada archivo XML y asociarlo manualmente. es posible?

* Para aquellos que no están familiarizados: archivo Open XML, XML/Crear esquema y se crea un archivo de esquema agradable basado en lo que ve en el archivo XML. Puede y luego conectar el mismo XSD a otro archivo XML abriendo ese archivo y elegir XML/Schemas y elegir el esquema apropiado de su proyecto. A continuación, obtener IntelliSense y validación de todos sus nombres de elementos y atributos, elementos y atributos requeridos, etc.


actualización: Creo que no estaba muy clara.

Cuando creo un nuevo archivo web.config en cualquier parte de un proyecto, no le asigno manualmente un esquema. No hay espacio de nombres especificado dentro del XML. No obstante Visual Studio sabe automáticamente para utilizar DotNetConfig.xsd:

XML Schemas dialog screenshot http://i46.tinypic.com/xarpfn.png

Presumiblemente Visual Studio tiene una asignación en alguna parte que asigna los archivos denominados web.config a DotNetConfig.xsd.

Supongamos ahora que quiero que todos los archivos llamados DbSchema.xml utilicen automáticamente un esquema que creé llamado DbSchema.xsd. ¿Hay una manera de hacer eso?

+0

¿Te ha alguna vez resolver esto? Si es así, por favor comparte. –

Respuesta

5

Si sus esquemas están en la misma área de trabajo (no necesariamente del proyecto) como archivos XML, Visual Studio utilizará automáticamente para la función de autocompletar y validación, siempre y cuando sus archivos tener una declaración de espacio de nombres

Ni siquiera necesita poner un atributo schemaLocation.

intente lo siguiente:

  • doble clic en un archivo XML para abrirlo
  • En el punto de menú "XML" que ahora aparece de forma dinámica, haga clic en "esquemas ...". Esto le mostrará la asignación actual de espacios de nombres a esquemas.

Para comprobar si funciona, intente colocar un soporte de ángulo abierto en alguna parte, debería sugerir nombres de elementos.

Editar: Esto también funciona con archivos XML sin espacios de nombres, pero entonces es probable que tenga que añadir un nuevo catálogo de esquema para instalar%% \ XML \ esquemas, as described here. Cerca de la parte inferior, se describe cómo usar el elemento "Asociación" para asociar esquemas por extensión.

+0

Consulte la actualización anterior para obtener una aclaración. –

+0

Se agregó más explicación debajo de "editar". – xcut

+0

Ese fue el enlace que estaba buscando, ¡gracias! –

1

cuando el uso, añadir espacio de nombres como http //...../ xxx.xsd o ../Common/xxx.xsd tan fácil

<configuration> 

    <configSections> 
    <section name="RouteConfigSection" type="RouteSection.RouteConfigSection,RouteSection" /> 
    </configSections> 

    <RouteConfigSection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="RouteConfigSection.xsd"> 
    <routes>... 

por su parte:

public class RouteConfigSection : ConfigurationSection 
{ 
    [ConfigurationProperty("routes", IsDefaultCollection = false)] 
    public RouteConfigElementCollection Routings { get { return (RouteConfigElementCollection)base["routes"]; } } 

    //https://github.com/bspell1/NLogEx/blob/master/NLogEx.Mvc/Config/Config.cs 
    [ConfigurationProperty("xmlns")] 
    private String Ns1 { get { return null; } } 

    [ConfigurationProperty("xmlns:xsi")] 
    private String Ns2 { get { return null; } } 

    [ConfigurationProperty("xsi:noNamespaceSchemaLocation")] 
    private String Ns3 { get { return null; } } 
} 
Cuestiones relacionadas