none
Error al crear clase con xsd.exe C# RRS feed

  • Pregunta

  • Estoy creando una clase con la herramienta xsd.exe de C# desde el prompt y al ejecutar el comando me sale el siguiente error : Schema validation warning: El elemento 'http://www.w3.org/2001/XMLSchema:simpleType' no es compatible en este contexto. Line 27, position 30.

    Coloco un fragmento del xsd para ver si me pueden ayudar ya que no me deja poner el xsd completo.

    marco en negrita la linea donde aparentemente está el error

    Obviamente no me crea la clase y no entiendo porqué.

    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="DNMA" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="DatosDiccionario">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Conceptos">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="AMPS">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="AMP">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element type="xs:long" name="AMP_Id"/>
                              <xs:element type="xs:string" name="AMP_DSC"/>
                              <xs:element type="xs:long" name="SABOR_Id"/>
                              <xs:element type="xs:long" name="TF_Id"/>
                              <xs:element type="xs:long" name="VMP_Id"/>
                              <xs:element type="xs:long" name="LABORATORIO_Id"/>
                              <xs:element type="xs:string" name="PROD_MSP"/>
                              <xs:element type="xs:string" name="NRO_MSP"/>
                              <xs:element type="xs:string" name="PROSPECTO"/>
                              <xs:element type="xs:string" name="FCH_LANZAMIENTO" nillable="true"/>
                              <xs:element type="xs:long" name="UNIDAD_Id"/>
                              <xs:element type="xs:float" name="CANTIDAD"/>
                              <xs:element type="xs:string" name="AMP_Estado"/>
                                **<xs:simpleType>** esta es la linea 27
                                    <xs:restriction base="xs:string">
                                      <xs:enumeration value="Vigente"/>
                                      <xs:enumeration value="No Vigente"/>
                                    </xs:restriction>
                                </xs:simpleType>                          
                              <xs:element type="xs:string" name="AMP_EstValidacion"/>
                              <xs:element type="xs:string" name="COMERCIALIZADO"/>
                                              <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:enumeration value="Comercializado"/>
                                      <xs:enumeration value="No Comercializado"/>
                                    </xs:restriction>
                                </xs:simpleType>                          
                              <xs:element name="AMP_FFES">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="AMP_FFE" maxOccurs="unbounded" minOccurs="1">>
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element type="xs:long" name="AMP_Id"/>
                                          <xs:element type="xs:long" name="FFE_Id"/>
                                          <xs:element type="xs:boolean" name="ESTADO"/>
                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="DESCRIPCIONES">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="DESCRIPCION" maxOccurs="unbounded" minOccurs="1">
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element type="xs:long" name="Id"/>
                                          <xs:element type="xs:string" name="Termino"/>
                                          <xs:element type="xs:string" name="Tipo"/>
                                            <xs:simpleType>
                                              <xs:restriction base="xs:string">
                                                <xs:enumeration value="F"/>
                                                <xs:enumeration value="P"/>
                                                <xs:enumeration value="S"/>                                  
                                                <xs:enumeration value="D"/>
                                              </xs:restriction>
                                            </xs:simpleType>                                      
                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="AMPPS">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="AMPP">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element type="xs:long" name="AMPP_Id"/>
                              <xs:element type="xs:long" name="AMP_Id"/>
                              <xs:element type="xs:long" name="VMPP_Id"/>
                              <xs:element type="xs:string" name="AMPP_DSC"/>
                              <xs:element type="xs:string" name="AMPP_Estado"/>
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:enumeration value="Vigente"/>
                                      <xs:enumeration value="No Vigente"/>
                                    </xs:restriction>
                                </xs:simpleType>                          
                              <xs:element type="xs:string" name="AMPP_EstValidacion"/>
                              <xs:element type="xs:string" name="COMERCIALIZADO"/>
                                              <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:enumeration value="Comercializado"/>
                                      <xs:enumeration value="No Comercializado"/>
                                    </xs:restriction>
                                </xs:simpleType>                          
                              <xs:element name="AMPP_GTINGS">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="AMPPGTINGS"  maxOccurs="unbounded" minOccurs="0">
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element type="xs:string" name="NROGTINGS1"/>
                                          <xs:element type="xs:string" name="EXISTEGS1"/>
                                          <xs:element type="xs:long" name="AMPP_Id"/>
                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="DESCRIPCIONES">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="DESCRIPCION" maxOccurs="unbounded" minOccurs="1">
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element type="xs:long" name="Id"/>
                                          <xs:element type="xs:string" name="Termino"/>
                                          <xs:element type="xs:string" name="Tipo"/>
                                            <xs:simpleType>
                                              <xs:restriction base="xs:string">
                                                <xs:enumeration value="F"/>
                                                <xs:enumeration value="P"/>
                                                <xs:enumeration value="S"/>                                  
                                                <xs:enumeration value="D"/>
                                              </xs:restriction>
                                            </xs:simpleType>                                      
                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>

    No comprendo porqué me está pasando y les pido si me pueden ayudar


    Marcelo Pírez

    jueves, 10 de diciembre de 2020 18:17

