Existen algunas limitaciones entre los tipos de separación TDS y las propiedades de modelo lógico como, por ejemplo, la validación de composición de grupo y contenido de grupo. En el apartado Limitaciones para anidar tipos complejos, se explican las normas que controlan estas opciones.
Estas normas existen para asegurar la integridad del mensaje. Una combinación de tipo de separación y validación de composición de grupo o contenido de grupo no debe producir un mensaje que no sea claro para un analizador TDS.
En TDS, sólo los elementos de longitud fija adoptan los valores por omisión:
Tipo de separación | Uso de valores por omisión |
---|---|
Codificado delimitado |
Los valores por omisión no se adoptan nunca. |
Longitud fija |
Todos los elementos adoptan los valores por omisión en la salida. Un elemento ausente que no tenga definido ningún valor por omisión producirá un error en la escritura. |
Elementos de longitud variable delimitados | Sólo los elementos de longitud fija adoptan los valores por omisión en la salida. Los valores de longitud fija ausentes deben tener un valor por omisión disponible para ellos. Un elemento ausente que no tenga definido ningún valor por omisión producirá un error en la escritura. |
Las listas y uniones son conceptos específicos del XML. Un elemento o atributo de un tipo simple que sea una lista o una unión hará que aparezca un aviso en la lista de tareas si hay un formato físico TDS en el conjunto de mensajes. El usuario puede convertirlo en un error, un aviso o en información editando las preferencias de validación. Si un diccionario se genera a partir de un conjunto de mensajes y se intenta analizar un mensaje TDS definido para contener estos elementos o atributos, se producirá un error de tiempo de ejecución.
Las propiedades lógicas Mín apariciones y Máx apariciones especifican el número permitido de apariciones de un elemento o grupo de un mensaje. Se utilizan cuando se analizan y graban mensajes y cuando se valida el contenido de un mensaje.
Durante el análisis y la escritura, la interpretación exacta de estas propiedades depende de la propiedad Separación de elementos de datos del tipo complejo padre o del grupo como se muestra en la tabla siguiente.
Durante la validación, se utilizan tanto Mín apariciones como Máx apariciones para comprobar que el contenido del árbol de mensaje coincide con el modelo.
Tipo de separación | Interpretación de Mín apariciones y Máx apariciones |
---|---|
Codificado delimitado |
En la práctica, durante el análisis y la grabación
se ignoran Mín apariciones y Máx apariciones. Durante el análisis, el número de apariciones se identifica mediante códigos en el mensaje. Durante la escritura, el transcriptor genera una salida con todas las apariciones del árbol de mensaje.
|
Todos los elementos delimitados | Máx
apariciones sólo se utiliza durante el análisis y la escritura,
junto con la propiedad Delimitador de
elemento de repetición y la propiedad
Suprimir delimitadores de elementos
ausentes. Se permite un número de apariciones variable (Mín apariciones <> Máx apariciones) si Suprimir delimitadores de elementos ausentes se establece en Fin de tipo.
Si Suprimir delimitadores de elementos ausentes es Nunca, entonces se esperan todas las apariciones durante el análisis y en la salida, aunque el análisis aceptará elementos que estén ausentes. Se ignora la aparición opcional (Mín apariciones = 0) y se continúa esperando un delimitador durante el análisis y en la salida de grabación. Se permite que siempre esté ausente (Máx apariciones = 0). No se espera ningún delimitador durante el análisis ni en la salida durante la grabación. Se permite un número de apariciones sin límite (Máx apariciones = -1) únicamente si el Delimitador de elemento de repetición es diferente del Delimitador. Las repeticiones deben estar terminadas por el delimitador, un Terminador de grupo o Delimitador del grupo que las contiene o por el fin de la corriente de bits del mensaje. Durante la escritura, el transcriptor genera una salida con todas las apariciones del árbol de mensaje. |
Longitud fija |
Max
apariciones sólo se utiliza durante el análisis y escritura. En
general, se espera el valor de Máx
apariciones durante el análisis y cuando se utilizan valores por
omisión para los elementos que faltan durante la grabación la salida es el
número de apariciones correspondiente a
Máx apariciones. Se ignora un número de apariciones variable (Mín apariciones <> Máx apariciones), se presupone Máx apariciones. Se ignora la aparición opcional (Mín apariciones = 0), se presupone Máx apariciones. Se permite que siempre esté ausente (Máx apariciones = 0). Sólo longitud fija Se permite un número sin límite de apariciones (Máx apariciones = -1) si el elemento o grupo es el último hijo del grupo padre y el grupo termina con un Terminador de grupo o un Terminador de grupo del grupo que lo contiene o un Delimitador , o con en el fin de la corriente de bits del mensaje. Durante la escritura, el transcriptor genera una salida con todas las apariciones del árbol de mensaje y si este número es inferior al valor de Mín apariciones se escriben valores por omisión adicionales. |
Elementos de longitud variable delimitados | Para los elementos simples de longitud fija, se siguen las normas para la separación de Longitud fija anterior pero con las dos diferencias siguientes:
Para los elementos simples de longitud variable, todos los elementos y grupos complejos, se siguen las normas para Todos los elementos delimitados. |
Patrón de datos | En la práctica, durante el análisis y la grabación
se ignoran Mín apariciones y Máx apariciones. Durante el análisis, se
busca la coincidencia con el patrón todas las veces posibles.
Durante la escritura, el transcriptor genera una salida con todas las
apariciones del árbol de mensaje. Tenga en cuenta que durante el análisis,
si el patrón de datos permite una coincidencia de longitud cero y se da
una coincidencia de longitud cero, se añade un elemento al árbol de
mensaje y la coincidencia termina para impedir que se produzca un bucle
infinito. Se permite un número de apariciones variable (Mín apariciones <> Máx apariciones). Se permite la aparición opcional (Mín apariciones = 0). Se permite que siempre esté ausente (Máx apariciones = 0). Se permite un número de apariciones sin límite (Máx apariciones = -1). |