0

次のような複数の属性を連結したい XSL 変換による XML から XML への変換:

サンプルケース:

<Sample>
  <Date Year="2012" Month="9" Day="21"/>
  <Time Hour="6" Minute="6" Second="6"/>
</Sample>

必要な出力:

<Sample>
  <Date>9/21/2012</Date>
  <Time>6:6:6</Time>
</Sample>
4

1 に答える 1

2

これは、標準の XSLT ID 変換を追加のテンプレートで拡張して、日付時刻の要素に一致させ、必要に応じて再フォーマットすることで実現できます。

たとえば、Date要素をYearMonthおよびDay属性と一致させるには、次のようにします。

すべてのDate要素に必要な 3 つの属性があることを保証できれば、テンプレートの一致を単純化して

<xsl:template match="Date">

Time要素に同様のテンプレートを追加します。

ここに完全な XSLT があります

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="xml" indent="yes"/>
   <xsl:template match="@*|node()">
      <xsl:copy>
         <xsl:apply-templates select="@*|node()"/>
      </xsl:copy>
   </xsl:template>

   <xsl:template match="Date[@Year][@Month][@Day]">
      <Date><xsl:value-of select="concat(@Month, '/', @Day, '/', @Year)" /></Date>
   </xsl:template>

   <xsl:template match="Time[@Hour][@Minute][@Second]">
      <Time><xsl:value-of select="concat(@Hour, ':', @Minute, ':', @Second)" /></Time>
   </xsl:template>
</xsl:stylesheet>

サンプル XML に適用すると、次のように出力されます。

<Sample>
   <Date>9/21/2012</Date>
   <Time>6:6:6</Time>
</Sample>
于 2012-09-21T06:31:29.977 に答える