XSLT Obtendo duas saídas diferentes para a mesma entrada XML para o mesmo XSL

Eu tenho tentado meu código XSLT na ferramenta online [Processador XSLT 1.0]:

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

Recentemente, tive que fazer uso dexs:dateTime e, portanto, começou a usar a ferramenta que usaProcessador XSLT 2.0, http://xsltransform.net/

Agora, quando eu estava tentando resolver um problema, vejo que recebo saídas diferentes para o mesmo XML de entrada nesses dois processadores. O código postado aqui não é o código real no qual estou trabalhando; isto é para simular a saída estranha que eu enfrentei.

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>

Saída dehttp://xsltransform.net/ : [saída 1]

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

Saída dehttp://www.freeformatter.com/xsl-transformer.html : [saída 2]

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

Esperado XML de saída éoutput 2 .

Alguma idéia de por que esse comportamento de saída diferente?

Nota: Eu olhei para outra pergunta do SO:Gerando duas saídas diferentes para o mesmo arquivo XSL?, mas isso é diferente.

Editar

Para adicionar mais clareza sobre qual ferramenta produziu qual saída:

http://xsltransform.net/ produzidooutput 1

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

Atualização [10/02/2014] - referente à solução

Como a resposta correta foi fornecida pela primeira vez por Jim Garrison, isso foi marcado como resposta. No entanto, existem outros pontos importantes também, como apontado por outros, portanto, estou encerrando tudo aqui.

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

O modelo acima elimina os nós vazios no XSLT1 e no XSLT2. Conseqüentementesaída 2 está correta

* Motivo para obtersaída 1 da ferramenta -http://xsltransform.net/ : *

Como @ michael.hor257k apontou, existem dois modelos que correspondem ao<book> elemento.A ferramenta estava usando o Saxon-HE 9.5.1.3, e osaída 1 o comportamento provavelmente foi um bug corrigido na última versão de manutenção [@Michael Kay explicou bem em sua resposta]Como @Ian Roberts mencionou em sua resposta, existe um conceito de prioridades padrão que são atribuídas a diferentes tipos de modelos. Alterando a sintaxe do modelo para:<xsl:template match="*[not(normalize-space())]" priority="2"/> produz a mesma saída em ambas as ferramentas, independentemente da versão do saxão, porque estamos definindo explicitamente a prioridade do modelo.

questionAnswers(4)

yourAnswerToTheQuestion