При первом вызове данных измените на
<xsl:choose>
<xsl:when test="position()=1">
<w:t><xsl:value-of select="data"/></w:t>
</xsl:when>
<xsl:otherwise>
<w:t><xsl:value-of select="following::row[$imageid - 2]/data"/></w:t>
</xsl:otherwise>
</xsl:choose>
Затем, во время второго вызова, используйте
<w:t><xsl:value-of select="following::row[$imageid - 1]/data"/></w:t>
. Это должно выровнять данные так, как вы хотите .
Чтобы получить всю информацию, просто распечатайте объект Navigator:
console.log(window.navigator)
Существует несколько способов сохранения информации, специфичной для устройства / клиента. Как вы упомянули, одним из таких способов являются куки. Также есть несколько различных опций, которые часто используются:
Существуют и другие библиотеки, такие как PouchDb , которые используют вышеупомянутые технологии и делают его более «похожим на базу данных». опыт работы на стороне клиента (на стороне клиента).
Системы, которые сохраняют информацию, специфичную для устройства, обычно захватывают ваш пользовательский агент (или что-то подобное) и хранят его с токеном аутентификации определенного типа ( https://jwt.io/ ]) которые могут жить в одном из указанных мест хранения. При повторном посещении этого сайта они могут проверить одно из этих хранилищ, чтобы узнать, есть ли у вас какой-либо токен аутентификации, и сопоставить его с сохраненной информацией на сервере. По сути, это просто немного информации, сохраненной на вашей стороне и немного информации, сохраненной на их стороне.
Если вы используете Chrome, вы можете открыть инструменты разработки и перейти на вкладку «Приложение». Там вы можете увидеть все места хранения и все разные вещи, которые хранятся на вашем браузере. Вы также можете вручную удалить эти вещи из хранилища и повторно посетить сайт, чтобы получить «опыт сброса»