===== Preguntas compuestas con ficheros ====
Una pregunta externa de ficheros puede tener como base un [[es:manual:items:compuestos
|pregunta compuesta]]. Hay dos cosas importantes a tener en cuenta en este caso:
* Construcción del [[es:manual:spsl|script de procesamiento]], es decir, como se forma el script que hay que ejecutar a partir de los scripts definidos en la [[es:manual:items:compuestos#pregunta cabecera]] y en las [[es:manual:items:compuestos#subpreguntas]]
* El ítem externo debe devolver un valor para cada una de las subpreguntas.
El [[es:manual:spsl|script de procesamiento]] se forma internamente mediante la yuxtaposición del código que se introduzca en el campo [[es:help_items_advanced_files#script]] de la [[es:manual:items:compuestos#pregunta cabecera]] y en las [[es:manual:items:compuestos#subpreguntas]], anteponiendo al código de cada subpregunta una [[es:manual:spsl#@Answer label|sentencia de control de tipo @Answer]] que queda oculta al profesor y que sirve para indicarle al sistema los identificadores que debe usar para devolver la respuesta al sistema.
Así por ejemplo el una pregunta compuesta con tres subpreguntas generará el siguiente [[es:manual:spsl|script de procesamiento]]:
\\
@Answer id1\\
\\
@Answer id2\\
\\
@Answer id3\\
\\
Aunque el sistema funciona de forma transparente, es importante que el profesor conozca este mecanismo porque la ejecución es secuencial, es decir, el script cabecera es lo primero que se ejecuta, y no devuelve ningún resultado. A continuación se ejecuta el script de la primera subpregunta, luego el de la segunda, etc. Si se ha seleccionado el modo [[es:manual:spsl#@OnError stop]] el script entero detendrá su ejecución cuando se alcance el primer error y las siguientes [[es:manual:spsl#sentencias de prueba]] del script no se llegarán a ejecutar. En cambio el modo [[es:manual:spsl#@OnError skip]] hace que el control de ejecución salte al siguiente script en caso de error, por lo que se seguirá ejecutando el script a partir del código que proporciona la siguiente subpregunta.
Siette se encarga, gracias a los ''ids'' ocultos de las sentencias [[es:manual:spsl#@Answer label|@Answer]] de asignar las respuesta de cada subscript a cada subpregunta. Si por algún motivo no se ha completado la ejecución del script, las subpreguntas recibirán una respuesta vacía.
Tambien es importante el orden de las //subpreguntas// en el caso de que la pregunta sea generativa.