-1

以下は私の入力XMLです

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

上記の出力は

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

私がGoogleをやっていて、スタックオーバーフローのとき、人々はxsl:copy-ofを使用することを提案していましたが、xsl:copyを使用しているときは、各練習セッションでどのように注意を払うかを繰り返します。

誰かがここで私を助けることができますか?

前もって感謝します

Karthicよろしく

4

1 に答える 1

1

コピーの必要性はわかりません。これを試して ...

<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>
于 2012-07-20T07:51:00.910 に答える