简体   繁体   中英

XSLT - Repeating Parent Node with Child Nodes

I have an xml with the following structure:

<FlightDetails>
                        <CouponNumber>1</CouponNumber>
                        <ServiceClass>Y</ServiceClass>
</FlightDetails>
<FlightDetails>
                        <CouponNumber>2</CouponNumber>
<ServiceClass>Y</ServiceClass>
</FlightDetails>
<FlightDetails>
                        <CouponNumber>3</CouponNumber>
                        <ServiceClass>Y</ServiceClass>
</FlightDetails>

The xslt used is :

<FlightDetails>
          <xsl:for-each select="FlightDetails/CouponNumber">
          <CouponNumber>
          <xsl:value-of select="." />
          </CouponNumber>
          </xsl:for-each>
          <xsl:for-each select="FlightDetails/ServiceClass">
          <ServiceClass>
          <xsl:value-of select="." />
          </ServiceClass>
          </xsl:for-each>
</FlightDetails>

The transformation of the xml to an output xml using the xslt shows:

<FlightDetails>
<CouponNumber>1</CouponNumber>
<CouponNumber>2</CouponNumber>
<CouponNumber>3</CouponNumber>
<ServiceClass>Y</ServiceClass>
<ServiceClass>Y</ServiceClass>
<ServiceClass>Y</ServiceClass>
</FlightDetails>

However, the required output xml should look like:

<FlightDetails>
    <CouponNumber>1</CouponNumber>
    <ServiceClass>Y</ServiceClass>
</FlightDetails>
<FlightDetails>
    <CouponNumber>2</CouponNumber>
    <ServiceClass>Y</ServiceClass>
</FlightDetails>
<FlightDetails>
    <CouponNumber>3</CouponNumber>
    <ServiceClass>Y</ServiceClass>
</FlightDetails>

How to modify the XSLT to achieve the above output xml structure?

You could try,

XSL:

 <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
       <xsl:output indent="yes" />

    <xsl:template match="/">
         <xsl:copy-of select="//FlightDetails"/>
    </xsl:template>
    </xsl:stylesheet>

Output:

<?xml version="1.0" encoding="UTF-8"?>
<FlightDetails>
      <CouponNumber>1</CouponNumber>
      <ServiceClass>Y</ServiceClass>
   </FlightDetails>
<FlightDetails>
      <CouponNumber>2</CouponNumber>
      <ServiceClass>Y</ServiceClass>
   </FlightDetails>
<FlightDetails>
      <CouponNumber>3</CouponNumber>
      <ServiceClass>Y</ServiceClass>
   </FlightDetails>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM