Sto tentando di estendere uno schema XML per modificare il numero di volte che un bambino può verificarsi sotto un elemento.Posso ridefinire uno schema XSD per modificare l'attributo maxOccurs di un figlio di un tipo?
Nello schema originale, il tipo di genitore è definito come tale:
<xsd:complexType name="CrimeLineBusiness_Type">
<xsd:complexContent>
<xsd:extension base="PCLINEBUSINESS">
<xsd:sequence>
<xsd:element ref="CrimeSchedule" minOccurs="0"/>
<xsd:element ref="CrimeMoneyAndSecurities" minOccurs="0"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
voglio fare in modo sia CrimeSchedule
e CrimeMoneyAndSecurities
stanno ripetendo gli elementi. Ho pensato che questo potrebbe funzionare (all'interno di xsd:redefine
):
<xsd:complexType name="CrimeLineBusiness_Type">
<xsd:complexContent>
<xsd:extension base="CrimeLineBusiness_Type">
<xsd:sequence>
<xsd:element ref="CrimeMoneyAndSecurities" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="CrimeSchedule" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
Tuttavia, allora ottengo il seguente errore:
cos-nonambig: CrimeSchedule and CrimeSchedule (or elements from their substitution group) violate "Unique Particle Attribution". During validation against this schema, ambiguity would be created for those two particles.
Questo ha senso, dal momento che quei bambini sono stati infatti definiti nello schema originale. Quindi, come posso realizzare ciò che devo fare?
Grazie!
Grande spiegazione e soluzione George! Stavo iniziando a perdere la fiducia in SO, dopo aver visto alcune risposte errate su XSD essere votato e accettato dal richiedente. – 13ren
sono arrivato qui cercando la risposta a "posso cancellare un figlio tramite ridefinizione?" ma penso che la risposta di George copra anche quella indirettamente con la risposta di "no, non senza usare uno schema simile come sopra". –