Respuestas

  • Un ejemplo de cómo quedaría el esquema (no sé con qué herramienta se ha generado tu xsd pero lo ha hecho mal)

    <xs:element name="AMPS">
    	<xs:complexType>
    		<xs:sequence>
    			<xs:element name="AMP">
    				<xs:complexType>
    					<xs:sequence>
    						<xs:element type="xs:long" name="AMP_Id"/>
    						<xs:element type="xs:string" name="AMP_DSC"/>
    						<xs:element type="xs:long" name="SABOR_Id"/>
    						<xs:element type="xs:long" name="TF_Id"/>
    						<xs:element type="xs:long" name="VMP_Id"/>
    						<xs:element type="xs:long" name="LABORATORIO_Id"/>
    						<xs:element type="xs:string" name="PROD_MSP"/>
    						<xs:element type="xs:string" name="NRO_MSP"/>
    						<xs:element type="xs:string" name="PROSPECTO"/>
    						<xs:element type="xs:string" name="FCH_LANZAMIENTO" nillable="true"/>
    						<xs:element type="xs:long" name="UNIDAD_Id"/>
    						<xs:element type="xs:float" name="CANTIDAD"/>
    						<xs:element name="AMP_Estado">
    							<xs:simpleType>
    								<xs:restriction base="xs:string">
    									<xs:enumeration value="Vigente"/>
    									<xs:enumeration value="No Vigente"/>
    								</xs:restriction>
    							</xs:simpleType>
    						</xs:element>
    						<xs:element type="xs:string" name="AMP_EstValidacion"/>
    						<xs:element name="COMERCIALIZADO">
    							<xs:simpleType>
    								<xs:restriction base="xs:string">
    									<xs:enumeration value="Comercializado"/>
    									<xs:enumeration value="No Comercializado"/>
    								</xs:restriction>
    							</xs:simpleType>
    						</xs:element>
    						<xs:element name="AMP_FFES">
    							<xs:complexType>
    								<xs:sequence>
    									<xs:element name="AMP_FFE" maxOccurs="unbounded" minOccurs="1">
    										<xs:complexType>
    											<xs:sequence>
    												<xs:element type="xs:long" name="AMP_Id"/>
    												<xs:element type="xs:long" name="FFE_Id"/>
    												<xs:element type="xs:boolean" name="ESTADO"/>
    											</xs:sequence>
    										</xs:complexType>
    									</xs:element>
    								</xs:sequence>
    							</xs:complexType>
    						</xs:element>
    						<xs:element name="DESCRIPCIONES">
    							<xs:complexType>
    								<xs:sequence>
    									<xs:element name="DESCRIPCION" maxOccurs="unbounded" minOccurs="1">
    										<xs:complexType>
    											<xs:sequence>
    												<xs:element type="xs:long" name="Id"/>
    												<xs:element type="xs:string" name="Termino"/>
    												<xs:element name="Tipo">
    													<xs:simpleType>
    														<xs:restriction base="xs:string">
    															<xs:enumeration value="F"/>
    															<xs:enumeration value="P"/>
    															<xs:enumeration value="S"/>
    															<xs:enumeration value="D"/>
    														</xs:restriction>
    													</xs:simpleType>
    												</xs:element>
    											</xs:sequence>
    										</xs:complexType>
    									</xs:element>
    								</xs:sequence>
    							</xs:complexType>
    						</xs:element>
    					</xs:sequence>
    				</xs:complexType>
    			</xs:element>
    		</xs:sequence>
    	</xs:complexType>
    </xs:element>
    


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta EricRRModerator lunes, 28 de diciembre de 2020 20:32
    viernes, 18 de diciembre de 2020 18:27
    Moderador

