我需要使用XSL模板转换以下XML结构输入。
<?xml version="1.0" encoding="Windows-1252" standalone="no"?>
<ECG>
<R000>4</R000>
<R001>
<A01>R1 A1 Data</A01>
<A02>R1 A2 Data</A02>
<A03>R2 A3 Data</A03>
</R001>
<R002>
<A01>R2 A1 Data</A01>
<A02>R2 A2 Data</A02>
<A03>R2 A3 Data</A03>
</R002>
<R003>
<A01>R3 A1 Data</A01>
<A02>R3 A2 Data</A02>
<A03>R3 A3 Data</A03>
</R003>
<R004>
<A01>R4 A1 Data</A01>
<A02>R4 A2 Data</A02>
<A03>R4 A3 Data</A03>
</R004>
</ECG>
标记R000
确定XML将包含多少RXXX
个寄存器。我们的想法是使用XSL将XML转换为以下输出。在这种情况下,我将其应用于四个R000
值。想法是在输入中使用随机数,因此它将处理n个寄存器。 A01
,A02
,A03
标记将始终存在。只有RXXX
数字是可变的。
<?xml version="1.0" encoding="Windows-1252" standalone="no"?>
<input>
<data>
<registry DATA1 = "R1 A1 Data" DATA2 = "R1 A2 Data" DATA3 = "R1 A3 Data"/>
<registry DATA1 = "R2 A1 Data" DATA2 = "R2 A2 Data" DATA3 = "R2 A3 Data"/>
<registry DATA1 = "R3 A1 Data" DATA2 = "R3 A2 Data" DATA3 = "R3 A3 Data"/>
<registry DATA1 = "R4 A1 Data" DATA2 = "R4 A2 Data" DATA3 = "R4 A3 Data"/>
</data>
</input>
我试过跟随xsl:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:element name="input" >
<xsl:element name="data" >
<xsl:element name="registry" >
<xsl:attribute name="DATA1">
<xsl:value-of select="ECG/R001/A01"/>
</xsl:attribute>
<xsl:attribute name="DATA2">
<xsl:value-of select="ECG/R001/A02"/>
</xsl:attribute>
<xsl:attribute name="DATA3">
<xsl:value-of select="ECG/R001/A03"/>
</xsl:attribute>
</xsl:element>
<xsl:element name="registry" >
<xsl:attribute name="DATA1">
<xsl:value-of select="ECG/R002/A01"/>
</xsl:attribute>
<xsl:attribute name="DATA2">
<xsl:value-of select="ECG/R002/A02"/>
</xsl:attribute>
<xsl:attribute name="DATA3">
<xsl:value-of select="ECG/R002/A03"/>
</xsl:attribute>
</xsl:element>
<xsl:element name="registry" >
<xsl:attribute name="DATA1">
<xsl:value-of select="ECG/R003/A01"/>
</xsl:attribute>
<xsl:attribute name="DATA2">
<xsl:value-of select="ECG/R003/A02"/>
</xsl:attribute>
<xsl:attribute name="DATA3">
<xsl:value-of select="ECG/R003/A03"/>
</xsl:attribute>
</xsl:element>
<xsl:element name="registry" >
<xsl:attribute name="DATA1">
<xsl:value-of select="ECG/R004/A01"/>
</xsl:attribute>
<xsl:attribute name="DATA2">
<xsl:value-of select="ECG/R004/A02"/>
</xsl:attribute>
<xsl:attribute name="DATA3">
<xsl:value-of select="ECG/R004/A03"/>
</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
我认为这不是最好的方法!因为标签的数量会有RXXX
个未知数。任何的想法?我已经考虑过循环周期,但似乎这里不可能。感谢