blob: 9bf9f89a9e5f90aaefb67a8c64d6f1678a35f37c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
%D \module
%D [ file=xtag-ext,
%D version=2001.03.21,
%D title=\CONTEXT\ XML Support,
%D subtitle=Extra Macros,
%D author=Hans Hagen,
%D date=\currentdate,
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
\beginTEX
\writestatus{xml}{sorry, xml is only supported in (pdf)etex}
\expandafter \endinput
\endTEX
\writestatus{loading}{Context XML Macros (extras)}
\unprotect
%D \macros
%D {startXMLnamespace}
%D
%D You can define macros within a namespace, so that they
%D will not conflict (don't confuse this with \XML\
%D namespaces.
%D
%D \starttypen
%D \startXMLnamespace [tag] | [-] [tag] | [+] [tag]
%D definitions
%D \stopXMLnamespace
%D \stoptypen
%D
%D When a \type {[+]} is specified, the namespaces will
%D nest.
\let\normal@@XMLelement\@@XMLelement
\let\XMLnamespace\empty
\def\startXMLnamespace%
{\dodoubleempty\dostartXMLnamespace}
\def\dostartXMLnamespace[#1][#2]%
{\pushmacro\@@XMLelement
\pushmacro\@@XMLnamespace
\ifsecondargument
\doifelse{#1}{-}
{\donostartXMLnamespace{#1}}
{\doifelse{#1}{+}
{\dodostartXMLnamespace{#1}{#2}}
{\donostartXMLnamespace{#1}}}%
\else
\donostartXMLnamespace{#1}%
\fi
\unprotect}
\def\donostartXMLnamespace#1%
{\edef\XMLnamespace{#1}%
\let\@@XMLelement\normal@@XMLelement}
\def\dodostartXMLnamespace#1#2%
{\edef\XMLnamespace{\XMLnamespace:#2}%
\edef\@@XMLelement{\@@XMLelement:#2}}
\def\stopXMLnamespace%
{\protect
\popmacro\@@XMLnamespace
\popmacro\@@XMLelement}
%D Context Directives:
\def\@@CTXML{@@CTXML}
\def\defineXMLdirective%
{\dodoubleempty\dodefineXMLdirective}
\def\dodefineXMLdirective[#1][#2]#3%
{\defineXMLprocessor[context-#1-directive]{\dohandleXMLdirective{#1}{#3}}%
\ifsecondargument
\setvalue{\@@CTXML-#1-#2}{#3}%
\fi}
\def\dohandleXMLdirective#1#2#3%
% {\dodohandleXMLdirective#3 dummy dummy dummy\end{#1}{#2}}
{\dodohandleXMLdirective#3 @ @ @\end{#1}{#2}}
\def\dodohandleXMLdirective#1 #2 #3 #4\end#5#6%
{\doifdefinedelse{\@@CTXML-#5-#1}
{\getvalue{\@@CTXML-#5-#1}[#2=#3]}
{#6[#2=#3]}}
% \defineXMLdirective [mathml] \setupMMLappearance % [#1][#2=#3]
% \defineXMLdirective [flowchart] [shapes] \setupFLOWshapes % [#2=#3]
% \defineXMLdirective [flowchart] [lines] \setupFLOWlines % [#2=#3]
\defineXMLprocessor [context-begin-group] {\begingroup\gobbleoneargument}
\defineXMLprocessor [context-end-group] {\endgroup \gobbleoneargument}
\protect \endinput
|