2016-03-26 16 views
-1

以下のmy xml paternサンプルが表示されます。すべてのマヌエルタグがあり、タグがサブチャプタチェックリストタグを有することができます。静的な深さはありませんが、文書を文書に変更する可能性がありますので、動的再帰的なxsltコードを記述してHTMLを生成することはできませんでした。誰もが知っている、どのように私はこれを達成することができます。動的ツリーのXSLT

<manuel name="Test"> 
    <chapter name="00"> 

     <subchapter name="00.01"> 
     <checklist name="00.01.01"> 
      <summary>abc</summary> 
     </checklist> 
     </subchapter> 

     <subchapter name="00.02"> 
      <checklist name="00.02.01"> 
       <summary>def</summary> 
      </checklist> 
      <subchapter name="00.02.02"> 
       <checklist name="00.02.02.01"> 
        <summary>xyz</summary> 
       </checklist> 
      </subchapter> 
     </subchapter> 

     <checklist name="00.03"> 
      <summary>ZZZZ</summary> 
     </checklist> 
    </chapter> 
    </manuel> 

このサンプルでは、​​この結果が推測されます。私は今、重要ではないCSSスタイルを設定することができます。問題は構造を生成することです。

<div class="cssChapter"> 00</div> 
<div class="cssSubChapter"> 00.01 </div> 
<div class="cssCheckList"> 00.01.01 </div> 
<div class="cssSummary"> abc </div>  
<div class="cssSubChapter"> 00.02 </div> 
<div class="cssCheckList"> 00.02.01 </div> 
<div class="cssSummary"> def </div>  
<div class="cssSubChapter"> 00.02.02 </div> 
<div class="cssCheckList"> 00.02.02.01 </div> 
<div class="cssSummary"> xyz </div>  
<div class="cssCheckList"> 00.03 </div>  
<div class="cssSummary"> ZZZZ</div>  
+2

あなたの出力はどのように見えますか?これまでに何を試しましたか? –

+0

私は仮定した結果を追加しましたが、重要な点はgenereting構造です。 – Erkan

+0

@ KimHomannさんの質問に再度お答えします。これはtext/csv/xml/html/otherの出力ですか? – Parfait

答えて

0

シンプルな適用、テンプレートを使用してください:http://xsltransform.net/3NJ3915/1

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

<xsl:output method="html" indent="yes"/> 

<xsl:template match="manuel"> 
    <xsl:apply-templates select=".//*"/> 
</xsl:template> 

<xsl:template match="chapter"> 
    <div class="cssChapter"> 
     <xsl:value-of select="@name"/> 
    </div> 
</xsl:template> 

<xsl:template match="subchapter"> 
    <div class="cssSubChapter"> 
     <xsl:value-of select="@name"/> 
    </div> 
</xsl:template> 

<xsl:template match="checklist"> 
    <div class="cssChecklist"> 
     <xsl:value-of select="@name"/> 
    </div> 
</xsl:template> 

<xsl:template match="summary"> 
    <div class="cssSummary"> 
     <xsl:value-of select="."/> 
    </div> 
</xsl:template> 

</xsl:transform> 

オンライン。

+0

このコードはうまくいきますが、私はすべての要約タグの内容をcopy-ofで取得する必要があります。私は要約タグの内容に達することができません。 この定義をどのように変更すればよいですか?私はサマリータグを出力することを忘れました。私は今追加しました。 – Erkan

+0

コードサンプルを編集しました。すべての子孫要素を './/* 'で処理するだけで、スタイルシートには' summary'要素のテンプレートがあります。 –

関連する問題