0
我是XSLT編程的新手,你們能幫我解決下面的問題嗎?多個孩子到父 - XSLT程序
這是個什麼
<File attrib1="100" attrib2="200">
<FileHeader attrib3="a" attrib4="5">
<item attrib5="34" attrib6="3">
<subitem1/>
<subitem2/>
</item>
<item attrib5="156" attrib6="170">
<subitem1/>
<subitem2/>
</item>
</FileHeader>
</File>
我想將它轉化爲
<File attrib1="100" attrib2="200">
<item attrib5="34" attrib6="3">
<subitem1/>
<subitem2/>
</item>
<item attrib5="156" attrib6="170">
<subitem1/>
<subitem2/>
</item>
<FileHeader attrib3="a" attrib4="5">
</FileHeader>
</File>
下面是我寫的代碼,這似乎是一項重複多個時間爲每個項目:
<xsl:template match="/">
<File>
<xsl:attribute name="attrib1">
<xsl:value-of select="File/@attrib1"/>
</xsl:attribute>
<xsl:attribute name="attrib2">
<xsl:value-of select="File/@attrib2"/>
</xsl:attribute>
<xsl:for-each select="File/FileHeader/item">
<xsl:copy-of select="//Item[@*]"/>
</xsl:for-each>
<FileHeader>
<xsl:attribute name="attrib3">
<xsl:value-of select="/File/FileHeader/@attrib3"/>
</xsl:attribute>
<xsl:attribute name="attrib4">
<xsl:value-of select="/File/FileHeader/@attrib4"/>
</xsl:attribute>
</FileHeader>
</File>
</xsl:template>
謝謝,我想通了,下面將工作正常。
<xsl:template match="/">
<File>
<xsl:attribute name="attrib1">
<xsl:value-of select="File/@attrib1"/>
</xsl:attribute>
<xsl:attribute name="attrib2">
<xsl:value-of select="File/@attrib2"/>
</xsl:attribute>
<xsl:copy-of select="//Item[@*]"/>
<FileHeader>
<xsl:attribute name="attrib3">
<xsl:value-of select="/File/FileHeader/@attrib3"/>
</xsl:attribute>
<xsl:attribute name="attrib4">
<xsl:value-of select="/File/FileHeader/@attrib4"/>
</xsl:attribute>
</FileHeader>
</File>
</xsl:template>
無論是輸入xml還是所需的輸出都是有效的'xml'。屬性需要一個值,例如'attrib1 = 「」'。請更新您的文章,以使您的'xml'有效。 – PhillyNJ
我想通了,而不是這 – user3637084