Link to home
Start Free TrialLog in
Avatar of Sha1395
Sha1395

asked on

Xslt Transform XML 2 XML

Hi Guru's

I have an input xml and transform to another xml format thru Xslt.

Input xml

<?xml version="1.0"?>
<Stockpile xmlns="http://www.qr.com.au/schema/2009/2.1/Stockpile">
  <Header>
    <Reference>
      <Identifier>B47M_2010-01-22_2010-01-22T105926</Identifier>
      <DateTime>2010-01-22T10:59:26.667+10:00</DateTime>
    </Reference>
    <Sender>
      <Identifier>BS.SPT</Identifier>
    </Sender>
    <Receiver>
      <Identifier type="Logon Name">PA</Identifier>
    </Receiver>
  </Header>
  <Body>
    <ServiceId>B47M</ServiceId>
    <ServiceDate>2010-01-22</ServiceDate>
    <Consignments>
      <Consignment>
        <Pit>Pit 3</Pit>
        <Route>E</Route>
        <Location>
          <Code>GLD</Code>
        </Location>
      </Consignment>
    </Consignments>
  </Body>
</Stockpile>

Open in new window


Output XML file

<?xml version="1.0"?>
<Message>
 <MessageHeader>
  <Reference>
   <Identifier>MessageResponse_2008-05-19T09:18:01.807+10:00_B79M_2008-05-
    19_2008-05-19T091617</Identifier>
   <ReferenceDate>2008-05-19T09:18:01.807+10:00</ReferenceDate>
  </Reference>
  <Sender>
   <Identifier>PA</Identifier>
  </Sender>
  <Receiver>
   <Identifier>Bus Service</Identifier>
  </Receiver>
 </MessageHeader>
 <MessageBody>
  <MessageResponse>
   <OriginalReference>
    <Identifier>B79M_2008-05-19_2008-05-19T091617</Identifier>
    <ReferenceDate>2008-05-19T09:16:17.207+10:00</ReferenceDate>
   </OriginalReference>
  <ResponseCode>accepted</ResponseCode>
  <Comments>
   <Comment type="informational">automatically approved</Comment>
  </Comments>
  </MessageResponse>
 </MessageBody>
</Message>

Open in new window


Please help me how can i acheive thru XSLT using C#.

Thanks in Advance
Avatar of Rimvis
Rimvis
Flag of Lithuania image

Hi Sha1395,
Please refer to this link on how to apply XSLT transformations to XML:

XML transformation using Xslt in C#
http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=63

If you need help to construct your XSLT, you will need to clarify some details:

1)
In you destination XML there are 2 reference dates:
<ReferenceDate>2008-05-19T09:18:01.807+10:00</ReferenceDate>
<ReferenceDate>2008-05-19T09:16:17.207+10:00</ReferenceDate>

In source, there is only one. How dates in destination XML are generated?

2) Are there values constants?
Identifier>Bus Service</Identifier>
<ResponseCode>accepted</ResponseCode>
<Comment type="informational">automatically approved</Comment>


Avatar of Sha1395
Sha1395

ASKER


Hi Rimvis,

Thanks for your help


1)
In you destination XML there are 2 reference dates: Am generating the date and time here and i don't know how to at this moment.
<ReferenceDate>2008-05-19T09:18:01.807+10:00</ReferenceDate>
<ReferenceDate>2008-05-19T09:16:17.207+10:00</ReferenceDate>

2) Are there values constants? : YES
Identifier>Bus Service</Identifier>
<ResponseCode>accepted</ResponseCode>
<Comment type="informational">automatically approved</Comment>
Avatar of Sha1395

ASKER

Hi Rimvis,

Created my xslt but am facing some trouble to get date and time inside my xslt

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 <xsl:template match="/">
 <xsl:apply-templates select="Stockpile" />
 </xsl:template>
 <xsl:template match="Stockpile">
<Message>
<MessageHeader>
<Reference> 
<Identifier>
"MessageResponse_[b]2008-05-19T09:18:01.807+10:00[/b]_"<xsl:value-of select="Header/Reference/Identifier"/>
</Identifier>
[b]<ReferenceDate>"2008-05-19T09:18:01.807+10:00"</ReferenceDate>[/b]
</Reference> 
  <Sender>
 <Identifier><xsl:value-of select="Header/Receiver/Identifier"/></Identifier>
</Sender>
<Receiver>
<Identifier>"BusService"</Identifier>
</Receiver>
</MessageHeader>
<MessageBody>      
 <MessageResponse> 
 <OriginalReference>                                                
  <Identifier>
<xsl:value-of select="Header/Reference/Identifier"/>
</Identifier>        
  <ReferenceDate>
</ReferenceDate>      
 </OriginalReference>                                               
<ResponseCode>"accepted"</ResponseCode>                               
<Comments>                                                          
   <Comment type="informational">"automatically approved"</Comment> 
</Comments>                                                         
 <xsl:text>
</xsl:text>
 </MessageResponse>      
</MessageBody>           
</Message>
  </xsl:template>
</xsl:stylesheet>

Open in new window


some one help me how can i get the system date and time inside my xslt.

Thanks in Advance
ASKER CERTIFIED SOLUTION
Avatar of Rimvis
Rimvis
Flag of Lithuania image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial