Re: Accessing declared value of attribute in Jade

Subject: Re: Accessing declared value of attribute in Jade
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxx>
Date: Mon, 06 Oct 1997 17:48:21 -0400
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.

..................... Ken

F:\FTEMP>type test.dsl
<!doctype style-sheet PUBLIC "-//James Clark//DTD DSSSL Style
Sheet//EN">

(define debug
  (external-procedure "UNREGISTERED::James Clark//Procedure::debug"))

(element test
    (process-children))

(default
  (let* ((node (current-node))
         (attlist (attributes node))
         (report1 (debug (gi node)))
         (report2
(debug
    (string-append
        "Attr '"
        (node-property 'name attlist)           ;name in attribute node
        "' is "
        (let ((attr-val-nl (node-property 'value
                                          attlist
                                          default: (empty-node-list))))
            (if (node-list-empty? attr-val-nl)  ;there is no value
                "**not specified**"             ;so say so
                (string-append
                    (node-property 'token attr-val-nl)
                    " ("
                    (let ((attr-val-ent
                                (node-property 'entity
                                               attr-val-nl
                                               default: (empty-node-list))))
                        (if (node-list-empty? attr-val-ent)
                            "**not an entity**"
                            "ENTITY"))
                    ")")
            )))))

         )

    (empty-sosofo)))

F:\FTEMP>type test.sgm
<!DOCTYPE test [
<!ELEMENT test o o (graphic|junque)+>
<!ELEMENT graphic - o EMPTY>
<!ATTLIST graphic
          name ENTITY #implied
>
<!ELEMENT junque - o EMPTY>
<!ATTLIST junque
          name NAME #implied>
<!NOTATION tiff SYSTEM "tiff">
<!ENTITY foo SYSTEM "foo.tif" NDATA tiff>
]>
<junque name=hello>
<graphic>
<graphic name=foo>

F:\FTEMP>jade -c %jadedir%catalog -d test.dsl -t rtf test.sgm
C:\PROGRA~1\JADE\CURRENT\JADE.EXE:test.dsl:13:18:I: debug ""JUNQUE""
C:\PROGRA~1\JADE\CURRENT\JADE.EXE:test.dsl:15:0:I: debug ""Attr 'NAME' is
HELLO (**not an entity**)""
C:\PROGRA~1\JADE\CURRENT\JADE.EXE:test.dsl:13:18:I: debug ""GRAPHIC""
C:\PROGRA~1\JADE\CURRENT\JADE.EXE:test.dsl:15:0:I: debug ""Attr 'NAME' is
**not specified**""
C:\PROGRA~1\JADE\CURRENT\JADE.EXE:test.dsl:13:18:I: debug ""GRAPHIC""
C:\PROGRA~1\JADE\CURRENT\JADE.EXE:test.dsl:15:0:I: debug ""Attr 'NAME' is
foo (ENTITY)""

F:\FTEMP>


--
G. Ken Holman            mailto:gkholman@xxxxxxxxxxxxxx
Crane Softwrights Ltd.  http://www.CraneSoftwrights.com
1605 Mardick Court, Box 266,         V: +1(613)489-0999
Kars, Ontario CANADA K0A-2E0         F: +1(613)489-0995
PGP Privacy: http://www.cyberus.ca/~holman/gkholman.pgp

 DSSSList info and archive:  http://www.mulberrytech.com/dsssl/dssslist


Current Thread