De sous-Chaîne dans xsl

Salut, je suis à la conversion de XML vers un autre XML à l'aide de XSL.

Le problème que j'ai est la valeur à l'intérieur de la balise est 10feb2011
j'.e <date>10feb2011</date>.

J'ai besoin de la sortie:

 <date>10</date>
 <month>feb</month>
 <year>2011</year> 

j'ai donc utilisé substring fonction, mais ne pouvait pas le faire fonctionner.

Mon XML ressemble à

<ArrivalDateTime>
  <Date>20feb2011<Date>
</ArrivalDateTime>

Il doit être converti dans ce format

 <ArrivalDateTime>
   <dayOfMonth>10</dayOfMonth> 
   <month>feb</month> 
   <year>2011</year> 
 </ArrivalDateTime>

Ci-dessous est le XSL j'ai écrit

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">        
<xsl:text><![CDATA[<ArrivalDateTime>]]></xsl:text>          
<xsl:text><![CDATA[<dayOfMonth>]]></xsl:text>
<xsl:value-of select='substring("<xsl:value-of select="/ArrivalDateTime/Date"/>",1,2)'/>
<xsl:text><![CDATA[</dayOfMonth>]]></xsl:text>
<xsl:text><![CDATA[<month>]]></xsl:text>
<xsl:value-of select='substring("<xsl:value-of select="/ArrivalDateTime/Date"/>",3,3)'/>
<xsl:text><![CDATA[</month>]]></xsl:text>
<xsl:text><![CDATA[<year>]]></xsl:text>
<xsl:value-of select='substring("<xsl:value-of select="/ArrivalDateTime/Date"/>",5,4)'/>
<xsl:text><![CDATA[</year>]]></xsl:text>
<xsl:text><![CDATA[</ArrivalDateTime>]]></xsl:text></xsl:template>
</xsl:stylesheet>
  • Voici une bonne règle de base: Si vous êtes relativement nouveau à XML et XSLT, et que vous utilisez des sections CDATA, vous êtes probablement fait quelque chose de mal.