Я не знаю, какой процессор XSLT использует Eclipse. По крайней мере, с некоторыми расширениями вы можете настроить процессор, например, в Ксалан или Саксонии.
Mozilla / XUL использует Transformiix, по крайней мере по умолчанию. Я где-то читал, что это можно сделать, чтобы использовать саксонский.
Разумеется, между разными процессорами XSLT существуют различия.
В спецификации для generate-id () не указано, как должны выглядеть сгенерированные идентификаторы; только то, что они «должны состоять из буквенно-цифровых символов ASCII и должны начинаться с буквенного символа».
Если вы хотите, чтобы XSLT-under-XUL производил идентичные идентификаторы, как в Eclipse, у вас есть несколько вариантов.
1) Вы можете попытаться заставить XUL использовать процессор XSLT, который использует Eclipse. Я не знаю, возможно ли это.
2) Реализуйте собственный шаблон для генерации идентификаторов.
С последним было бы нетрудно имитировать стиль идентификаторов, которые вы получаете в Eclipse, и сделать их стабильными при нескольких запусках и разных процессорах XSLT, если у вас есть некоторые стабильные данные, на которых они основаны.
Например, если порядок ваших записей всегда стабилен (старые записи никогда не будут удалены, или заменены, или заменены), тогда вы можете использовать такой шаблон для генерации идентификаторов:
<xsl:template match="node()" mode="generate-id">
<xsl:text>N</xsl:text>
<xsl:number level="any" count="node()" format="00001"/>
</xsl:template>
Если порядок не стабилен, но имя и фамилия стабильны и уникальны, вы можете использовать
<xsl:template match="node()" mode="generate-id">
<xsl:value-of select="concat(FirstName, LastName)" />
</xsl:template>