1

こんにちは私はこのような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ループまたは単純なコードを使用してすべてのブランチ要素を取得する他の方法はありますか。

4

2 に答える 2

1

上に貼り付けたものは、構文的に正しくないようです。冗談ですか :) ?

とにかく、マニュアルの紹介を読んでください....構造をTTスタッシュに渡した後、次のようにその要素にアクセスできます。

[% var1.STC.0.gym.hyd.com (AND SO ON) %]

深すぎる構造は避ける必要があります。

于 2011-10-28T07:55:00.870 に答える
1

FOREACH次のようなセクションに別のものが必要だと思います:

[%+ university.name +%]
[%+ university.location +%]
[% FOREACH section = university.branch.electronics.section %]
    branch student: [%+ section.name +%]
    [%+ section.number +%]
    [% FOREACH sem = section.sem %]
        [%+ sem.semister +%]
        [%+ sem.subjects +%]
        [%+ sem.rank +%]
    [% END %]
[% END %]

カスタム filterカスタム vmethod、またはプラグインを追加して、LaTeX で使用するためにすべての文字列が適切にエスケープされるようにすることをお勧めします。改行がどのように扱われるかを気にしない場合は、 を使用します[% ... %]。この[%+ ... +%]バージョンでは、先頭と末尾の空白が保持されます。

于 2011-10-28T17:16:58.793 に答える