Xml XSLT使用内部结构的单个实例创建源消息的副本
我想找到一个通用的xslt转换来解决这个问题。 假设有这个XMLXml XSLT使用内部结构的单个实例创建源消息的副本,xml,xslt,Xml,Xslt,我想找到一个通用的xslt转换来解决这个问题。 假设有这个XML <Train> <GeneralData> <TrainNumber>123</TrainNumber> </GeneralData> <ArrayOfCoaches> <Coach> <CoachNumber>1</CoachNumber>
<Train>
<GeneralData>
<TrainNumber>123</TrainNumber>
</GeneralData>
<ArrayOfCoaches>
<Coach>
<CoachNumber>1</CoachNumber>
<CoachSeats>18</CoachSeats>
</Coach>
<Coach>
<CoachNumber>2</CoachNumber>
<CoachSeats>23</CoachSeats>
</Coach>
<Coach>
<CoachNumber>3</CoachNumber>
<CoachSeats>34</CoachSeats>
</Coach>
</ArrayOfCoaches>
</Train>
123
1.
18
2.
23
3.
34
我希望能够“分割”这个消息,创建几个只包含一个Coach的部分
<ArrayOfTrainCoaches>
<Train>
<GeneralData>
<TrainNumber>123</TrainNumber>
</GeneralData>
<ArrayOfCoaches>
<Coach>
<CoachNumber>1</CoachNumber>
<CoachSeats>18</CoachSeats>
</Coach>
</ArrayOfCoaches>
</Train>
<Train>
<GeneralData>
<TrainNumber>123</TrainNumber>
</GeneralData>
<ArrayOfCoaches>
<Coach>
<CoachNumber>2</CoachNumber>
<CoachSeats>23</CoachSeats>
</Coach>
</ArrayOfCoaches>
</Train>
<Train>
<GeneralData>
<TrainNumber>123</TrainNumber>
</GeneralData>
<ArrayOfCoaches>
<Coach>
<CoachNumber>3</CoachNumber>
<CoachSeats>34</CoachSeats>
</Coach>
</ArrayOfCoaches>
</Train>
</ArrayOfTrainCoaches>
123
1.
18
123
2.
23
123
3.
34
我不清楚如何使用每个子结构来复制整个消息,除了一些子结构,我想将它们拆分为整个消息的专用副本
谢谢您的帮助。看起来像:
<ArrayOfTrainCoaches>
<xsl:for-each select="//Coach">
<Train>
<xsl:copy-of select="//GeneralData"/>
<ArrayOfCoaches>
<xsl:copy-of select="."/>
</ArrayOfCoaches>
</Train>
</xsl:for-each>
</ArrayOfTrainCoaches>
看
非常感谢您的支持!我也非常感谢你!我也会试试你的建议!
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Train">
<ArrayOfTrainCoaches>
<xsl:for-each select="ArrayOfCoaches/Coach">
<Train>
<xsl:copy-of select="ancestor::Train/GeneralData"/>
<ArrayOfCoaches>
<xsl:copy-of select="."/>
</ArrayOfCoaches>
</Train>
</xsl:for-each>
</ArrayOfTrainCoaches>
</xsl:template>
Look it