2013-11-25 204 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>