Ir al contenido

Referencia del schema

Esta sección documenta todo lo que puede contener un XML de Histrix: los 120 elementos que declara el schema y sus 452 atributos, cada uno con su descripción.

La fuente es histrix-1.0.xsd, el schema que valida los XML del sistema. Sus descripciones están verificadas contra el código del motor, así que dicen lo que el motor hace y no lo que el nombre del atributo sugiere. Cuando las dos cosas difieren —y difieren seguido— la descripción lo aclara.

Página Para qué sirve
Índice de atributos Buscar un atributo por nombre. Es la entrada más rápida cuando aparece uno desconocido en un XML.
Índice de elementos Ver qué va dentro de qué, con el árbol completo de anidamiento.
Tipos de valor Qué valores acepta un atributo y, en los booleanos, qué hace exactamente ="false".
Página Contenido
Raíz: El tag raíz de todo XML de Histrix, sus 168 atributos y los elementos de nivel superior.
Consulta:
, y SQL
Los elementos que definen de dónde salen los datos: tabla base, joins, agrupamiento, orden y filtros.
Campos: y El elemento con más atributos del schema: definición, presentación y comportamiento de cada campo.
Helpers y combos Ayudas, combos, enlaces a otros XML y contenedores embebidos.
Interacción: cálculos, condiciones y validaciones JavaScript en el campo, evaluación condicional server-side, propagación de valores y validaciones.
Grabación: movimientos e importación Cómo se persisten los datos de un formulario: movimientos, procesos encadenados e importación desde otros XML.
Gráficos y widgets Series de gráficos, etiquetas de eje y widgets del escritorio.
Grupos de atributos compartidos Los conjuntos de atributos que varios elementos comparten: identificación, UI, PDF, imagen y calendario.

Cada elemento tiene una ficha con cuatro datos antes del detalle:

  • Va dentro de — los elementos que lo pueden contener.
  • Contenido — si acepta texto y de qué tipo, y qué elementos hijos admite.
  • Veces que puede aparecer — la cardinalidad: 1 es obligatorio y único, 0..1 opcional, 0..n cualquier cantidad.
  • Atributos — cuántos declara y cuántos hereda de un grupo compartido.

Un mismo nombre puede tener más de una forma. <field> acepta 217 atributos dentro de <table> y cinco dentro de <orden>, porque son cosas distintas: en el primer caso define una columna de la pantalla, en el segundo sólo nombra por qué campo ordenar. Esas formas secundarias se documentan como <field> en <orden>, en la página del elemento que las contiene.

La validación encuentra atributos mal escritos, valores fuera de la lista permitida y elementos en el lugar equivocado, antes de abrir la pantalla:

Ventana de terminal
xmllint --noout --schema histrix-1.0.xsd mi_programa.xml

Para todo un módulo o toda una base:

Ventana de terminal
find modules/ database/ -name '*.xml' -print0 \
| xargs -0 -P8 -n40 xmllint --noout --schema histrix-1.0.xsd

Declarando el schema en el propio XML, el editor valida y autocompleta mientras se escribe:

<?xml version="1.0" encoding="UTF-8"?>
<histrix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://docs.histrix.com.ar/histrix-1.0.xsd"
tipo="consulta">

Cuatro reglas del motor que explican el resto

Sección titulada «Cuatro reglas del motor que explican el resto»

Sin estas cuatro reglas, buena parte de las advertencias de estas páginas no se entiende.

1. El parser copia los atributos en crudo. No hay lista blanca ni normalización: todos los atributos de <histrix> pasan al contenedor de la pantalla, y todos los de <field> al campo. Los de <label> y <fieldGroup> también van al campo —no hay un objeto aparte para ellos—, así que un atributo escrito en el <label> termina en el mismo lugar que si se hubiera escrito en el <field>, y los de un <fieldGroup> se copian a cada campo que contiene.

2. La lectura de un atributo distingue mayúsculas de minúsculas. PDFancho y pdfancho son dos atributos distintos, no dos formas del mismo. Cuando el schema declara las dos grafías es porque el motor lee cada una en un lugar diferente, no porque sean intercambiables.

3. Que un atributo llegue al objeto no significa que algo lo lea. El schema declara los que el motor efectivamente usa: los que se copiaban sin que nadie los leyera se fueron sacando a medida que se verificaron contra el código.

4. <table> y <form> sólo transfieren un conjunto acotado de atributos. Lo que se escriba ahí fuera de ese conjunto se descarta en silencio. Por eso un mismo atributo puede tener efecto en <histrix> y ninguno en <table>.

Se borra. Un atributo que no hace falta no va en el archivo: el schema sólo admite los que están en esta referencia, así que cualquier otro nombre —incluido el mismo con algún prefijo— falla la validación.