Estoy tratando de extender un esquema XML para cambiar la cantidad de veces que un elemento secundario puede aparecer debajo de un elemento.¿Puedo redefinir un esquema XSD para cambiar el atributo maxOccurs de un elemento secundario de un tipo?
En el esquema original, el tipo de matriz se define como tal:
<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>
quiero que sea así tanto CrimeSchedule
y CrimeMoneyAndSecurities
están repitiendo elementos. Pensé que esto podría funcionar (en el interior de 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>
Sin embargo, luego me sale el siguiente error:
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.
Esto tiene sentido, ya que los niños estaban de hecho definen en el esquema original. Entonces, ¿cómo puedo lograr lo que necesito hacer?
Gracias!
Gran explicación y solución George! Estaba empezando a perder la fe en SO, después de ver algunas respuestas incorrectas acerca de que XSD fuera votado y aceptado por el autor de la pregunta. – 13ren
llegué aquí buscando la respuesta a "¿Puedo eliminar un niño mediante la redefinición?" pero creo que la respuesta de George también cubre eso indirectamente con la respuesta de "no, no sin usar un patrón similar al anterior". –