1

私は次のxmlを持っています

  <Report>
     <Items>
       <Item>
        <Id>1</Id>
        <TotalSent>251</TotalSent>
        <Opened>48</Opened>
        <LastSend>01/07/2013 16:38:18</LastSend>
        <Bounced>1</Bounced>
        <Unopened>202</Unopened>
      </Item>
    </Items>
  </Report>

xslt を使用して別の xml に変換したいのですが、目的の o/p は次のようになります

<chart subcaption ="Last sent on Monday 01 July 2013 at 16:38">
  <set label="Opened" value="48"/>
  <set label="Bounced" value="1"/>
</chart>

サブキャプション属性に必要な日付を取得できません。以下の xslt コードを試しましたが、動作しません

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ms="urn:schemas-microsoft-com:xslt">
<xsl:output method="xml" indent="yes" omit-xml-declaration="no"/>
<xsl:template match="/">
    <chart>
      <xsl:variable name='lastSend' select='Report/Items/Item/LastSend' />
      <xsl:attribute name="subcaption">
        <xsl:value-of select="ms:format-date($lastSend, ' Last sent on MMM dd, yyyy at')"/>
        <xsl:value-of select="ms:format-time($lastSend, ' hh:mm')"/>
      </xsl:attribute>
      <xsl:for-each select="Report/Items/Item">
        <set>
          <xsl:attribute name="label">Opened</xsl:attribute>
          <xsl:attribute name="value">
            <xsl:value-of select="Opened" />
          </xsl:attribute>
        </set>
        <set>
          <xsl:attribute name="label">Bounced</xsl:attribute>
          <xsl:attribute name="value">
            <xsl:value-of select="Bounced" />
          </xsl:attribute>
        </set>
      </xsl:for-each>
    </chart>
  </xsl:template>
</xsl:stylesheet>

ms:format-date() & ms:format-time()関数でハードコードされた値を渡すと、正常に機能し01/07/2013 16:38:18ていたように見えますが、変数値$lastSendを渡すと機能しません。

注: どのバージョンの xsl も使用できます。

4

1 に答える 1