El mecanismo de ordenación
La ordenación de un nodo de elemento del esquema tiene dos pasos:
1.En la vista Diseño seleccione el nodo de elemento del esquema que desea ordenar. Recuerde que se ordenarán las instancias de este elemento del documento XML. Por ejemplo, observe la estructura que aparece en la imagen siguiente.
Cada elemento newsitem tiene un elemento dateline, que a su vez tiene un elemento place con un atributo city. Los nodos @city de todos los elementos newsitem deben aparecer en orden alfabético en el documento de salida. Si seleccionamos place o dateline para la ordenación, solamente obtenemos un elemento porque place o dateline solamente aparecen una vez dentro de su elemento primario. Sin embargo, si seleccionamos newsitem, obtenemos varios elementos newsitem para ordenar. Es decir, en este caso la ordenación debe definirse en el elemento newsitem usando la clave de ordenación dateline/place/@city.
2.Tras seleccionar el elemento al que se aplicará la ordenación, haga clic con el botón derecho en el elemento. En el menú contextual que aparece haga clic en Ordenar por y se abre el cuadro de diálogo "Definir criterio de ordenación de los resultados" (imagen siguiente). En este cuadro de diálogo puede insertar o anexar instrucciones de ordenación.
Cada instrucción de ordenación contiene: (i) una clave de ordenación (en la columna Coincidencia), (ii) el Tipo de datos que debe usarse para el criterio de ordenación (texto o número) y (iii) el Orden (ascendente o descendente). Recuerde que el orden en que define las instrucciones de ordenación es importante porque el mecanismo de ordenación utiliza las instrucciones una a una, empezando por la primera hasta llegar a la última instrucción si hay varios elementos con el mismo valor. Puede definir todas las instrucciones de ordenación que quiera.
Para ver un ejemplo de ordenación consulte el apartado Ejemplo: múltiples claves de ordenación.
Plantillas definidas por el usuario
Las plantillas definidas por el usuario son plantillas que se aplican a elementos/atributos seleccionados con una expresión XPath definida por el usuario. Los nodos seleccionados por la expresión XPath de una plantilla definida por el usuario también se pueden ordenar. En este caso, la ordenación se aplica a la plantilla definida por el usuario.
Nota sobre las claves de ordenación
La expresión XPath de la clave de ordenación debe seleccionar un solo nodo por cada instancia de elemento y no un conjunto de nodos (XPath 1.0) o una secuencia de elementos (XPath 2.0/3.0). La clave para cada elemento debe dar como resultado un valor de cadena o un valor numérico.
En los diseños SPS que usan XSLT 2.0 o XSLT 3.0, si la clave de ordenación devuelve una secuencia de nodos, se emite un error de procesamiento XSLT. Por ejemplo, con el nodo de contexto Person, la expresión XPath ../Person/LastName devolvería un error porque esta expresión devuelve todos los elementos LastName que forman parte del primario Person (suponiendo que haya más de un elemento Person). La expresión XPath correcta, con Person como nodo de contexto, sería LastName (porque solamente hay un nodo LastName por cada elemento Person).
En los diseño SPS que usan XSLT 1.0, la especificación XSLT 1.0 exige que cuando el selector de la clave de ordenación devuelva un conjunto de nodos, debe utilizarse el valor de texto del primer nodo. Por tanto, StyleVision no devuelve ningún error si la expresión XPath selecciona varios nodos para la clave de ordenación. StyleVision utiliza el texto del primer nodo e ignora los demás. Sin embargo, puede que el primer nodo seleccionado no sea la clave de ordenación deseada. Por ejemplo, la expresión XPath ../Person/LastName del ejemplo anterior no devolvería un error pero tampoco realizará la ordenación porque es el mismo valor para cada elemento del bucle de ordenación (el valor de texto del primer nodo LastName). Sin embargo, una expresión del estilo location/@*, realizará la ordenación, usando el primer atributo del secundario location como clave de ordenación. De todas maneras debería evitar este tipo de expresiones porque es mejor seleccionar el criterio de ordenación con mayor precisión (seleccionando un solo nodo).