こんにちは私はこのようなxmlデータを持っています
<university>
<name>svu</name>
<location>ravru</location>
<branch>
<electronics>
<Section>
<student name="xxx" number="12">
<sem semister="1"subjects="7" rank="1"/>
<sem semister="2"subjects="4" rank="1"/>
<student>
<student name="xxx" number="15">
<sem semister="1"subjects="7" rank="10"/>
<sem semister="2"subjects="4" rank="1"/>
<student>
<student name="xxx" number="16">
<sem semister="1"subjects="7" rank="2"/>
<sem semister="2"subjects="4" rank="2"/>
<student>
</section>
</electronics>
</branch>
</university>
<university>
<name>sku</name>
<location>ANTP</location>
<branch>
<computers>
<Section>
<student name="xxx" number="12">
<sem semister="1"subjects="7" rank="no"/>
<sem semister="2"subjects="4" rank="no"/>
<student>
<student name="xxx" number="15">
<sem semister="1"subjects="7" rank="10"/>
<sem semister="2"subjects="4" rank="1"/>
<student>
<student name="xxx" number="16">
<sem semister="1"subjects="7" rank="20"/>
<sem semister="2"subjects="4" rank="21"/>
<student>
</section>
</electronics>
</branch>
</university>
XML :: Simpleを使用し、ハッシュ構造化データを生成して変数に格納しました。template :: toolkitを使用してpdffileを生成しました(pdflatexを使用)。myXML::simple出力は次のようになります。
$var1={
university=>{
'name'=>'svu',
'location'=>'ravru',
'branch'=>{
'electronics'=>{
'section'=>[
{
'name'=>'xxx',
'number'=>'12',
'sem'=>[
{
'semister'=>'1',
'subjects'=>'7',
'rank'=>'1'
},
{
'semister'=>'2',
'subjects'=>'4',
'rank'=>'1'
}
]
},
{
'name'=>'xxx',
'number'=>'15',
'sem'=>[
{
'semister'=>'1',
'subjects'=>'7',
'rank'=>'10'
},
{
'semister'=>'1',
'subjects'=>'7',
'rank'=>'1'
}
]
},
{
'name'=>'xxx',
'number'=>'16',
'sem'=>[
{
'semister'=>'1',
'subjects'=>'7',
'rank'=>'2'
},
{
'semister'=>'2',
'subjects'=>'4',
'rank'=>'2'
}
]
}
}
]
}
};
このように私は15の大学を持っており、2、3人の学生しかいないセクションもあります。10人の学生がいるセクションもあります。
my $template = Template->new();
my $filename = 'output.tex';
$template->process(\*DATA, $data, $filename)
|| die "Template process failed: ", $template->error(), "\n";
system( "pdflatex $filename" );
__DATA__
\documentclass[a4paper,leqno,twoside]{article}
\begin{document}
[% FOREACH st = university %]
[%+ st.name +%]
[%+ st.location +%]
[% FOREACH section = st.branch.electronics.section %]
branch student: [%+ section.name +%]
[%+ section.number +%]
[% FOREACH sem = section.sem %]
[%+ sem.semister +%]
[%+ sem.subjects +%]
[%+ sem.rank +%]
[% END %]
[% END %]
[% END %]
/end{document}
このように出力が出ますが、私の問題は長すぎることです。また、上記のセクションには2人の生徒がいて、一部のセクションには2人以上いると言いました。たとえば、最初のセクションには1人の学生が含まれ、2番目のセクションにはそのような10人の学生が含まれます。しかし、PDFの最初のセクションでも10人の生徒を印刷すると、最初の生徒だけが情報をすべて空のままにします。どうすればこの問題を解決できますか。私の問題を理解していない場合、私が書いたよりも短いコードを使用してデータを取得するにはどうすればよいですか?一部のセクションに60人の学生がいる場合、すべてのセクションで6oを出力するため、ブランチ要素のforループまたは単純なコードを使用してすべてのブランチ要素を取得する他の方法はありますか。