Estoy experimentando un problema con el operador <
en cadenas en Xpath 1.0.¿Cómo comparar cadenas con Xpath 1.0?
Esta expresión XPath simples
'A' < 'B' (or the equivalent 'A' < 'B')
no evaluaron a verdad en mi carrera en XSLT libxslt (que es un motor XSLT 1.0).
Comprobé XML Spy, que permite probar expresiones de Xpath en 1.0 y 2.0, y efectivamente, en Xpath 2.0 se evalúa como true
, pero en Xpath 1.0 se evalúa como false
.
¿Este es un error en Xpath 1.0?
¿Qué otra expresión debo usar para comparar dos cadenas/caracteres para su orden alfabético? Tenga en cuenta que la función compare() no funcionará, ya que es una función XSLT 2.0.
Gracias Michael - buena solución compacta. En cuanto a XSLT 2.0, lo que me está frenando es que '' libxslt' es el motor utilizado por 'php 5' y no puedo cambiar eso. Tal vez en el futuro, mi servidor de alojamiento utilizará una versión de php que utiliza un motor XSLT 2.0, cuando hay uno. Realmente me hubiera gustado hacer todo esto en XSLT 2.0 por supuesto, de hecho lo hice para el desarrollo y luego tuve que reescribir todo. Supongo que la misma razón para no pasar a XSLT 2.0 se mantiene para una gran cantidad de desarrolladores de XSLT. – Maestro13
@ Maestro13: Zobra admite XPath 2.0 y está disponible como una extensión de PHP, consulte: http://www.ibm.com/developerworks/xml/library/x-zorba/index.html - Por lo que respecta a PHP, puede hacerlo también [registrar funciones de PHP] (http://php.net/manual/en/domxpath.registerphpfunctions.php) como 'strcmp' para ser utilizado con su xpath. – hakre
@hakre gracias por la información. Consultaré con mi proveedor de servicios de alojamiento si pueden activar Zobra. Y sí, una alternativa sería registrar una función de php personalizada y usarla en xslt; en el fragor de la batalla XSLT, me olvidé por completo de eso. – Maestro13