您好我正在使用XSL将一个XML转换为另一个XML。要在xsl中的子字符串
我面临的问题是标签内的值是10feb2011
即<date>10feb2011</date>
。
我需要的输出为:
<date>10</date>
<month>feb</month>
<year>2011</year>
所以我用substring
功能,但无法得到它的工作。
我的XML看起来像
<ArrivalDateTime>
<Date>20feb2011<Date>
</ArrivalDateTime>
应该转化成这种格式
<ArrivalDateTime>
<dayOfMonth>10</dayOfMonth>
<month>feb</month>
<year>2011</year>
</ArrivalDateTime>
下面是我写的
<?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>
这里有一个很好的经验法则:如果你是比较新的XML和XSLT,以及你使用CDATA节,你可能做错事。 – 2011-02-18 19:22:33