|
Subject: Re: copying of selected attributes From: Daniel Speck <dspeck@xxxxxxx> Date: Wed, 28 Apr 1999 09:33:59 -0400 |
Steffen,
If all you want to do is not copy certain attributes, you might try writing
a modified version of the (copy-attributes) function provided in the Jade
documentation under the SGML transform item. Here is a possible (untested)
version:
(define (copy-attributes #!optional (nd (current-node)) (excluded-attrnames
'()))
(let loop ((atts (named-node-list-names (attributes nd))))
(if (null? atts)
'()
(let* ((name (car atts))
(value (attribute-string name nd)))
(if (and value (not (member name excludded-attrnames)))
(cons (list name value)
(loop (cdr atts)))
(loop (cdr atts)))))))
You would then use this function as before but provide a list of names of
attributes you don't wish to include, e.g., (copy-attributes (current-node)
'("ID")).
-dan
Steffen Heinrich wrote:
> Hi,
>
> I'm doing some SGML transformation into HTML and have difficulties to
> accomplish selective attribute copying, even after I spent some time
> trying (yet not succeeding) to understand the (copy-attributes)
> function. (list, cons, car and cdr startet to loop in my brain.)
> Here is the problem:
> The source DTD defines a TABLE element with almost the same attlist
> like the target DTD (HTML). All attributes are implied and the
> sources additional ID-attribute (optional) has to be transformed
> into an <A>-element with respective NAME-attribute.
> So, all but the ID-attribute have to be copied to the target TABLE-
> element.
>
> Yet the following code produces errors on any lacking values, of
> course:
>
> (element TABLE
> (make element gi:"P"
> (if (attribute-string "ID")
> (make element gi:"A"
> attributes: (list (list "NAME" (attribute-string "ID")))
> (make element gi:"TABLE"
> attributes: (list
> (list "ALIGN" (attribute-string "ALIGN"))
> (list "WIDTH" (attribute-string "WIDTH"))
> (list "BORDER" (attribute-string "BORDER"))
> (list "CELLSPACING" (attribute-string "CELLSPACING"))
> (list "CELLPADDING" (attribute-string "CELLPADDING")))
> (process-children)))
> (make element gi:"TABLE"
> attributes: (list
> (list "ALIGN" (attribute-string "ALIGN"))
> (list "WIDTH" (attribute-string "WIDTH"))
> (list "BORDER" (attribute-string "BORDER"))
> (list "CELLSPACING" (attribute-string "CELLSPACING"))
> (list "CELLPADDING" (attribute-string "CELLPADDING")))
> (process-children)))))
>
> How can this be done properly, and maybe more economically?
>
> Thank you,
> steffen
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Steffen Heinrich, Peschkestr.14, D-12161 Berlin
> Tel (0)49-030- 851 86 53, heinrich@xxxxxxxxxxxx
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> DSSSList info and archive: http://www.mulberrytech.com/dsssl/dssslist
--
Daniel Speck
Bureau of National Affairs, Inc. Voice: +1 202.452.6596
1231 25th Street, NW Fax: +1 202.331.5178
Washington, DC 20037 e-mail: dspeck@xxxxxxx
DSSSList info and archive: http://www.mulberrytech.com/dsssl/dssslist
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: copying of selected attributes, Norman Walsh | Thread | RE: copying of selected attributes, Avi Kivity |
| Re: Jade Maintenance (Was: RE: Sort, Matthias Clasen | Date | RE: Jade Maintenance (Was: RE: Sort, Didier PH Martin |
| Month |