xslt日期转换为UTC

时间:2016-02-19 04:32:07

标签: xslt maximo

我对xslt编程很新。任何人都可以帮忙解决这个问题:

输入xml:

<?xml version="1.0" encoding="UTF-8"?>
<MESSAGE>
    <ER>
        <MXITEMOUT xmlns="http://www.mro.com/mx/integration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" language="EN">
            <Header operation="Notify" event="1">
                <SenderID type="MAXIMO" majorversion="6" minorversion="0" build="02" dbbuild="V600-76">MX</SenderID>
                <CreationDateTime>2005-08-15T14:28:06-05:00</CreationDateTime>
                <RecipientID>EXTSYS1234</RecipientID>
                <MessageID>1124</MessageID>
            </Header>
            <Content>
                <MXITEM>
                    <ITEM action="Add">
                        <ITEMNUM>I1001</ITEMNUM>
                        <DESCRIPTION langenabled="1">test item</DESCRIPTION>
                        <ROTATING>1</ROTATING>
                        <LOTTYPE maxvalue="NOLOT">NOLOT</LOTTYPE>
                        <CAPITALIZED>0</CAPITALIZED>
                        <CREATEDDATE>2014-05-22T13:00:46+10:00</CREATEDDATE>
                    </ITEM>
                </MXITEM>
            </Content>
        </MXITEMOUT>
    </ER>
    <IR>
        <MXITEMOUT xmlns="http://www.mro.com/mx/integration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" language="EN">
            <Header operation="Notify" event="1">
                <SenderID type="MAXIMO" majorversion="6" minorversion="0" build="02" dbbuild="V600-76">MX</SenderID>
                <CreationDateTime>2005-08-15T14:28:06-05:00</CreationDateTime>
                <RecipientID>EXTSYS1234</RecipientID>
                <MessageID>1124</MessageID>
            </Header>
            <Content>
                <MXITEM>
                    <ITEM action="Add">
                        <ITEMNUM>I1001</ITEMNUM>
                        <DESCRIPTION langenabled="1">test item</DESCRIPTION>
                        <ROTATING>1</ROTATING>
                        <LOTTYPE maxvalue="NOLOT">NOLOT</LOTTYPE>
                        <CAPITALIZED>0</CAPITALIZED>
                        <CREATEDDATE>2014-05-22T13:00:46+10:00</CREATEDDATE>
                    </ITEM>
                </MXITEM>
            </Content>
        </MXITEMOUT>
    </IR>
</MESSAGE>

我的XSLT是:

<?xml version="1.0"?> 
<!-- 
This XSL is supposed to change the ITEMNUM tag value by prepending 001 to the existing value.
It also strips off the MESSAGE and IR wrapper tags so that the resultant data is consistent with 
our XML schema
-->

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:mro="http://www.mro.com/mx/integration" version="1.0" exclude-result-prefixes="mro">

<xsl:template match="/MESSAGE">
    <xsl:apply-templates select="IR"/>
</xsl:template>
<xsl:template match="IR">
    <xsl:apply-templates select="@*|*|text()"/>
</xsl:template>

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

<!-- 
Change the ITEMNUM tag value by prepending 001 to the existing value
-->
<xsl:template match="mro:ITEMNUM">  
    <xsl:element name="ITEMNUM" namespace="http://www.mro.com/mx/integration">  
    <xsl:text>MAX-</xsl:text><xsl:value-of select="."/>
    </xsl:element>
</xsl:template>

</xsl:stylesheet>

当前输出为:

<?xml version="1.0" encoding="UTF-8"?>
        <MXITEMOUT xmlns="http://www.mro.com/mx/integration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" language="EN">
            <Header operation="Notify" event="1">
                <SenderID type="MAXIMO" majorversion="6" minorversion="0" build="02" dbbuild="V600-76">MX</SenderID>
                <CreationDateTime>2005-08-15T14:28:06-05:00</CreationDateTime>
                <RecipientID>EXTSYS1234</RecipientID>
                <MessageID>1124</MessageID>
            </Header>
            <Content>
                <MXITEM>
                    <ITEM action="Add">
                        <mro:ITEMNUM xmlns:mro="http://www.mro.com/mx/integration">MAX-I1001</mro:ITEMNUM>
                        <DESCRIPTION langenabled="1">test item</DESCRIPTION>
                        <ROTATING>1</ROTATING>
                        <LOTTYPE maxvalue="NOLOT">NOLOT</LOTTYPE>
                        <CAPITALIZED>0</CAPITALIZED>
                        <CREATEDDATE>2014-05-22T13:00:46+10:00</CREATEDDATE>
                    </ITEM>
                </MXITEM>
            </Content>
        </MXITEMOUT>

预期输出为:

<?xml version="1.0" encoding="UTF-8"?>
        <MXITEMOUT xmlns="http://www.mro.com/mx/integration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" language="EN">
            <Header operation="Notify" event="1">
                <SenderID type="MAXIMO" majorversion="6" minorversion="0" build="02" dbbuild="V600-76">MX</SenderID>
                <CreationDateTime>2005-08-15T14:28:06-05:00</CreationDateTime>
                <RecipientID>EXTSYS1234</RecipientID>
                <MessageID>1124</MessageID>
            </Header>
            <Content>
                <MXITEM>
                    <ITEM action="Add">
                        <mro:ITEMNUM xmlns:mro="http://www.mro.com/mx/integration">MAX-I1001</mro:ITEMNUM>
                        <DESCRIPTION langenabled="1">test item</DESCRIPTION>
                        <ROTATING>1</ROTATING>
                        <LOTTYPE maxvalue="NOLOT">NOLOT</LOTTYPE>
                        <CAPITALIZED>0</CAPITALIZED>
                        <CREATEDDATE>2014-05-22T23:00:46.000Z</CREATEDDATE>
                    </ITEM>
                </MXITEM>
            </Content>
        </MXITEMOUT>

我正在尝试在Google中查找逻辑,以便在xslt中将日期转换为utc格式。

这是在抛出奇怪的错误。

  

XML日期:2014-05-22T13:00:46 + 10:00预计日期:2014-05-22T23:00:46.0​​00Z

0 个答案:

没有答案