Digamos que estoy transformando un cuestionario de opción múltiple de un formato XML arbitrario a HTML. Cada elección se representará como una etiqueta HTML <li>
en el documento de resultados. Para cada opción, deseo agregar un HTML class
de correct
al <li>
si esa elección fue la respuesta correcta. Además, si esa opción fue la seleccionada por el usuario, quiero agregar una clase de submitted
al <li>
. En consecuencia, si la elección es la correcta , así como la presentada, el <li>
debe tener un class
de correct submitted
.¿Existe una forma elegante de agregar múltiples clases de HTML con XSLT?
Por lo que sé, los valores de los atributos de espacios en blanco no son parte del modelo de datos XML y, por lo tanto, no se pueden crear directamente a través de XSLT. Sin embargo, tengo la sensación de que hay una forma mejor de hacerlo que ensuciar el código con un condicional para cada posible combinación de clases (lo que sería aceptable en este ejemplo, pero difícil de manejar en escenarios más complejos).
¿Cómo puedo resolver esto de una manera elegante?
Ejemplo del resultado deseado:
<p>Who trained Obi-Wan Kenobi?</p>
<ul>
<li>Mace Windu</li>
<li class="correct submitted">Qui-Gon Jinn</li>
<li>Ki-Adi-Mundi</li>
<li>Yaddle</li>
</ul>
En realidad, mi punto acerca de los valores de los atributos separados por espacios en blanco es que XML no los reconoce como valores distintos: es una sola cadena larga (a menos que haya pasado por alto alguna parte de XML). Esa es la razón por la que siempre me siento un poco sucio cuando uso atributos de clase para empezar. Dicho esto, me doy cuenta de que es mucho más fácil para nosotros los programadores separar las clases con espacios en lugar de meter en un grupo de elementos secundarios '' en todas partes. –
Jakob
@Jakob: He agregado algunos detalles más sobre las listas de valores separadas por espacios que forman un único valor de atributo al final de mi respuesta. – NickFitz