0

「folio」というタグがネストされた XML データ ドキュメントがあります。このようなネストされたタグが可能な最大レベルは 4 です。ネストされた Folio がなくなるレベルに到達するまで、各 Folio を再帰的に処理し、コンテンツを印刷する必要があります。

XSL で再帰を行う方法がわかりません。これがサンプルドキュメントです。誰か助けてくれませんか?

ありがとう。

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
    <reporting:root xmlns:reporting="http://www.xyzcorp.net/reporting">
      <reporting:default0 reporting:type="Portfolio">
        <reporting:header>
          <reporting:configuration>
        <reporting:columns>
          <reporting:column reporting:group="instrument" reporting:name="Ident" reporting:tag="ident" reporting:type="int"/>
          <reporting:column reporting:group="prices" reporting:name="Last (Time)" reporting:tag="lastTime" reporting:type="string"/>
          <reporting:column reporting:group="noGroup" reporting:name="RIC" reporting:tag="ric" reporting:type="string"/>
          <reporting:column reporting:group="instrument" reporting:name="Reference" reporting:tag="reference" reporting:type="string"/>
          <reporting:column reporting:group="result" reporting:name="Currency" reporting:tag="currency" reporting:type="string"/>
        </reporting:columns>
      </reporting:configuration>
    </reporting:header>
    <reporting:window reporting:Id="36674" reporting:level="0" reporting:name="MY_PORTFOLIO" reporting:parentId="11991">
      <reporting:folio>
        <reporting:folioid>1234</reporting:folioid>
        <reporting:folio>
          <reporting:folioid>9876</reporting:folioid>
          <reporting:line reporting:Id="67520135" reporting:level="1" reporting:name="INTERNATIONAL BUSINESS MACHINES CORP" reporting:parentId="36674" reporting:positionType="0">
            <reporting:ident>643633</reporting:ident>
            <reporting:reference>IBM.USD</reporting:reference>
            <reporting:currency>USD</reporting:currency>
          </reporting:line>
          <reporting:line reporting:Id="67520179" reporting:level="1" reporting:name="GENERAL ELECTRIC CO" reporting:parentId="36674" reporting:positionType="0">
            <reporting:ident>643635</reporting:ident>
            <reporting:ric>GE.N</reporting:ric>
            <reporting:reference>GE.USD</reporting:reference>
            <reporting:currency>USD</reporting:currency>
          </reporting:line>
        </reporting:folio>
      </reporting:folio>
    </reporting:window>
  </reporting:default0>
</reporting:root>
4

1 に答える 1

5

XSLT での処理の通常のデフォルト モードは、何かを実行し、その子を処理するために apply-templates を呼び出す各要素のテンプレート ルールを記述することです。

<xsl:template match="folio">
  <do something>
    <xsl:apply-templates/>
  </do something>
</xsl:template>

これは当然再帰的です。要素を処理するときはいつでも、その子孫に対して処理を呼び出します。

したがって、XSLT で再帰を行う方法を実際に学ぶ必要はありません。あなたはほとんどそれをしない方法を学ぶ必要があります.

于 2012-05-22T19:04:17.667 に答える