XSLT Obteniendo dos salidas diferentes para la misma entrada XML para la misma XSL

He estado probando mi código XSLT en la herramienta en línea [Procesador XSLT 1.0]:

http://www.freeformatter.com/xsl-transformer.html

Recientemente tuve que hacer uso dexs:dateTime y por lo tanto comencé a usar la herramienta que usaProcesador XSLT 2.0, http://xsltransform.net/

Ahora, cuando estaba tratando de resolver un problema, veo que obtengo resultados diferentes para el mismo XML de entrada en estos dos procesadores. El código publicado aquí no es el código real en el que estoy trabajando; Esto es para simular la salida extraña que enfrenté.

XML:

<?xml version="1.0" encoding="UTF-8"?>
<items>
    <book> 
        <title></title>
    </book>
    <phone>apple</phone>
</items>

XSLT:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="xml" version="1.0" encoding="UTF-8"
        indent="yes" />

    <xsl:template match="/">
        <items><xsl:apply-templates select="items/*" /></items>
    </xsl:template>

    <!-- ignore empty elements -->
    <xsl:template match="*[not(normalize-space())]" />


    <xsl:template match="book">
      <newbook><xsl:apply-templates /></newbook>
    </xsl:template>

    <xsl:template match="title">
      <newtitle><xsl:apply-templates /></newtitle>
    </xsl:template>

    <xsl:template match="phone">
      <newphone><xsl:apply-templates /></newphone>
    </xsl:template>

</xsl:stylesheet>

Salida dehttp://xsltransform.net/ : [salida 1]

<?xml version="1.0" encoding="UTF-8"?>
<items>
   <newbook> 
        <newtitle/>
    </newbook>
   <newphone>apple</newphone>
</items>

Salida dehttp://www.freeformatter.com/xsl-transformer.html : [salida 2]

<?xml version="1.0" encoding="UTF-8"?>
<items>
   <newphone>apple</newphone>
</items>

Esperado XML de salida esoutput 2 .

¿Alguna idea de por qué este comportamiento de salida diferente?

nota: miré otra pregunta SO:¿Generando dos salidas diferentes para el mismo archivo XSL?Pero eso es diferente.

Editar

Para agregar más claridad sobre qué herramienta produjo qué salida:

http://xsltransform.net/ producidooutput 1

http://www.freeformatter.com/xsl-transformer.html producidooutput 2

Actualización [10/02/2014] - con respecto a la solución

Dado que Jim Garrison proporcionó por primera vez la respuesta correcta, está marcada como respuesta. Sin embargo, también hay otros puntos importantes, como señalan otros, por lo tanto, estoy terminando todo aquí.

<xsl:template match="*[not(normalize-space())]" />

La plantilla anterior elimina los nodos vacíos en XSLT1 y XSLT2. Por lo tantola salida 2 es correcta

* Motivo para conseguirsalida 1 de la herramientahttp://xsltransform.net/ : *

Como señaló @ michael.hor257k, hay dos plantillas que coinciden con<book> elemento.La herramienta estaba usando Saxon-HE 9.5.1.3, y elsalida 1 el comportamiento probablemente fue un error que se corrigió en la última versión de mantenimiento [@Michael Kay explicó bien en su respuesta]Como @Ian Roberts mencionó en su respuesta, existe un concepto de prioridades predeterminadas que se asignan a diferentes tipos de plantillas. Cambiar la sintaxis de la plantilla a:<xsl:template match="*[not(normalize-space())]" priority="2"/> produce el mismo resultado en ambas herramientas, independientemente de la versión sajona, porque estamos definiendo explícitamente la prioridad de la plantilla.

Respuestas a la pregunta(2)

Su respuesta a la pregunta