Re: Problems with attributes.

Subject: Re: Problems with attributes.
From: Reyes <reyes.garcia@xxxxxxxxxx>
Date: Wed, 20 Oct 1999 11:08:29 +0200
Hello Brandon

	First to say that the current-old version didn't work because I have a
SGML like this:

<!doctype INSTAND SYSTEM "Little.DTD"> 
<INSTAND>
<IB-ABBAU>
   <ABBAUGEN>
      <INFOTYPE-ADDR>Abbau</INFOTYPE-ADDR>
   </ABBAUGEN>
   <ABBAU>
      <ARBGRP-AB>
         <BESCHEIN-AB>
            <ARBSCHR-AB>
               <ARBTXT>bla bla bla.</ARBTXT>
            </ARBSCHR-AB>
            <ARBSCHR-AB>
               <ARBTXT>platte abnehmen.</ARBTXT>
            </ARBSCHR-AB>
         </BESCHEIN-AB>
         <BESCHEIN-AB>
            <ARBSCHR-AB>
               <ARBTXT>Dichtringe aus den Nuten des herausnehmen</ARBTXT>
               <WERK>
                  <ANZ>rrr</ANZ>
                  <SONW ANKER="#1">
                     <BENENNUNG>&#214;labla&#223;stutzen</BENENNUNG>
                     <TEILKENN>
                        <TKZ-RENK>5583160</TKZ-RENK>
                     </TEILKENN>
                  </SONW>
               </WERK>
               <WERK>
                  <ANZ>rrrCOPIA</ANZ>
                  <SONW ANKER="#1COPIA">
                     <BENENNUNG>&#214;labla&#223;stutzenCOPIA</BENENNUNG>
                     <TEILKENN>
                        <TKZ-RENK>5583160COPIA</TKZ-RENK>
                     </TEILKENN>
                  </SONW>
               </WERK>
               <WERK>
                  <ANZ>rrr</ANZ>
                  <SONW ANKER="#1">
                     <BENENNUNG>&#214;labla&#223;stutzen</BENENNUNG>
                     <TEILKENN>
                        <TKZ-RENK>5583160</TKZ-RENK>
                     </TEILKENN>
                  </SONW>
               </WERK>
               <WERK>
                  <ANZ>rrrNUEVO</ANZ>
                  <WERKZEUG ANKER="#1NUEVO">
                     <BENENNUNG>&#214;labla&#223;stutzen</BENENNUNG>
                  </WERKZEUG>
               </WERK>
            </ARBSCHR-AB>
         </BESCHEIN-AB>
         <BESCHEIN-AB>
			 . . .
			 . . .


And Jade writes the first and the third WERK [ both have the same ANKER ].

	By another hand, you are in the good way, this if with unique [ (if
(node-list-empty? (unique (node-list-first nl) son att)) ] isn't necesary.		

	I have change the procedure, the new is:

(define (unique-son node tag son att)
  (let loop ((result (empty-node-list)) 
             (nl (select-elements (descendants node) tag)) (list-att '()))
	(if (node-list-empty? nl) result
	    (let son-loop ((son-result result) 
			     (son-nl (select-elements 
				  (descendants (node-list-first nl)) son)) 
			     (son-list-att list-att))
		    (if (node-list-empty? son-nl)
			 (loop son-result (node-list-rest nl) son-list-att)
			 (if (member (attribute-string att 
					 (node-list-first son-nl)) son-list-att)
			     (son-loop son-result (node-list-rest son-nl) 
					 son-list-att)
			     (son-loop (node-list son-result (node-list-first nl))
			     		 (node-list-rest son-nl)
					 (list son-list-att (attribute-string att 
								 (node-list-first 
								   son-nl))))))))))

 , but the problem is the same.

Another thing is that when I changed: 

	(list son-list-att (attribute-string att 
				 (node-list-first 
				   son-nl))))))))))

for 
 
	(cons son-list-att (attribute-string att 
				 (node-list-first 
				   son-nl))))))))))

with or without reverse give me a error:

Jade:c:\StarDsssl\Renk-Jade\Little.dsl:40:8:E: 2nd argument for primitive
"member" of wrong type: "(() . "#1")" not a list

I'm sorry, I don't know what can I do. I have make a procedure similar  [
unique ] but this looks only the attribute form WERK [ or the principal tag ].
This procedure is the next and works good :

(define (unique node tag att)
  (let loop ((result (empty-node-list)) 
		(nl (select-elements (descendants node) tag)) (list-att '()))
       (if (node-list-empty? nl) result
	    (if (member (attribute-string att (node-list-first nl)) list-att)
		 (loop result (node-list-rest nl) list-att)
		 (loop (node-list result (node-list-first nl)) 
		       (node-list-rest nl) 
			(list list-att (attribute-string att 
						(node-list-first nl))))))))


Thanks and I hope "not to damage your head".

Regards,
	  Reyes



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


Current Thread