Annotation of doc/homework/xml.html, revision 1.2

1.1       albertel    1: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                      2: <html>
                      3:   <head>
                      4:     <title>XML / Style Files</title>
                      5:   </head>
                      6: 
                      7:   <body>
                      8:     <h1>XML / Style Files</h1>
                      9: 
                     10:     <h2>XML Files</h2>
                     11:     <p>
                     12:       All HTML / XML files are run through the lonxml handler before
                     13:       being served to a user. This allows us to rewrite many portion
                     14:       of a document and to support serverside tags. There are 2 ways
                     15:       to add new tags to the xml parsing engine, either through
                     16:       LON-CAPA style files or by writing Perl tag handlers for the
                     17:       desired tags.
                     18:     </p>
                     19:     
                     20:     <h3>Global Variables</h3>
                     21:     <ul>
                     22:       <li>
1.2     ! albertel   23: 	<i>$Apache::lonxml::debug</i> - debugging control
1.1       albertel   24:       </li>
                     25:       <li>
1.2     ! albertel   26: 	<i>@Apache::lonxml::pwd</i> - path to the directory containing the file currently being processed 
1.1       albertel   27:       </li>
                     28:       <li>
1.2     ! albertel   29: 	<i>@Apache::lonxml::outputstack</i> <br />
        !            30: 	<i>$Apache::lonxml::redirection</i> - these two are used for
        !            31: 	capturing a subset of the output for later processing, don't
        !            32: 	touch them directly use &startredirection and &endredirection
1.1       albertel   33:       </li>
                     34:       <li>
1.2     ! albertel   35: 	<i>$Apache::lonxml::import</i> - controls whether the
        !            36: 	&lt;import&gt; tag actually does anything
1.1       albertel   37:       </li>
                     38:       <li>
1.2     ! albertel   39: 	<i>@Apache::lonxml::extlinks</i> -
1.1       albertel   40:       </li>
                     41:       <li>
1.2     ! albertel   42: 	<i>#Apache::lonxml::metamode</i> - some output is turned off,
        !            43: 	the meta target wants a specific subset, use &lt;output&gt; to
        !            44: 	guarentee that the catianed data will be in the parsing output
1.1       albertel   45:       </li>
                     46:       <li>
1.2     ! albertel   47: 	<i>#Apache::lonxml::evaluate</i> - controls whether
        !            48: 	run::evaluate actually derefences variable references
1.1       albertel   49:       </li>
                     50:       <li>
1.2     ! albertel   51: 	<i>%Apache::lonxml::insertlist</i> - data structure for edit
        !            52: 	mode, determines what tags can go into what other tags
1.1       albertel   53:       </li>
                     54:       <li>
1.2     ! albertel   55: 	<i>@Apache::lonxml::namespace</i> - stores the list of tag
        !            56: 	namespaces used in the insertlist.tab file that are currently
        !            57: 	active, used only in edit mode.
