|
Subject: Re: (dsssl) siblings From: Brandon Ibach <bibach@xxxxxxxxxxxxxx> Date: Tue, 26 Feb 2002 14:54:57 -0600 |
Quoting Dave Pawson <DaveP@xxxxxxxxxxxxxxxxxxxxxxx>:
> Does the meaning of siblings in a grove equate with the definition
> in an xml document model?
>
> <doc>
> <sect1 id="sect1id">
> <head>This is a heading</head>
> <p>This is text</p>
> <p>This is <em>bold</em></p>
> <p>This is <strong>strong</strong></p>
> <sect2 id="sect2id" att2="sect2attrib">
> <head>Section 2 heading</head>
> <p>Another paragraph <anchor id="anchid">content</anchor></p>
> <sect3><head>Section 3 heading</head>
> <special id="spec">Content in section 3</special>
> </sect3>
> </sect2>
> </sect1>
> </doc>
>
> For element special:
> (literal "Siblings: " ( number->string (node-list-length (siblings))))
>
> shows a count of 13, which simply doesn't make sense to me.
> From the spec
> 4.29 siblings (of a node)
> The other nodes in the grove that occur in the value of the
> origin-to-subnode relationship property of the origin of the node.
>
> I interpret this as being the 'depth in the tree' relationship,
> according to which the sibling count should be 0.
>
Hi, Dave...
First of all, how do you have (siblings) defined? Using the
definition from the copy of the DSSSL procedure library you have on
your site, I get a value of 2 for the "special" element, which looks
correct, as that definition returns the element itself along with the
element's siblings, so it is counting the <head> and <special>
elements.
Perhaps the count of 13 includes character nodes for the whitespace
within the <sect3>? Not having the DTD you used, I may have gotten
different results. Try replacing the (literal "Siblings: " ...) line
you have with (debug-nl (siblings)). Here's (debug-nl):
(define (debug-nl #!optional (nl (current-node)))
(let loop ((n nl) (r (literal "Node-list:" cr)))
(if (node-list-empty? n) r
(loop (node-list-rest n)
(sosofo-append r
(let* ((nd (node-list-first n)) (c (node-property 'classnm nd)))
(cond
((equal? 'element c) (literal "Element: " (gi nd) cr))
((equal? 'data-char c)
(literal "Char: |"
(string (node-property 'char nd)) "|" cr))
(else (literal "Node: " (symbol->string c) cr)))))))))
This will give you a listing of what's returned from (siblings).
More detail could, of course, be added to what it generates.
-Brandon :)
DSSSList info and archive: http://www.mulberrytech.com/dsssl/dssslist
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| (dsssl) siblings, Dave Pawson | Thread | RE: (dsssl) siblings, DPawson |
| (dsssl) siblings, Dave Pawson | Date | RE: (dsssl) siblings, DPawson |
| Month |