2012-01-13 6 views
0

Кто-нибудь знает причину, почему следующий фрагмент XSLT выводит «» под саксонской 8,7 и «» под 9.1. 0,8?различное поведение <XSL: уровень номера = «любой»> между Saxon 8,7 и 9,1

<xsl:variable name="count1"> 
    <xsl:variable name="tmp1"><x y="z"><x/></x></xsl:variable> 
    <xsl:for-each select="$tmp1/x/x"> 
     <xsl:number level="any" from="x[@y='z']" /> 
    </xsl:for-each> 
</xsl:variable> 
<xsl:message select="$count1"/> 

И какое значение является правильным?

Заранее благодарим за понимание!

ответ

1

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

http://sourceforge.net/tracker/?func=detail&aid=1460712&group_id=29872&atid=397617

Однако , в течение многих лет был зафиксирован ряд других исправлений ошибок в xsl: число, и, возможно, стоит проверить остальные. Некоторые из них исправляли ошибки в саксонской реализации, некоторые из них были в ответ на ошибки в спецификации: за эти годы было много разъяснений в отношении угловых дел. Помните, что 8.7 вышло в 2006 году, прежде чем спецификация XSLT 2.0 была завершена. (И XSLT 1.0 спецификации для XSL: номер был расплывчатым в крайности.)

Michael Kay

+0

Спасибо. Я думаю, 2 является правильным значением. Печально видеть, как на протяжении многих лет наш код зависел от всех ошибок в старой версии Saxon, что делает его намного сложнее обновить до более новой версии. – rustyx

1

Я побежал следующий через саксонского 8.7.3J и Саксонская-HE 9.3.0.8J:

<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="2.0"> 
    <xsl:output method="xml" encoding="utf-8" indent="yes"/> 

    <xsl:variable name="count1"> 
    <xsl:variable name="tmp1"><x y="z"><x/></x></xsl:variable> 
    <xsl:for-each select="$tmp1/x/x"> 
     <xsl:number level="any" from="x[@y='z']" /> 
    </xsl:for-each> 
    </xsl:variable> 

    <xsl:template match="/"> 
    <xsl:message select="$count1"/> 
    </xsl:template> 
</xsl:stylesheet> 

и оба они напечатаны '2':

~ zacharyyoung$ java -jar ~/Downloads/saxonb8-7-3j/saxon8.jar ~/so.xsl ~/so.xsl 
2 

- и -

~ zacharyyoung$ java -jar /usr/local/saxon9he.jar -s:so.xsl -xsl:so.xsl 
2 
<?xml version="1.0" encoding="utf-8"?> 

РЕДАКТИРОВАТЬ 1

версия поставляется в комментарии OP на этот ответ действительно печать «1»:

~ zacharyyoung$ java -jar ~/Downloads/saxon-8.7.jar ~/so.xsl ~/so.xsl 
1 
~ zacharyyoung$ java -jar ~/Downloads/saxon-8.7.jar 
No source file name 
Saxon 8.7J from Saxonica 
... 
+0

странно. Я использовал это из репозитория Maven: http://repo1.maven.org/maven2/net/sfon/saxon/saxon/8.7/saxon-8.7.jar – rustyx

+0

@rustyx: Да, это действительно печатает '1' , –

+0

Обратите внимание, что любая версия Saxon, которую вы найдете в Maven, является неофициальной и была помещена туда кем-то, кто не соблюдает условия лицензии, для чего требуется подтверждение вклада третьих сторон в сопровождение программного обеспечения. –

 Смежные вопросы

  • Нет связанных вопросов^_^