|
Subject: Re: Accessing declared value of attribute in Jade From: Daniel Speck <dspeck@xxxxxxxxxxxx> Date: Tue, 07 Oct 1997 15:42:48 -0400 |
G. Ken Holman wrote:
>
> At 16:41 97/10/06 -0400, Daniel Speck wrote:
> >I don't know how to access the attribute value token node. Can someone
> >give me a pointer?
>
> I modified your data to add a test for the attribute not being present, and
> an attribute of the same name but not being of type ENTITY.
>
> I then used the node-property function in order to determine that an
> attribute was of type ENTITY. Note that this code fragment assumes only a
> single attribute and is not general enough to process all attributes or all
> kinds of attributes ... but it should be enough for you to add the
> detection of ENTITY to your own program.
>
> Note how one must prepare for the access of a nodal property that does not
> exist.
>
> I hope this helps.
Thanks Ken, this really helped (especially the bit about accessing a
nodal property that might not exist). The DSSSL standard is a bit light
on examples so I often find myself thrashing about trying to find the
missing piece of the latest puzzle I am working on.
Here is the code that I finally came up with based on your example:
; (attribute-is-entity attnode)
;
; attnode is an attribute node (a node of class ATTASGN)
;
; (attribute-is-entity) returns the value of the ENTITY property if
non-empty,
; otherwise returns #f.
;
(define (attribute-is-entity attnode)
(let ((attval (node-property "value" attnode
default: (empty-node-list))))
(if (node-list-empty? attval)
#f
(let ((attentity (node-property "entity" (node-list-first attval)
default: (empty-node-list))))
(if (node-list-empty? attentity)
#f
attentity)))))
; (generate-data-entity-declaration entity-node)
;
; entity-node is a singleton node-list containing a node of class ENTITY
;
; (generate-data-entity-declaration) returns a string containing an SGML
; ENTITY declaration for the given entity.
(define (generate-data-entity-declaration entity-node)
(let* ((entity-name (node-property "name" entity-node))
(entity-extid (node-property "external-id" entity-node))
(entity-sysid (node-property "system-id" entity-extid default: #f))
(entity-pubid (node-property "public-id" entity-extid default: #f))
(entity-notation (node-property "notation" entity-node))
(entity-notation-name (node-property 'name entity-notation))
)
(string-append
"<!ENTITY "
entity-name
(if entity-pubid
(string-append " PUBLIC \"" entity-pubid "\"")
"")
(if entity-sysid
(string-append " SYSTEM \"" entity-sysid "\"")
"")
" NDATA " entity-notation-name
">&#RE;")))
-dan
--
Daniel Speck e-mail: dspeck@xxxxxxxxxxxx
Research Engineer voice: +1 301.548.7818
Thomson Technology Services Group fax: +1 301.527.4094
1375 Piccard Drive, Rockville, MD 20850 WWW: www.thomtech.com
DSSSList info and archive: http://www.mulberrytech.com/dsssl/dssslist
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: Accessing declared value of att, G. Ken Holman | Thread | Re: Accessing declared value of att, Tony Graham |
| Re: Accessing declared value of att, James Clark | Date | Re: Accessing declared value of att, Tony Graham |
| Month |