Esta práctica es continuación de la práctica un lenguaje para componer invitaciones especificada en la sección 31.7.
El objetivo es traducir la entrada escrita en el lenguaje de invitaciones a HTML. La traducción del ejemplo anterior debería ser parecida a esta:
pl@nereida:~/Lpl0910/Practicas/161009/src$ cat -n invitation.xml 1 <?xml version="1.0"?> 2 <!DOCTYPE invitation SYSTEM "invitation.dtd"> 3 <invitation> 4 <!-- ++++ The header part of the document ++++ --> 5 <front> 6 <to>Anna, Bernard, Didier, Johanna</to> 7 <date>Next Friday Evening at 8 pm</date> 8 <where>The Web Cafe</where> 9 <why>My first XML baby</why> 10 </front> 11 <!-- +++++ The main part of the document +++++ --> 12 <body> 13 <par> 14 I would like to invite you all to celebrate 15 the birth of <emph>Invitation</emph>, my 16 first XML document child. 17 </par> 18 <par> 19 Please do your best to come and join me next Friday 20 evening. And, do not forget to bring your friends. 21 </par> 22 <par> 23 I <emph>really</emph> look forward to see you soon! 24 </par> 25 </body> 26 <!-- +++ The closing part of the document ++++ --> 27 <back> 28 <signature>Michel</signature> 29 </back> 30 </invitation> |
pl@nereida:~/Lpl0910/Practicas/161009/src$ cat invcss.html.save <HTML> <HEAD> <TITLE> Invitation (sgmlpl/CSS formatting) </TITLE> <LINK href="invit.css" rel="style-sheet" type="text/css"> <!-- 24 August 1998 mg --> </HEAD> <BODY> <H1>INVITATION</H1> <P><TABLE> <TBODY> <TR><TD class="front">To: </TD> <TD>Anna, Bernard, Didier, Johanna</TD></TR> <TR><TD class="front">When: </TD> <TD>Next Friday Evening at 8 pm</TD></TR> <TR><TD class="front">Venue: </TD> <TD>The Web Cafe</TD></TR> <TR><TD class="front">Occasion: </TD> <TD>My first XML baby</TD></TR> </TBODY> </TABLE> <P> I would like to invite you all to celebrate the birth of <EM>Invitation</EM>, my first XML document child. </P> <P> Please do your best to come and join me next Friday evening. And, do not forget to bring your friends. </P> <P> I <EM>really</EM> look forward to see you soon! </P> <P CLASS="signature">Michel</P> </BODY> </HTML> |
Su programa deberá producir un Abstract Syntax Tree.
Los nodos serán objetos. Cada clase (FRONT
, TO
, etc.)
deberá de disponer de un método translate
.
Para simplificar el proceso de traducción a HTML
se sugiere utilizar una
hoja de estilo parecida a la siguiente (tomada de la seción 7.4.4 del citado libro de Goosens):
pl@nereida:~/Lpl0910/Practicas/161009/src$ cat -n invit.css 1 /* CSS stylesheet for invitation1 in HTML */ 2 BODY {margin-top: 1em; /* global page parameters */ 3 margin-bottom: 1em; 4 margin-left: 1em; 5 margin-right: 1em; 6 font-family: serif; 7 line-height: 1.1; 8 color: black; 9 } 10 H1 {text-align: center; /* for global title */ 11 font-size: x-large; 12 } 13 P {text-align: justify; /* paragraphs in body */ 14 margin-top: 1em; 15 } 16 TABLE { border-width: 0pt } 17 TBODY { border-width: 0pt } 18 TD[class="front"] { /* table data in front matter */ 19 text-align: left; 20 font-weight: bold; 21 } 22 TD.front { /* table data in front matter */ 23 text-align: left; 24 font-weight: bold; 25 } 26 EM {font-style: italic; /* emphasis in body */ 27 } 28 P.signature { /* signature */ 29 text-align: right; 30 font-weight: bold; 31 }
Véase también:
Casiano Rodríguez León