2009-11-16 38 views
5

Estoy investigando grupos de sustitución en el esquema XML y parece que no puedo encontrar la especificación oficial. ¿alguien puede señalarme?Esquema XML: grupos de sustitución

Me pregunto si un elemento con atributo de grupo de sustitución puede reemplazar un elemento dentro de un complejo o sólo los elementos globales como w3schools reclamaciones:

"Tenga en cuenta que todos los elementos del substitutionGroup (el elemento de cabeza y los elementos sustituibles) deben ser declarados como elementos globales, de lo contrario no funcionará! "

es la afirmación anterior verdad?

ya que los elementos globales pueden ser una raíz de la instancia XML, ¿cuál es el sentido de definir grupos de sustitución en ellos?

Respuesta

6

Los grupos de sustitución son una bestia muy compleja. Básicamente, lo que ofrece es una forma alternativa de expresar las estructuras <xs:choice>, sin tener que enumerar todas las opciones posibles. Esto significa que puede venir en una fecha posterior y opciones adicionales a la elección, sin tener que modificar el esquema original.

Los casos de uso en los que esto es realmente útil son muy pocos y distantes, y se limitan a los esquemas que están diseñados para ser extensibles por terceros. En realidad, son muy difíciles de trabajar y muy difíciles de entender (ver here por más razones para evitarlos).

+0

esto es cierto, pero estoy escribiendo una herramienta que necesita para admitir grupos de sustitución. ¿me puede apuntar a la especificación? – Gady

+0

Bueno, la especificación está en http://www.w3.org/TR/2001/REC-xmlschema-0-20010502/#SubsGroups. Sin embargo, la buena suerte tiene sentido. – skaffman

+0

Creo que depende. El uso de grupos de sustitución en un elemento abstracto "padre" produce mejores clases generadas por JAXB que utilizando elecciones o secuencias. – Marc