日期不变

时间:2015-04-30 16:06:08

标签: xml date xslt xslt-1.0

<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。我做了什么错误

0 个答案:

没有答案