Ho due XSD che definiscono documenti diversi. Dire A.xsd
definisce un elemento ElementA
come la radice, con alcune regole complesse. Ora B.xsd
definisce un elemento ElementB
che dovrebbe utilizzare ElementA
da qualche parte nel mezzo.XSD con elementi di altri domini
Ad esempio voglio il file XML per ElementB
simile a questa:
<?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>
Poi B.xsd
potrebbe assomigliare a questo:
<?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>
Il fatto è che io non voglia di clone la specifica di ElementA
in B.xsd
, in quanto vi sono anche documenti, che hanno solo ElementA
come radice (ovvero ElementB
è una sorta di documento contenitore).
Quindi, come posso consentire ElementA
all'interno di ElementB
mentre sto costruendo completamente sopra l'XSD già esistente?
Grazie, sembra abbastanza buono, ci proverò. Una domanda però, da dove viene il prefisso 'ea:' namespace? O è che il 'nome' la definizione del tipo si trova in' A.xsd'? – poke
Scorri semplicemente verso destra nella finestra del codice: viene indicato come ultimo attributo nell'elemento xs: schema: 'xmlns: ea =" http://example.com/namespace/for/ElementA "'. Puoi dargli il prefisso che vuoi, proprio come puoi per lo spazio dei nomi di destinazione predefinito (sebbene tutti scelgano sempre 'xs' o' xsd' per convenzione). – daveaglick
Oh, non mi sono preoccupato di scorrere così lontano e mi sono perso, mi dispiace xD Grazie anche per il tuo aiuto, proverò questo il prima possibile e pubblicherò i miei risultati :) – poke