2013-11-25 314 views
0

我有具有以下結構的XML:XSLT - 重複父節點與子節點

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

使用的XSLT是:

<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> 

的XML的使用變換到輸出XML XSLT顯示:

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

然而,所需輸出XML應該是這樣的:

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

如何修改XSLT以實現上述輸出xml結構?

+0

輸出應該是相同的您輸入?這將是一個非常微不足道的xslt ......'',但那是你想要的嗎? – oerkelens

+0

您的輸入和輸出是完全一樣的* - 你想要發生的變換在哪裏? – Tomalak

+0

感謝所有有價值的輸入。轉換對於xml的其他部分是必需的。xml的這個特定部分沒有經過轉換是正確的,這些建議對我有用,謝謝! – user2967948

回答

0

你可以試試,

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> 

輸出:

<?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>