Commit | Line | Data |
---|---|---|
bfae91cc A |
1 | import os |
2 | import readline | |
3 | import sys | |
4 | import xml.etree.ElementTree as ET | |
5 | ||
6 | fname = sys.argv[1] | |
7 | tree = ET.Element('mal') | |
8 | ET.SubElement(tree, 'stdin') | |
9 | tree = ET.ElementTree(tree) | |
10 | ||
11 | try: | |
12 | readline.read_history_file('.xslt_mal_history') | |
13 | except: | |
14 | pass | |
15 | ||
16 | while True: | |
17 | try: | |
18 | x = input('user> ') | |
19 | except EOFError: | |
20 | break | |
21 | except KeyboardInterrupt: | |
22 | break | |
23 | ||
24 | for a in tree.iter('mal'): | |
25 | for a in a.iter('stdin'): | |
26 | a.text = x | |
27 | ||
28 | tree.write('xslt_input.xml') | |
29 | if os.system(f'saxon -xsl:"{fname}" -s:xslt_input.xml > xslt_output.xml 2> xsl_error.xml'): | |
30 | with open('xsl_error.xml', 'r') as f: | |
31 | print(f.readlines()[0]) | |
32 | continue | |
33 | tree = ET.parse('xslt_output.xml') | |
34 | stdout = '' | |
35 | for a in tree.iter('mal'): | |
36 | for a in a.iter('stdout'): | |
37 | stdout = a | |
38 | print(stdout.text) | |
39 | stdout.clear() | |
40 | del stdout | |
41 | ||
42 | readline.write_history_file('.xslt_mal_history') |