XSLT Получение двух разных выходных данных для одного и того же входного XML для одного и того же XSL

Я пробовал свой XSLT-код в онлайн-инструменте [XSLT 1.0 процессор]:

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

Недавно мне пришлось воспользоватьсяxs:dateTime и, следовательно, начал использовать инструмент, который используетПроцессор XSLT 2.0, http://xsltransform.net/

Теперь, когда я пытался решить проблему, я вижу, что я получаю разные выходные данные для одного и того же входного XML в этих двух процессорах. Код, размещенный здесь, не является реальным кодом, над которым я работаю; это для имитации странного вывода, с которым я столкнулся.

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>

Выход изhttp://xsltransform.net/ :&nbsp;[вывод 1]

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

Выход изhttp://www.freeformatter.com/xsl-transformer.html :&nbsp;[вывод 2]

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

ожидаемый&nbsp;выходной XMLoutput 2 .

Любая идея, почему это другое поведение вывода?

примечание: я посмотрел на другой вопрос так:Генерация двух разных выходов для одного и того же файла XSL?, но это не так.

редактировать

Чтобы добавить больше ясности в отношении того, какой инструмент произведен, какой вывод:

http://xsltransform.net/&nbsp;произведенныйoutput 1

http://www.freeformatter.com/xsl-transformer.html&nbsp;произведенныйoutput 2

Обновление [02/10/2014] - относительно решения

Так как правильный ответ был впервые предоставлен Джимом Гаррисоном, это помечено как ответ. Однако есть и другие важные моменты, на которые указывали другие, поэтому я все здесь и завершаю.

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

Приведенный выше шаблон устраняет пустые узлы в XSLT1 и XSLT2. следовательновывод 2 правильный

* Причина получениявыход 1&nbsp;из инструмента -http://xsltransform.net/&nbsp;: *

Как отметил @ michael.hor257k, есть два шаблона, которые соответствуют<book>&nbsp;элемент.Инструмент использовал Saxon-HE 9.5.1.3, ивыход 1&nbsp;поведение, вероятно, было ошибкой, которая была исправлена ​​в последнем техническом выпуске [@Michael Kay хорошо объяснил в своем ответе]Как упомянул в своем ответе @Ian Roberts, существует концепция приоритетов по умолчанию, которые назначаются различным типам шаблонов. Изменение синтаксиса шаблона на:<xsl:template match="*[not(normalize-space())]" priority="2"/>&nbsp;выдает одинаковый вывод в обоих инструментах независимо от саксонской версии, потому что мы явно определяем приоритет шаблона.