Todas las respuestas

  • Hola,

    Gracias por levantar tu consulta en los foros de MSDN. Entendimos su pregunta y vamos a darle seguimiento para buscar la mejor repuesta pertinente al caso.

    Gracias por usar los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    jueves, 10 de diciembre de 2020 22:09
    Moderador
  • Hol ,

    ¿Alguna novedad sobre la consulta realizada? 

    Espero su respuesta.

    Gracias por usar los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    lunes, 14 de diciembre de 2020 15:30
    Moderador
  • Lamentablemente ninguna novedad. 

    Marcelo Pírez

    lunes, 14 de diciembre de 2020 15:33
  • Hola. Creo que sé lo que te está ocurriendo. Tienes un archivo de esquema xsd que tiene una referencia a otro archivo de esquema xsd (en este caso el esquema 'http://www.w3.org/2001/XMLSchema) Lo puedes descargar aquí

    Te propongo que te descargues dicho xsd "externo" en la carpeta donde tengas tú propio xsd. Luego aplicarías el comando de la siguiente manera.

    xsd /c TuSchemaXSD.xsd EsquemaDescargadoW3org.xsd
    Esto es, le pasas los dos archivos 


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    jueves, 17 de diciembre de 2020 23:34
    Moderador
  • No funcionó, sigue dando el mismo error. :-(

    Marcelo Pírez

    viernes, 18 de diciembre de 2020 15:24
  • Hola, puedes mostrarnos tu archivo xsd? Sobre todo la primera parte que es donde se declaran los esquemas y namespaces a usar

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    viernes, 18 de diciembre de 2020 16:21
    Moderador
  • Les pongo el link con el xsd completo subido a mega ya que acá no me deja pegarlo esquema XSD

    Marcelo Pírez

    viernes, 18 de diciembre de 2020 17:04
  • Hola, revisando el esquema en profuncidad veo que está mal definido

    El error siguiente por ejemplo:

                                <xs:element type="xs:string" name="AMPP_Estado"/>
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:enumeration value="Vigente"/>
                                      <xs:enumeration value="No Vigente"/>
                                    </xs:restriction>
                                </xs:simpleType>          

    Entiendo que el tipo AMPP_Estado es un enumerado, para ello se definiría así (fijate como envuelvo la parte de simpleType con el element y se ELIMINA type="xs:string"

    <xs:element  name="AMPP_Estado">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                      <xs:enumeration value="Vigente"/>
                                      <xs:enumeration value="No Vigente"/>
                                    </xs:restriction>
                                </xs:simpleType>   
    </xs:element>

    Con estas modificaciones en tu esquema con todos esos tipos funcionaría.


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    viernes, 18 de diciembre de 2020 18:22
    Moderador
  • Un ejemplo de cómo quedaría el esquema (no sé con qué herramienta se ha generado tu xsd pero lo ha hecho mal)

    <xs:element name="AMPS">
    	<xs:complexType>
    		<xs:sequence>
    			<xs:element name="AMP">
    				<xs:complexType>
    					<xs:sequence>
    						<xs:element type="xs:long" name="AMP_Id"/>
    						<xs:element type="xs:string" name="AMP_DSC"/>
    						<xs:element type="xs:long" name="SABOR_Id"/>
    						<xs:element type="xs:long" name="TF_Id"/>
    						<xs:element type="xs:long" name="VMP_Id"/>
    						<xs:element type="xs:long" name="LABORATORIO_Id"/>
    						<xs:element type="xs:string" name="PROD_MSP"/>
    						<xs:element type="xs:string" name="NRO_MSP"/>
    						<xs:element type="xs:string" name="PROSPECTO"/>
    						<xs:element type="xs:string" name="FCH_LANZAMIENTO" nillable="true"/>
    						<xs:element type="xs:long" name="UNIDAD_Id"/>
    						<xs:element type="xs:float" name="CANTIDAD"/>
    						<xs:element name="AMP_Estado">
    							<xs:simpleType>
    								<xs:restriction base="xs:string">
    									<xs:enumeration value="Vigente"/>
    									<xs:enumeration value="No Vigente"/>
    								</xs:restriction>
    							</xs:simpleType>
    						</xs:element>
    						<xs:element type="xs:string" name="AMP_EstValidacion"/>
    						<xs:element name="COMERCIALIZADO">
    							<xs:simpleType>
    								<xs:restriction base="xs:string">
    									<xs:enumeration value="Comercializado"/>
    									<xs:enumeration value="No Comercializado"/>
    								</xs:restriction>
    							</xs:simpleType>
    						</xs:element>
    						<xs:element name="AMP_FFES">
    							<xs:complexType>
    								<xs:sequence>
    									<xs:element name="AMP_FFE" maxOccurs="unbounded" minOccurs="1">
    										<xs:complexType>
    											<xs:sequence>
    												<xs:element type="xs:long" name="AMP_Id"/>
    												<xs:element type="xs:long" name="FFE_Id"/>
    												<xs:element type="xs:boolean" name="ESTADO"/>
    											</xs:sequence>
    										</xs:complexType>
    									</xs:element>
    								</xs:sequence>
    							</xs:complexType>
    						</xs:element>
    						<xs:element name="DESCRIPCIONES">
    							<xs:complexType>
    								<xs:sequence>
    									<xs:element name="DESCRIPCION" maxOccurs="unbounded" minOccurs="1">
    										<xs:complexType>
    											<xs:sequence>
    												<xs:element type="xs:long" name="Id"/>
    												<xs:element type="xs:string" name="Termino"/>
    												<xs:element name="Tipo">
    													<xs:simpleType>
    														<xs:restriction base="xs:string">
    															<xs:enumeration value="F"/>
    															<xs:enumeration value="P"/>
    															<xs:enumeration value="S"/>
    															<xs:enumeration value="D"/>
    														</xs:restriction>
    													</xs:simpleType>
    												</xs:element>
    											</xs:sequence>
    										</xs:complexType>
    									</xs:element>
    								</xs:sequence>
    							</xs:complexType>
    						</xs:element>
    					</xs:sequence>
    				</xs:complexType>
    			</xs:element>
    		</xs:sequence>
    	</xs:complexType>
    </xs:element>
    


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta EricRRModerator lunes, 28 de diciembre de 2020 20:32
    viernes, 18 de diciembre de 2020 18:27
    Moderador