Tengo dos XSD que están definiendo documentos diferentes. Diga A.xsd
define un elemento ElementA
como la raíz, con algunas reglas complejas. Ahora B.xsd
define un elemento ElementB
que se supone que usa ElementA
en algún punto intermedio.XSD con elementos del otro espacio de nombres
Por ejemplo, yo quiero el archivo XML para ElementB
tener este aspecto:
<?xml version="1.0" encoding="utf-8"?>
<ElementB xmlns="http://example.com/namespace/for/ElementB">
<foo>Bla</foo>
<bar>Blub</bar>
<ElementA xmlns="http://example.com/namespace/for/ElementA">
<!-- ... -->
</ElementA>
</ElementB>
Entonces B.xsd
podría tener este aspecto:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="http://example.com/namespace/for/ElementB" targetNamespace="http://example.com/namespace/for/ElementB" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="ElementB">
<xs:complexType>
<xs:sequence>
<xs:element name="foo" type="xs:string" />
<xs:element name="bar" type="xs:string" />
<!-- And now I want to include ElementA somehow -->
<xs:element name="ElementA" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
La cosa es que yo realmente no quiero clon la especificación de ElementA
en B.xsd
, ya que también hay documentos, que solo tienen ElementA
como la raíz (es decir, ElementB
es algún tipo de documento de contenedor).
Entonces, ¿cómo puedo permitir ElementA
dentro de ElementB
mientras construyo completamente sobre el XSD ya existente?
Gracias, eso se ve bastante bien, lo intentaré. Sin embargo, una pregunta, ¿de dónde viene el prefijo del espacio de nombres 'ea:'? ¿O es ese el 'nombre' que la definición de tipo obtiene en 'A.xsd'? – poke
Simplemente desplácese hacia la derecha en la ventana de código - se hace referencia como el último atributo en el elemento xs: schema: 'xmlns: ea =" http://example.com/namespace/for/ElementA "'. Podría darle el prefijo que desee, al igual que para el espacio de nombre de destino predeterminado (aunque todos siempre eligen 'xs' o' xsd' por convención). – daveaglick
Oh, no me molesté en desplazarme tan lejos y lo perdí, lo siento xD También gracias por tu ayuda, intentaré esto lo antes posible y publicaré mis resultados :) – poke