【问题标题】:XSLT - Repeating Parent Node with Child NodesXSLT - 用子节点重复父节点
【发布时间】:2019-07-12 18:53:43
【问题描述】:

我有一个具有以下结构的 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是:

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

使用 xslt 将 xml 转换为输出 xml 显示:

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

【问题讨论】:

  • 您的输出应该与您的输入相同?这将是一个非常微不足道的 xslt...&lt;xsl:template match="/"&gt;&lt;xsl:copy-of select="*&gt;&lt;/xs;&lt;/template&gt;,但这就是你想要的吗?
  • 你的输入和输出完全一样 - 你想在哪里进行转换?
  • 感谢大家的宝贵意见。 xml 的其他部分需要转换。 xml 的这个特定部分没有经过任何转换,并且这些建议对我有用,这是正确的。非常感谢!

标签: xml xslt


【解决方案1】:

你可以试试,

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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 2022-09-23
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多