различное поведениемежду саксонцами 8,7 и 9,1 - PullRequest
0 голосов
/ 13 января 2012

Кто-нибудь знает причину, по которой следующий фрагмент XSLT печатает « 1 » под саксонским 8.7 и « 2 » под 9.1.0.8?

<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"/>

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

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

Ответы [ 2 ]

1 голос
/ 14 января 2012

Мне кажется, что изменение было внесено этим исправлением ошибки:

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

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

Майкл Кей

1 голос
/ 13 января 2012

Я пропустил следующее через Saxon 8.7.3J и Saxon-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

Версия, указанная в комментарии ОП к этому ответу, действительно печатает '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
...
...