Ваше выражение XPath , хотя и не очень эффективное, дает правильный результат .
Когда преобразование выполняется с Saxon 9.1.0.5J, результат будет:
<?xml version="1.0" encoding="UTF-8"?>6
Кажется, проблема в том, что это преобразование XSLT 2.0 (а это не обязательно!), И вы, похоже, пытаетесь запустить его в браузере. К сожалению, современные браузеры не поддерживают (пока) XSLT 2.0 .
Решение состоит в том, чтобы просто изменить версию на 1.0
.
Вам также не нужно пространство имен схемы XML для этого преобразования.
Наконец, если структура предоставленного XML-документа не изменится, более эффективное выражение XPath (потому что использование сокращения //
вызывает сканирование всего (под) дерева, начиная с верхнего узла элемента), будет следующим:
count(/*/quote)
Собрав все это вместе, мы получим следующее преобразование :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:value-of select="count(/*/quote)"/>
</xsl:template>
</xsl:stylesheet>
и выдает желаемый результат .