|
Subject: Re: Issues with literate programming DSSSL Script2 From: MARK.WROTH@xxxxxxxxxxx (Wroth, Mark) Date: Mon, 20 Dec 1999 08:11:48 -0800 |
In response to my question,
MBW> First: is there any way to couple some reasonable SGML and DSSSL to
produce
MBW> a literal "<" in the output SGML entity? Jade appears to want to
"quote"
David Carlisle <davidc@xxxxxxxxx> suggested
DC> (make formatting-instruction
DC> data: "<"
and I asked
MBW>The difficulty I have with this is that I don't see how to invoke it.
How do
MBW>I get DSSSL to apply this code when it encounters the relevant
MBW>character/entity? Or is the only answer to define an element <lt> which
can
MBW>then get a processing rule of its own?
and David replied
DC>Well the way I used this is just to use (make formatting-instruction
DC>for writing out _any_ strings in which you don't want < & and friends to
DC>be escaped. (The bit I posted was cut out of some code writing entity
DC>declarations for dtd fragments).
Hmmm. I'm still not sure I understand what you're getting at. I did,
however, come up with a "solution" that uses the formatting-instruction. I
define an element <literal> with one required attribute, which is the
literal data. I then use an element rule like:
(element literal
(make formatting-instruction
data: (attribute-string "data")))
This allows me to insert <literal data="<"> in the document (or, more
pragmatically, define an entity which does so). I still don't see a way to
do this without defining an element in the DTD, but this works acceptably.
I then asked
MBW>On a related note: what's wrong with this selector?
MBW>
MBW>(with-mode continuation
MBW> (process-node-list
MBW> (select-elements (descendants (document-element (current-node)))
MBW> '(scrap (continues attribute-string "id")))))
To which Brandon Ibach <bibach@xxxxxxxxxxxxxx> replied
BI> Try this, instead:
BI> `(scrap (continues ,(attribute-string "id")))
BI> The problem here is that the single quote in your version quoted
BI>the *entire* expression, meaning that the "attribute-string" symbol
BI>and the "id" string got passed in as part of the pattern, rather than
BI>being evaluated and replaced with the value of the "ID" attribute.
BI>The backquote, above, introduces a "quasi-quote" expression, which is
BI>similar to a regular quoted expression, except that you can "unquote"
BI>certain parts of it, so that they will be evaluated. In this case,
BI>we're unquoting the (attribute-string) call, such that the final
BI>result of this would be a structure like:
BI> (scrap (continues "ABC"))
BI>if the current node was an element with an ID of ABC, that is. :)
This kind of makes sense (I *did* say that one of the purposes of this
exercise was to learn more about DSSSL, didn't I :-). Once I realized that
'(scrap (continues ,(attribute-string "id")))
is not the same as
`(scrap (continues ,(attribute-string "id")))
This did indeed solve my problem. With this in place, I think I have a
working "tangle". Many thanks.
DSSSList info and archive: http://www.mulberrytech.com/dsssl/dssslist
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: Placing sosofos at page coordin, Philippe CASIDY | Thread | Re: Issues with literate programmin, Russell Steven Shawn |
| RE: calling external functions, Pieter Rijken | Date | Repeated question on selection orde, Wroth, Mark |
| Month |