diff options
Diffstat (limited to 'tex/context/base/xtag-ini.tex')
| -rw-r--r-- | tex/context/base/xtag-ini.tex | 59 | 
1 files changed, 24 insertions, 35 deletions
| diff --git a/tex/context/base/xtag-ini.tex b/tex/context/base/xtag-ini.tex index e3db7939e..b768731b7 100644 --- a/tex/context/base/xtag-ini.tex +++ b/tex/context/base/xtag-ini.tex @@ -11,6 +11,8 @@  %C therefore copyrighted by \PRAGMA. See mreadme.pdf for  %C details. +% todo: XMLfullsave == also attributes  +  % csnames   \beginTEX @@ -364,32 +366,10 @@  \long\def\xparseXMLprocess ?#1 #2>{\parseXMLprocess{#1}{#2}}  \long\def\xparseXMLelement     #1>{\parseXMLelement #1 >} -% this kind of optimizations are only faster in a more  -% extensive if tree combined with equally spread occurance of  -% #1 (also tested for arguments) -% -% \long\def\doXMLelement#1% -%   {\csname<\if#1!!\else\if#1??\else.\fi\fi>\endcsname#1} -% -% \long\setvalue{<!>}!#1 {\parseXMLescape{#1}} -% \long\setvalue{<?>}?#1 {\parseXMLprocess{#1}} -% \long\setvalue{<.>}#1>{\parseXMLelement#1 >} -  %D The escape handler takes care of the fuzzy \type {<!}   %D constructs. Unfortunately, we need to catch \type {<--text}   %D too, so we need another handler:  -% \long\def\xparseXMLescape !#1#2% -%   {\if#1-% -%      \if#2-% -%        \expandafter\expandafter\expandafter\xxparseXMLescape -%      \else -%        \expandafter\expandafter\expandafter\xyparseXMLescape -%      \fi -%    \else -%      \expandafter\xyparseXMLescape -%    \fi#1#2} -  \long\def\xparseXMLescape !#1#2%    {\if#1-%       \if#2-% @@ -405,7 +385,6 @@       \fi     \fi#1#2} -  \long\def\xxparseXMLescape--#1{\parseXMLescape{--}#1}  \long\def\xyparseXMLescape#1  {\parseXMLescape{#1}}  \long\def\xzparseXMLescape[#1[{\parseXMLescape{#1}} @@ -421,10 +400,6 @@  \def\parseXMLescape#1% #2> parsing takes place in macros     {\executeifdefined{\@@XMLescape:#1}{\csname\@@XMLescape:\s!default\endcsname}} -\let\normalparseXMLescape \parseXMLescape -\let\normalparseXMLelement\parseXMLelement -\let\normalparseXMLprocess\parseXMLprocess -  %D In our case, processing instructions are only needed if  %D we want specific \CONTEXT\ support. This may be useful in  %D applications where the data is generated by an @@ -464,6 +439,12 @@          \noexpand\gobbleoneargument          {\expandafter\noexpand\currentXMLprocess}}} +%D One never knows:  + +\let\normalparseXMLescape \parseXMLescape +\let\normalparseXMLelement\parseXMLelement +\let\normalparseXMLprocess\parseXMLprocess +  %D Next we will implement the normal element handler. This  %D piece of code is complicated by the fact that we need to  %D handle namespaces. @@ -1199,19 +1180,27 @@  \newtoks\globalscratchtoks -\def\expandXMLvalue#1% -  {\ifcsname#1\endcsname +\def\doexpandXMLvalue#1#2% +  {\ifcsname#2\endcsname       \bgroup -\enableXMLexpansion +     \enableXMLexpansion       \let\getXMLentity\expandedXMLentity -     \expanded{\global\globalscratchtoks{\csname#1\endcsname}}% +     #1% simplify maps entities back to _ and alike  +     \expanded{\global\globalscratchtoks{\csname#2\endcsname}}%       \egroup -     \@EA\edef\csname#1\endcsname{\the\globalscratchtoks}% +     \@EA\edef\csname#2\endcsname{\the\globalscratchtoks}%     \fi} -\def\expandTEXpar    #1#2{\expandXMLvalue{#1\interfaced{#2}}} -\def\expandXMLpar    #1#2{\expandXMLvalue{\@@XMLvariable:#1:#2}} -\def\expandXMLarguments#1{\expandXMLvalue{\@@XMLmap:#1}} +\def\expandXMLvalue  {\doexpandXMLvalue\relax} +\def\simplifyXMLvalue{\doexpandXMLvalue\XMLsimpleentitiestrue} + +\def\expandTEXpar      #1#2{\expandXMLvalue{#1\interfaced{#2}}} +\def\expandXMLpar      #1#2{\expandXMLvalue{\@@XMLvariable:#1:#2}} +\def\expandXMLarguments  #1{\expandXMLvalue{\@@XMLmap:#1}} + +\def\simplifyTEXpar    #1#2{\simplifyXMLvalue{#1\interfaced{#2}}} +\def\simplifyXMLpar    #1#2{\simplifyXMLvalue{\@@XMLvariable:#1:#2}} +\def\simplifyXMLarguments#1{\simplifyXMLvalue{\@@XMLmap:#1}}  %D \startbuffer[tex]  %D \defineXMLsingular [fx:root] | 
