<request>
<event>
<st1>ky</st1>
<st2>de</st2>
<st3></st3>
<st4></st4>
<st5></st5>
<starttime>2011-11-01T00:00:00</starttime>
<endtime></endtime>
<ty>
<st_in>
<stno>1</stno>
<stid></stid>
</st_in>
</ty>
<mt_in>
<mt_mem>
<mt_id></mt_id>
<mt_1></mt_1>
</mt_mem>
</mt_in>
</request>
如果有空,我想将它更新为默认值NO,除了元素ty和mt_in以及starttime和endtime。
所以输出将是
<request>
<event>
<st1>ky</st1>
<st2>de</st2>
<st3>NO</st3>
<st4>NO</st4>
<st5>NO</st5>
<starttime>>01-Nov-2011 12:00:00 AM</starttime>
<endtime>NULL</endtime>
<ty>
<st_in>
<stno>1</stno>
<stid></stid>
</st_in>
</ty>
<mt_in>
<mt_mem>
<mt_id></mt_id>
<mt_1></mt_1>
</mt_mem>
</mt_in>
</event>
</request>
使用的样式表是
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:date="http://exslt.org/dates-and-times" extension-element-prefixes="date" exclude-result-prefixes="">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="starttime|endtime">
<xsl:choose>
<xsl:when test="not(normalize-space(string(.))) = ''">
<xsl:variable name="inpdate" select="string(.)"/>
<xsl:element name="{name()}" namespace="{namespace-uri()}">
<xsl:value-of select="date:format-date($inpdate, 'dd-MMM-yyyy hh:mm:ss a')"/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="{name()}" namespace="{namespace-uri()}">
<xsl:value-of select="'NULL'"/>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="*[not(node()) and not(ancestor-or-self::*[self::ty|self::mt_in|self::starttime|self::endtime])]">
<xsl:element name="{name()}" namespace="{namespace-uri()}">
<xsl:value-of select="'+'"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
让每个人都工作但是如果日期存在则不会将格式更改为01-Nov-2011 12:00:00 AM。我做了什么错误