Trabajar con fechas
Si el documento de origen contiene nodos que toman valores de fecha, puede usar los tipos de datos xs:date o xs:dateTime del esquema XML subyacente para aprovechar las potentes funciones de manipulación de datos de XPath 2.0/3.0 (ver ejemplos). StyleVision es compatible con los tipos de datos xs:date y xs:dateTime y ofrece:
1.Un selector de fechas gráfico para ayudar al usuario de la vista Authentic a insertar fechas en el formato léxico correcto del tipo de datos del nodo. El selector de fechas solamente está disponible en la vista Authentic porque es un dispositivo de entrada de datos.
2.Un amplio abanico de opciones de formato de fechas (disponibles a través de la característica Formato de valor).
Estas características de StyleVision se describen en los apartados de esta sección: Usar el selector de fechas y Formato de fechas.
Nota: | los datos de fecha y hora no se pueden manipular con XPath 1.0. No obstante, si usa XPath 1.0 en su diseño puede usar el selector de fechas para garantizar la integridad de los datos y la característica Formato de valor para dar formato a las fechas. |
Calcular fechas con XPath 2.0
Puede manipular fechas con ayuda de cálculos automáticos basados en expresiones XPath 2.0. A continuación ofrecemos algunos ejemplos.
•Las funciones XPath 2.0 current-date() y current-dateTime() sirven para obtener la fecha y la fecha-hora actuales respectivamente.
•Puede realizar substracciones con valores de fecha. Por ejemplo: current-date() - DueDate devolvería un valor xdt:dayTimeDuration como P24D, por ejemplo, que indica una diferencia positiva de 24 días.
•Puede usar funciones XPath 2.0 para extraer unidades de tiempo de duraciones. Por ejemplo: days-from-duration(xdt:dayTimeDuration('P24D')) devolvería el entero 24.
El siguiente ejemplo muestra una expresión XPath 2.0 dentro de un cálculo automático. La expresión calcula un interés anual del 4% sobre una cantidad no pagada por cada día de retraso y devuelve la suma de la cantidad principal más el interés acumulado:
if (current-date() gt DueDate)
then (round-half-to-even(InvoiceAmount +
(InvoiceAmount*0.04 div 360 *
days-from-duration((current-date() - DueDate))), 2))
else InvoiceAmount
Este cálculo se podría hacer con XPath 2.0 si el elemento DueDate tuviera definido el tipo de datos xs:date y el contenido del elemento se insertara en su formato léxico correcto (es decir, YYYY-MM-DD[±HH:MM]), siendo el componente de uso horario (prefijo ±) opcional. Gracias al selector de fechas puede asegurarse de que el usuario de la vista Authentic inserte las fechas en el formato léxico correcto.