4

XSLTを使用してXMLファイルを作成しています。日時にはミリ秒があります。ミリ秒なしで出力XMLを取得する必要があります。

フォーマットはYYYY-MM-DDTHH:MM:SS

例えば:

XMLは日付を次のように表示します:2012-12-341T09:26:53.132-0500

しかし、これは次のようにする必要があります。2012-12-341T09:26:53

4

3 に答える 3

2

すべての値がdateTimeであり、が含まれている場合は.、次を使用できますsubstring-before()

substring-before('2012-12-341T09:26:53.132-0500', '.')

substring()最初の20文字を選択するために使用できます。

substring('2012-12-341T09:26:53.132-0500', 0, 21)
于 2012-12-12T02:08:08.333 に答える
1

XSLT2を使用している場合は、次の関数を参照してください:http ://www.w3.org/TR/xslt20/#function-format-dateTime 。この絵の文字列はあなたが望むものを与えるはずです:

format-dateTime($dateTime,'[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01]')
于 2012-12-11T21:44:13.863 に答える
0

この XPath 式は、文字列にドットまたはハイフン、またはドットとハイフンの両方が含まれているかどうかに関係なく、必要な結果を生成し、年、月、日に使用される桁数に依存しません

    substring-before(concat(substring-before(concat(substring-after(.,'T'),
                                                    '.'),
                                             '.'),
                           '-'),
                     '-')

この XPath 式を使用した簡単な XSLT 変換を次に示します

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
 </xsl:template>

 <xsl:template match="dt/text()">
   <xsl:value-of select="substring-before(., 'T')"/>
   <xsl:text>T</xsl:text>
   <xsl:value-of select=
   "substring-before(concat(substring-before(concat(substring-after(.,'T'),
                                                    '.'),
                                             '.'),
                           '-'),
                     '-')
   "/>
 </xsl:template>
</xsl:stylesheet>

この変換がこのテスト XML ドキュメントに適用されると、次のようになります。

<t>
 <dt>2012-12-341T09:26:53.132-0500</dt>
 <dt>2012-12-355T09:34:56</dt>
 <dt>2012-12-355T09:34:56-0500</dt>
 <dt>2012-12-13T9:34:5-0500</dt>
 <dt>2012-12-344T09:12:34.378-0500</dt>
</t>

必要な正しい結果が生成されます。

<t>
   <dt>2012-12-341T09:26:53</dt>
   <dt>2012-12-355T09:34:56</dt>
   <dt>2012-12-355T09:34:56</dt>
   <dt>2012-12-13T9:34:5</dt>
   <dt>2012-12-344T09:12:34</dt>
</t>

説明:

センチネルの適切な適用。

于 2012-12-12T04:04:06.653 に答える