2012-04-23 6 views
0

XSL 1.0のDateTime 2005-08-01T12:00:00の書式設定を試みています。私は部分文字列関数を使ってみましたが、 'T'はまだ来ています。このスニペットを書いて、入ってくる値から「T」を削除するxslt 1.0のDateTimeの書式設定

<YEAR>2005</YEAR> 
<MONTH>08</MONTH> 
<DAY>01</DAY> 
<HOUR>12<HOUR/> 
<MINUTE>00<MINUTE/> 
<SECOND>00<SECOND/> 

方法 - 私は私の出力は次のように来てほしいですか?

+1

xsltはどのように見えますか? –

+1

私はあなたがこの質問に対する答えを得ることは非常に幸運だと思います。個人的には、私はあなたの間違いを見ることができない限り質問に答えることはありません。私は人々のためのコードを書いたくないので、間違っている場所を示して、運動から何かを学ぶようにします。 –

答えて

3

これには、サブ文字列を使用できます。ことは、文字列の各文字のインデックスだから、あなたがこれを行うだろう年を取得するために、ここで

<YEAR><xsl:value-of select="substring(., 1, 4) " /></YEAR> 

がいっぱいになった(現在の日付要素の上に配置されていると仮定して)ない0 1で始まることを、忘れないでくださいXSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes" /> 

    <xsl:template match="date"> 
     <date> 
     <YEAR><xsl:value-of select="substring(., 1, 4) " /></YEAR> 
     <MONTH><xsl:value-of select="substring(., 6, 2) " /></MONTH> 
     <DAY><xsl:value-of select="substring(., 9, 2) " /></DAY> 
     <HOUR><xsl:value-of select="substring(., 12, 2) " /></HOUR> 
     <MINUTE><xsl:value-of select="substring(., 15, 2) " /></MINUTE> 
     <SECOND><xsl:value-of select="substring(., 18, 2) " /></SECOND> 
     </date> 
    </xsl:template> 

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

次以下のXML

<dates> 
    <date>2005-08-01T12:00:00</date> 
</dates> 

に印加される出力

です
<dates> 
    <date> 
     <YEAR>2005</YEAR> 
     <MONTH>08</MONTH> 
     <DAY>01</DAY> 
     <HOUR>12</HOUR> 
     <MINUTE>00</MINUTE> 
     <SECOND>00</SECOND> 
    </date> 
</dates> 

明らかに、これが機能するには、日付が常に同じ形式で入力されていることを確認する必要があります。

+0

ありがとうTim ...それは完全に働いた。 – Kundan

+2

私は助けになることをうれしく思います。彼らがあなたのために働くならば、答えを受け入れるべきだということに注意してください。そうすれば、将来あなたの質問を見上げる人たちは、正しい答えが何であるかを知ることができます。 –