Valor por defecto en XSD anidades (los "nested")

03/09/2010       Sergio Raposo Vargas       OpenCms, Manuales y tutoriales

Haciendo un nuevo tipo de contenido me pasó una cosa curiosa que hasta ahora no me había pasado (o al menos no me había dado cuenta) al intentar poner un valor por defecto en la definición de un nuevo tipo de contenido, es decir, al definir el XSD. En este caso el valor por defecto estaba en campo anidado ("nested"). Evidentemente, como siempre, se lo puse en el propio XSD anidado y tampoco le eché más cuenta. La sorpresa fue al probarlo, no funcionaba!!, mira que habré hecho nuevos tipos de contenido en OpenCms, y ahora una cosa tan sencilla no va a funcionar??

Como tampoco era una cosa muy importante pasé un poco del tema, hasta ahora, que buscando otra cosa me di cuenta en un correo de la lista oficial que uno comentaba un error similar y le daban la solución. El valor por defecto se debe establecer en el xsd principal, en el que define el recurso completo. Lo probé y efectivamente, ya funciona, en el xsd principal puse algo similar a:

<default element="ElementoNested/Campo" value="Valor por defecto a poner"/>

Es curioso, ya que la lógica me dice que si yo establezco un campo anidado es por varios motivos, organización, reutilización, ..., en ambos casos, lo que "pegaría" es que se definiera el valor por defecto en el mismo XSD donde se define el elemento. Pues parece que en OpenCms no es así.

Desconozco el motivo de esto, a lo mejor es un tema "standar", o simplemente es un error, o se le ha aplicado una lógica distinta a la que yo he aplicado.

Lo cierto es que así funciona por lo que tenerlo en cuenta si algún día os surge este problema.