1.1       albertel   58:       </li>
                     59:     </ul>
                     60: 	
                     61:     <h3>Notable Perl subroutines</h3>
                     62:     <p>
                     63:       If not specified these functions are in Apache::lonxml
                     64:     </p>
                     65:     <ul>
                     66:       <li>
                     67: 	<i>xmlparse</i> - see the XMLPARSE figure
                     68:       </li>
                     69:       <li>
                     70: 	<i>recurse</i> - acts just like <i>xmlparse</i>, except it
                     71: 	doesn't do the style definition check it always calls
                     72: 	<i>callsub</i>
                     73:       </li>
                     74:       <li>
                     75: 	<i>callsub</i> - callsub looks if a perl subroutine is defined
                     76: 	for the current tag and calls. Otherwise it just returns the
                     77: 	tag as it was read in. It also will throw on a default editing
                     78: 	interface unless the tag has a defined subroutine that either
                     79: 	returns something or requests that call sub not add the
                     80: 	editing interface.
                     81:       </li>
                     82:       <li>
                     83: 	<i>afterburn</i> - called on the output of xmlparse, it can
                     84: 	add highlights, anchors, and links to regular expersion
                     85: 	matches to the output.
                     86:       </li>
                     87:       <li>
                     88: 	<i>register_insert</i> - builds the
                     89: 	%Apache::lonxml::insertlist structure of what tags can have
                     90: 	what other tags inside.
                     91:       </li>
                     92:     </ul>
                     93:     <h3>Functions Tag Handlers can use</h3>
                     94:     <p>
                     95:       If not specified these functions are in Apache::lonxml
                     96:     </p>
                     97:     <ul>
                     98:       <li>
                     99: 	<i>debug</i> - a function to call to printout debugging
                    100: 	messages. Will only print when Apache::lonxml::debug is set to
                    101: 	1
                    102:       </li>
                    103:       <li>
                    104: 	<i>warning</i> - a function to use for warning messages. The message
                    105: 	will appear at the top of a resource when it is viewed in
                    106: 	construction space only.
                    107:       </li>
                    108:       <li>
                    109: 	<i>error</i> - a function to use for error messages. The
                    110: 	message will appear at the top of a resource when it is viewed
                    111: 	in construction space, and will message the resource author
                    112: 	and course instructor, while informing the student that an
                    113: 	error has occured otherwise.
                    114:       </li>
                    115:       <li>
                    116: 	<i>get_all_text</i> - 2 args, tag to look for (need to use
                    117: 	/tag to look for an end tag) and a HTML::TokeParser reference,
                    118: 	it will repedelyt get text from the TokeParser until the
                    119: 	requested tag is found. It will return all of the document it
                    120: 	pulled form the TokeParser. (See
                    121: 	Apache::scripttag::start_script for an example of usage.)
                    122:       </li>
                    123:       <li>
                    124: 	<i>get_param</i> - 4 arguments, firsth is a scaler sting of
                    125: 	the argument needed, second is a reference to the parser
                    126: 	arguments stack, third is a reference to the Safe space, and
                    127: 	fourth is an optional "context" value. This subroutine allows
                    128: 	a tag to get a tag argument, after being interpolated inside
                    129: 	the Safe space. This should be used if the tag might use a
                    130: 	safe space variable reference for the tag argument. (See
                    131: 	Apaceh::scripttag::start_script for an example.)
                    132:       </li>
                    133:       <li>
                    134: 	<i>newparser</i> - 3 args, first is a reference to the parser
                    135: 	stack, second should be a reference to a string scaler
                    136: 	containg the text the newparser should run over, third should
                    137: 	be a scaler of the directory path the file the parser is
                    138: 	parsing was in. (See Apache::scripttag::start_import for an
                    139: 	example.)
                    140:       </li>
                    141:       <li>
                    142: 	<i>register</i> - should be called in a file's BEGIN block. 2
                    143: 	arguments, a scaler string, and a list of strings. This allows
                    144: 	a file to register what tags it handles, and what the
                    145: 	namespace of those tags are. Example:
                    146: <pre>
                    147: sub BEGIN {
                    148:   &Apache::lonxml::register('Apache::scripttag',('script','display'));
                    149: }
                    150: </pre>
                    151: 	Would tell xmlparse that in Apache::scripttag it can find
                    152: 	handlers for &lt;script&gt; and &lt;display&gt;
                    153:       </li>
                    154:       <li>
                    155: 	<i>startredirection</i> - used when a tag wants to save a
                    156: 	portion of the document for its end tag to use, but wants the
                    157: 	intervening document to be normally processed. (See
                    158: 	Apache::scripttag::start_window for an example.)
                    159:       </li>
                    160:       <li>
                    161: 	<i>endredirection</i> - used to stop preventing xmlparse from
                    162: 	hiding output. The return value is everthing that xmlparse has
                    163: 	processed since the corresponding startredirection. (See
                    164: 	Apache::scripttag::end_window for an example.)
                    165:       </li>
                    166:       <li>
                    167: 	<i>Apache::run::evaluate</i> - 3 args, first a string, second
                    168: 	a reference to the Safe space, 3 a string to be evaluated
                    169: 	before the first arg. This subroutine will do variable
                    170: 	interpolation and simple function interpolations on the first
                    171: 	argument. (See Apache::lonxml::xmlparse for an example.)
                    172:       </li>
                    173:       <li>
                    174: 	<i>Apache::run::run</i> - 2 args, first a string, second a
                    175: 	reference to the Safe space. This handles passing the passed
                    176: 	string into the Safe space for evaluation and then returns the
                    177: 	result. (See Apache::scripttag::start_script for an example.)
                    178:       </li>
                    179:     </ul>
                    180: 
                    181:     <h2>Style Files</h2>
                    182:     <h3>Style File specific tags</h3>
                    183:     <ul>
                    184:       <li>
1.2     ! albertel  185: 	<b>&lt;definetag&gt;</b> - 2 arguments, <i>name</i> name of
        !           186: 	new tag being defined, if proceeded with a / defining an end
        !           187: 	tag, required; <i>parms</i> parameters of the new tag, the
        !           188: 	value of these parameters can be accesed by $parametername.
1.1       albertel  189:       </li>
                    190:       <li>
1.2     ! albertel  191: 	<b>&lt;render&gt;</b> - define what the new tag does for a non meta target
1.1       albertel  192:       </li>
                    193:       <li>
1.2     ! albertel  194: 	<b>&lt;meta&gt;</b> - define what the new tag does for a meta target
1.1       albertel  195:       </li>
                    196:       <li>
1.2     ! albertel  197: 	<b>&lt;tex&gt; / &lt;web&gt; / &lt;latexsource&gt;</b> -
        !           198: 	define what a new tag does for a specific no meta target, all
        !           199: 	data inside a &lt;render&gt; is render to all targets except
        !           200: 	when surrounded by a specific target tags.
1.1       albertel  201:       </li>
                    202:     </ul>
                    203:     <hr>
                    204:     <address><a href="mailto:albertel@marvin.lite.msu.edu">Guy Albertelli</a></address>
                    205: <!-- Created: Sun May 20 15:47:08 EDT 2001 -->
                    206: <!-- hhmts start -->
1.2     ! albertel  207: Last modified: Mon May 21 11:21:05 EDT 2001
1.1       albertel  208: <!-- hhmts end -->
                    209:   </body>
                    210: </html>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.