Обязательный тип элемента первого аргумента substring (): xs: string; предоставленное значение имеет тип элемента xs: dateTime - PullRequest
0 голосов
/ 05 марта 2020
  <?xml version="1.0" encoding="UTF-8"?>
 <xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   version="2.0"

    exclude-result-prefixes="#all"
    >
  <xsl:output indent="yes"/>
  <xsl:template match="/">
  <xsl:variable name="utc-timestamp" select="current-dateTime()"/>
  <xsl:variable name="gmt-timestamp" select="adjust-dateTime-to-timezone($utc-timestamp, xs:dayTimeDuration('PT0H'))"/>
  <xsl:variable name="eu-timestamp" select="adjust-dateTime-to-timezone($utc-timestamp, xs:dayTimeDuration('PT1H'))"/>
  <xsl:variable name="est-timestamp" select="adjust-dateTime-to-timezone($utc-timestamp, xs:dayTimeDuration('-PT5H'))"/>

  <xsl:variable name="fcccYear" select="substring($est-timestamp,7,2)"/>


      <date timestamp="{$utc-timestamp}">
      <gmt str="{$gmt-timestamp}">
        <xsl:value-of select="$fcccYear"/>

      </gmt>
      <est str="{$est-timestamp}">
          <xsl:value-of select="format-dateTime($est-timestamp, '[D01][M01][Y0001][h]:[m][PN,*-2] [ZN,*-3]', (), (), 'us')"/>
      </est>

  </date>
  </xsl:template>
  </xsl:stylesheet>

Я пытаюсь получить подстроку настроенного времени, и я получаю ошибку ниже, что нормально. Может кто-нибудь, пожалуйста, дайте мне знать, как преобразовать XS: dateTime в XS: String

ОШИБКА: Обязательный тип элемента первого аргумента substring (): xs: string; предоставленное значение имеет тип элемента xs: dateTime

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Вы можете просто привести xs:dateTime к xs:string. Таким образом, линия может быть

<xsl:variable name="fcccYear" select="substring(xs:string($est-timestamp),7,2)"/>
0 голосов
/ 05 марта 2020

Существуют функции для типа данных dateTime или date для извлечения таких компонентов, как месяц или год; кроме того, вы знаете о format-dateTime, который с правильным вторым аргументом позволяет вам получить строку с любыми частями и любым форматом, который вы хотите. Если вы хотите строку, вы также можете использовать string($est-timestamp).

...