1. from amara.xslt.processor import processor
  2. from amara.lib import inputsource
  3. p = processor()
  4. _source = '''<?xml version="1.0" encoding="utf-8"?>
  5. <ADDRBOOK>
  6. <ENTRY ID="pa">
  7. <NAME>Pieter Aaron</NAME>
  8. <ADDRESS>404 Error Way</ADDRESS>
  9. <PHONENUM DESC="Work">404-555-1234</PHONENUM>
  10. <PHONENUM DESC="Fax">404-555-4321</PHONENUM>
  11. <PHONENUM DESC="Pager">404-555-5555</PHONENUM>
  12. <EMAIL>[email protected]</EMAIL>
  13. </ENTRY>
  14. <ENTRY ID="en">
  15. <NAME>Emeka Ndubuisi</NAME>
  16. <ADDRESS>42 Spam Blvd</ADDRESS>
  17. <PHONENUM DESC="Work">767-555-7676</PHONENUM>
  18. <PHONENUM DESC="Fax">767-555-7642</PHONENUM>
  19. <PHONENUM DESC="Pager">800-SKY-PAGEx767676</PHONENUM>
  20. <EMAIL>[email protected]</EMAIL>
  21. </ENTRY>
  22. <ENTRY ID="vz">
  23. <NAME>Vasia Zhugenev</NAME>
  24. <ADDRESS>2000 Disaster Plaza</ADDRESS>
  25. <PHONENUM DESC="Work">000-987-6543</PHONENUM>
  26. <PHONENUM DESC="Cell">000-000-0000</PHONENUM>
  27. <EMAIL>[email protected]</EMAIL>
  28. </ENTRY>
  29. </ADDRBOOK>'''
  30. source = inputsource(_source)
  31. _trans = '''<?xml version="1.0"?>
  32. <xsl:stylesheet
  33. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  34. version="1.0"
  35. >
  36. <xsl:strip-space elements="*"/>
  37. <xsl:template match="/">
  38. <HTML>
  39. <HEAD><TITLE>Address Book</TITLE>
  40. </HEAD>
  41. <BODY>
  42. <H1><xsl:text>Tabulate just the Names</xsl:text></H1>
  43. <TABLE><xsl:apply-templates/></TABLE>
  44. </BODY>
  45. </HTML>
  46. </xsl:template>
  47. <xsl:template match="ADDRBOOK">
  48. <xsl:apply-templates/>
  49. </xsl:template>
  50. <xsl:template match="ENTRY">
  51. <TR>
  52. <xsl:apply-templates/>
  53. </TR>
  54. </xsl:template>
  55. <xsl:template match="NAME">
  56. <TD ALIGN="CENTER">
  57. <B>Co: <xsl:apply-templates/></B>
  58. </TD>
  59. </xsl:template>
  60. <xsl:template match="*"/>
  61. </xsl:stylesheet>'''
  62. trans = inputsource(_trans)
  63. p.append_transform(trans)
  64. print p.run(source)