2017-05-03 11 views
0

、EffectiveDateは、現在の日の翌日であるべきで、ExpirationDateとはEffectiveDate + 1年でなければなりませんあなたは私のXSLT変換のdatetime

入力XML助けてください:

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
<Name>Test</Name> 
</root> 

出力XML:

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
<EffectiveDate>2017-05-4 13:05:658+0200</EffectiveDate> 
<ExpirationDate>2018-05-4 13:05:658+0200</ExpirationDate> 
</root> 

サンプルXSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
     <root> 
      <EffectiveDate></EffectiveDate> 
      <ExpirationDate></ExpirationDate> 
     </root> 
    </xsl:template> 
</xsl:stylesheet> 
+0

あなたは、現在の日付を取得する方法を知っていますか:http://stackoverflow.com/questions/26627949/how-to-find-the-current-date-in-xslt-1-0/26628225# 26628225 –

答えて

0

これはあなたのXSLTプロセッサによって異なりますが、この問題はスクリプトを使用して解決できます。この例ではC#を使用しています。

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts"> 
    <msxsl:script language="C#" implements-prefix="user"> 
    <msxsl:assembly name="System.Web" /> 
    <msxsl:using namespace="System.Web" /> 
    <![CDATA[ 
      public string GetDate(string DateFormat) 
      { 
      return DateTime.Now.ToString(DateFormat); 
      } 

      public string GetExpirationDate(string DateFormat) 
      { 
      return DateTime.Now.AddYears(1).ToString(DateFormat); 
      } 

     ]]> 
    </msxsl:script> 

    <xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="UTF-8" /> 

    <xsl:template match="/"> 
    <root> 
     <EffectiveDate> 
     <xsl:value-of select="user:GetDate('dddd, dd MMMM yyyy')"/> 
     </EffectiveDate> 
     <ExpirationDate> 
     <xsl:value-of select="user:GetExpirationDate('dddd, dd MMMM yyyy')"/> 
     </ExpirationDate> 
    </root> 
    </xsl:template> 

</xsl:stylesheet>