Проблемы при компиляции XSL-файла при использовании функции `dayTimeDuration` - PullRequest
1 голос
/ 24 сентября 2019

Я хочу сместить часовой пояс в XSL, но получаю ошибки:

Когда я использую dayTimeDuration из пространства имен xmlns:xs="http://www.w3.org/2001/XMLSchema" Я получаю следующую ошибку:

Error at xsl:variable on line 11 of :
  XPST0017: XPath syntax error at char 90 on line 11 in {..., xs:dayTimeDuration('PT2H'...}:
    Unknown constructor function: {http://www.w3.org/2001/XMLSchema}dayTimeDuration


javax.xml.transform.TransformerConfigurationException: Failed to compile stylesheet. 1 error detected.

Когда я используюxs:dayTimeDuration пространство имен формы xmlns:xdt="http://www.w3.org/2005/xpath-datatypes" Я вижу ошибку:

net.sf.saxon.s9api.SaxonApiException: Errors were reported during stylesheet compilation

Как я могу сместить текущее время в XSL.Вот пример, который терпит неудачу:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:fn="http://www.preadviceevents/functions"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:common="http://www.hermes.co.uk/v2.0.7/common"
                xmlns:pe="http://www.hermes.co.uk/v2.0.7/preadviceEvents"
                xmlns:pct="http://www.hermes.co.uk/v2.0.7/parcelTypes"
                xmlns="http://www.cognitomobile.com/schemas/FieldForceIQ/1.0/TAMS"
                xmlns:xdt="http://www.w3.org/2005/xpath-datatypes"
                exclude-result-prefixes="xs common pe pct fn">

<xsl:variable name="dateNow" select="format-dateTime(adjust-dateTime-to-timezone(current-dateTime(), xdt:dayTimeDuration('PT2H')), '[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]')"/>


<xsl:variable name="dateNow" select="format-dateTime(adjust-dateTime-to-timezone(current-dateTime(), xs('PT2H')), '[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]')"/>

Я пробовал xdt и xs без взгляда.Что мне не хватает?Есть ли лучший способ достичь того, чего я хочу.

1 Ответ

0 голосов
/ 24 сентября 2019

Правильное пространство имен: http://www.w3.org/2001/XMLSchema. Пространство имен http://www.w3.org/2005/xpath-datatypes использовалось в течение короткого времени в черновой спецификации, но никогда не использовалось в окончательном варианте.Конечно, вы можете использовать любой префикс, который вам нравится, если вы привязываете его к нужному пространству имен.Если вы получаете ошибку с пространством имен http://www.w3.org/2001/XMLSchema, тогда мы должны увидеть, что это за ошибка.

...