Xml 使用具有不同节点的xslt复制两个元素
下面是我的输入XMLXml 使用具有不同节点的xslt复制两个元素,xml,xslt,xslt-2.0,Xml,Xslt,Xslt 2.0,下面是我的输入XML <First> <practice-session note="yes"> <lessons>13000</lessons> <lessons>15000</lessons> <lessons>note</lessons> </practice-session> <practice-repeats note="yes">>
<First>
<practice-session note="yes">
<lessons>13000</lessons>
<lessons>15000</lessons>
<lessons>note</lessons>
</practice-session>
<practice-repeats note="yes">>
<repeat>20000</repeat>
<repeat>15000</repeat>
<repeat>description</repeat>
</practice-repeats>
</First>
13000
15000
笔记
>
20000
15000
描述
上面的输出是
<chapters>
<chapter>
<practice-session>
<value>13000</value>
</practice-session>
<practice-repeats>
<value>20000</value>
</practice-repeats>
</chapter>
<chapter>
<practice-session>
<lesson>15000</lesson>
</practice-session>
<practice-repeats>
<lesson>20000</lesson>
</practice-repeats>
</chapter>
<chapter>
<practice-session>
<lesson>NOTE CHG</lesson>
</practice-session>
<practice-repeats>
<lesson>ENG CHG</lesson>
</practice-repeats>
</chapter>
</chapters>
13000
20000
15000
20000
注释CHG
英昌
当我使用Google和in-stack overflow时,人们建议使用xsl:copy of,但当我使用xsl:copy时,我会注意到每个练习环节都会重复练习
有人能帮我吗
提前谢谢
问候
Karthic我认为没有必要复制。试试这个
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*" />
<xsl:template match="/">
<chapters>
<xsl:apply-templates select="First/practice-session/lessons"/>
</chapters>
</xsl:template>
<xsl:template match="lessons">
<chapter>
<practice-session>
<value><xsl:value-of select="." /></value>
</practice-session>
<practice-repeats>
<value><xsl:value-of select="
../following-sibling::practice-repeats[1]/
repeat[ count( current()/preceding-sibling::lessons) + 1]" /></value>
</practice-repeats>
</chapter>
</xsl:template>
</xsl:stylesheet>