mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-11-03 22:01:36 +01:00 
			
		
		
		
	
		
			
	
	
		
			998 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			998 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								;; $Id$
							 | 
						||
| 
								 | 
							
								;;
							 | 
						||
| 
								 | 
							
								;; This file is part of the Modular DocBook Stylesheet distribution.
							 | 
						||
| 
								 | 
							
								;; See ../README or http://www.berkshire.net/~norm/dsssl/
							 | 
						||
| 
								 | 
							
								;;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								;; ......................... BIBLIOGRAPHY PARAMS .........................
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								;; these should be in dbparam...
							 | 
						||
| 
								 | 
							
								(define %biblsep% ", ")
							 | 
						||
| 
								 | 
							
								(define %biblend% ".")
							 | 
						||
| 
								 | 
							
								(define bibltable #f)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (bibliography-table) 
							 | 
						||
| 
								 | 
							
								  (let* ((bibliography (ancestor-member (current-node) 
							 | 
						||
| 
								 | 
							
													(list (normalize "bibliography"))))
							 | 
						||
| 
								 | 
							
									 (biblpi       (dbhtml-value bibliography "bibliography-format")))
							 | 
						||
| 
								 | 
							
								    (and (or bibltable (equal? biblpi "table"))
							 | 
						||
| 
								 | 
							
									 (not (equal? biblpi "list")))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define %biblioentry-in-entry-order% #t)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								;; .................... BIBLIOGRAPHY and BIBLIODIV ......................
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (bibliography-content)
							 | 
						||
| 
								 | 
							
								  ;; Note that the code below works for both the case where the bibliography
							 | 
						||
| 
								 | 
							
								  ;; has BIBLIODIVs and the case where it doesn't, by the slightly subtle
							 | 
						||
| 
								 | 
							
								  ;; fact that if it does, then allentries will be (empty-node-list).
							 | 
						||
| 
								 | 
							
								  (let* ((allbibcontent (children (current-node)))
							 | 
						||
| 
								 | 
							
									 (prebibcontent (node-list-filter-by-not-gi 
							 | 
						||
| 
								 | 
							
											 allbibcontent
							 | 
						||
| 
								 | 
							
											 (list (normalize "biblioentry")
							 | 
						||
| 
								 | 
							
											       (normalize "bibliomixed"))))
							 | 
						||
| 
								 | 
							
									 (allentries    (node-list-filter-by-gi 
							 | 
						||
| 
								 | 
							
											 allbibcontent
							 | 
						||
| 
								 | 
							
											 (list (normalize "biblioentry")
							 | 
						||
| 
								 | 
							
											       (normalize "bibliomixed"))))
							 | 
						||
| 
								 | 
							
									 (entries       (if biblio-filter-used
							 | 
						||
| 
								 | 
							
											    (biblio-filter allentries)
							 | 
						||
| 
								 | 
							
											    allentries)))
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-node-list prebibcontent)
							 | 
						||
| 
								 | 
							
								      (if (bibliography-table)
							 | 
						||
| 
								 | 
							
									  (make element gi: "TABLE"
							 | 
						||
| 
								 | 
							
										attributes: '(("BORDER" "0"))
							 | 
						||
| 
								 | 
							
										(process-node-list entries))
							 | 
						||
| 
								 | 
							
									  (process-node-list entries)))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element (book bibliography)
							 | 
						||
| 
								 | 
							
								  (let ((title         (element-title-sosofo (current-node)))
							 | 
						||
| 
								 | 
							
									(body          (make sequence
							 | 
						||
| 
								 | 
							
											 (make element gi: "A"
							 | 
						||
| 
								 | 
							
											       attributes: (list (list "NAME" (element-id)))
							 | 
						||
| 
								 | 
							
											       (empty-sosofo))
							 | 
						||
| 
								 | 
							
											 ($component-separator$)
							 | 
						||
| 
								 | 
							
											 ($component-title$)
							 | 
						||
| 
								 | 
							
											 (bibliography-content))))
							 | 
						||
| 
								 | 
							
								    (html-document title body)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element (article bibliography)
							 | 
						||
| 
								 | 
							
								  (let ((title         (element-title-sosofo (current-node)))
							 | 
						||
| 
								 | 
							
									(body          (make sequence
							 | 
						||
| 
								 | 
							
											 (make element gi: "A"
							 | 
						||
| 
								 | 
							
											       attributes: (list (list "NAME" (element-id)))
							 | 
						||
| 
								 | 
							
											       (empty-sosofo))
							 | 
						||
| 
								 | 
							
											 ($component-separator$)
							 | 
						||
| 
								 | 
							
											 ($component-title$)
							 | 
						||
| 
								 | 
							
											 (bibliography-content))))
							 | 
						||
| 
								 | 
							
								    (html-document title body)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element bibliography
							 | 
						||
| 
								 | 
							
								  ;; A bibliography that's inside something else...or root
							 | 
						||
| 
								 | 
							
								  (if (sgml-root-element? (current-node))
							 | 
						||
| 
								 | 
							
								      (let ((title         (element-title-sosofo (current-node)))
							 | 
						||
| 
								 | 
							
									    (body          (make sequence
							 | 
						||
| 
								 | 
							
											     (make element gi: "A"
							 | 
						||
| 
								 | 
							
												   attributes: (list (list "NAME"
							 | 
						||
| 
								 | 
							
															   (element-id)))
							 | 
						||
| 
								 | 
							
												   (empty-sosofo))
							 | 
						||
| 
								 | 
							
											     ($component-separator$)
							 | 
						||
| 
								 | 
							
											     ($component-title$)
							 | 
						||
| 
								 | 
							
											     (bibliography-content))))
							 | 
						||
| 
								 | 
							
									(html-document title body))
							 | 
						||
| 
								 | 
							
								      (let* ((sect   (ancestor-member (current-node) 
							 | 
						||
| 
								 | 
							
												      (append (section-element-list)
							 | 
						||
| 
								 | 
							
													      (component-element-list))))
							 | 
						||
| 
								 | 
							
									     (hlevel (+ (SECTLEVEL sect) 1))
							 | 
						||
| 
								 | 
							
									     (helem  (string-append "H" (number->string (+ hlevel 1)))))
							 | 
						||
| 
								 | 
							
									(make sequence
							 | 
						||
| 
								 | 
							
									  (make element gi: helem
							 | 
						||
| 
								 | 
							
										(make element gi: "A"
							 | 
						||
| 
								 | 
							
										      attributes: (list (list "NAME" (element-id)))
							 | 
						||
| 
								 | 
							
										      (element-title-sosofo (current-node))))
							 | 
						||
| 
								 | 
							
									  (bibliography-content)))))
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								(element (bibliography title) (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element bibliodiv
							 | 
						||
| 
								 | 
							
								  (let* ((allentries (node-list-filter-by-gi (children (current-node))
							 | 
						||
| 
								 | 
							
													     (list (normalize "biblioentry")
							 | 
						||
| 
								 | 
							
														   (normalize "bibliomixed"))))
							 | 
						||
| 
								 | 
							
									 (entries (if biblio-filter-used
							 | 
						||
| 
								 | 
							
										      (biblio-filter allentries)
							 | 
						||
| 
								 | 
							
										      allentries)))
							 | 
						||
| 
								 | 
							
								    (if (and biblio-filter-used (node-list-empty? entries))
							 | 
						||
| 
								 | 
							
									(empty-sosofo)
							 | 
						||
| 
								 | 
							
									(make sequence
							 | 
						||
| 
								 | 
							
									  ($section-separator$)
							 | 
						||
| 
								 | 
							
									  ($section-title$)
							 | 
						||
| 
								 | 
							
									  (if (bibliography-table)
							 | 
						||
| 
								 | 
							
									      (make element gi: "TABLE"
							 | 
						||
| 
								 | 
							
										    attributes: '(("BORDER" "0"))
							 | 
						||
| 
								 | 
							
										    (process-node-list entries))
							 | 
						||
| 
								 | 
							
									      (process-node-list entries))))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element (bibliodiv title) (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								;; ..................... BIBLIOGRAPHY ENTRIES .........................
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (biblioentry-inline-sep node rest)
							 | 
						||
| 
								 | 
							
								  ;; Output the character that should separate inline node from rest
							 | 
						||
| 
								 | 
							
								  (cond 
							 | 
						||
| 
								 | 
							
								   ((and (equal? (gi node) (normalize "title"))
							 | 
						||
| 
								 | 
							
									 (equal? (gi (node-list-first rest)) (normalize "subtitle")))
							 | 
						||
| 
								 | 
							
								    (make element gi: "I"
							 | 
						||
| 
								 | 
							
									  (literal ": ")))
							 | 
						||
| 
								 | 
							
								   (else
							 | 
						||
| 
								 | 
							
								    (literal %biblsep%))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (biblioentry-inline-end blocks)
							 | 
						||
| 
								 | 
							
								  ;; Output the character that should occur at the end of inline
							 | 
						||
| 
								 | 
							
								  (literal %biblend%))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (biblioentry-block-sep node rest)
							 | 
						||
| 
								 | 
							
								  ;; Output the character that should separate block node from rest
							 | 
						||
| 
								 | 
							
								  (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (biblioentry-block-end)
							 | 
						||
| 
								 | 
							
								  ;; Output the character that should occur at the end of block
							 | 
						||
| 
								 | 
							
								  (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (nontable-biblioentry 
							 | 
						||
| 
								 | 
							
									 xreflabel leading-abbrev inline-children block-children)
							 | 
						||
| 
								 | 
							
								  (let ((has-leading-abbrev?
							 | 
						||
| 
								 | 
							
									 (not (or (node-list-empty? leading-abbrev) biblio-number))))
							 | 
						||
| 
								 | 
							
								    (make element gi: "DIV"
							 | 
						||
| 
								 | 
							
									  attributes: (list (list "CLASS" (gi)))
							 | 
						||
| 
								 | 
							
									  (make element gi: "A"
							 | 
						||
| 
								 | 
							
										attributes: (list (list "NAME" (element-id)))
							 | 
						||
| 
								 | 
							
										(empty-sosofo))
							 | 
						||
| 
								 | 
							
									  (make element gi: "P"
							 | 
						||
| 
								 | 
							
										(if (or biblio-number xreflabel has-leading-abbrev?)
							 | 
						||
| 
								 | 
							
										    (make sequence
							 | 
						||
| 
								 | 
							
										      (literal "[")
							 | 
						||
| 
								 | 
							
										      
							 | 
						||
| 
								 | 
							
										      (if biblio-number 
							 | 
						||
| 
								 | 
							
											  (literal (number->string (bibentry-number 
							 | 
						||
| 
								 | 
							
														    (current-node))))
							 | 
						||
| 
								 | 
							
											  (empty-sosofo))
							 | 
						||
| 
								 | 
							
										      
							 | 
						||
| 
								 | 
							
										      (if xreflabel
							 | 
						||
| 
								 | 
							
											  (literal xreflabel)
							 | 
						||
| 
								 | 
							
											  (empty-sosofo))
							 | 
						||
| 
								 | 
							
										      
							 | 
						||
| 
								 | 
							
										      (if has-leading-abbrev?
							 | 
						||
| 
								 | 
							
											  (with-mode biblioentry-inline-mode 
							 | 
						||
| 
								 | 
							
											    (process-node-list leading-abbrev))
							 | 
						||
| 
								 | 
							
											  (empty-sosofo))
							 | 
						||
| 
								 | 
							
										      
							 | 
						||
| 
								 | 
							
										      (literal "]")
							 | 
						||
| 
								 | 
							
										      (make entity-ref name: "nbsp"))
							 | 
						||
| 
								 | 
							
										    (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										(let loop ((nl inline-children))
							 | 
						||
| 
								 | 
							
										  (if (node-list-empty? nl)
							 | 
						||
| 
								 | 
							
										      (empty-sosofo)
							 | 
						||
| 
								 | 
							
										      (make sequence
							 | 
						||
| 
								 | 
							
											(with-mode biblioentry-inline-mode
							 | 
						||
| 
								 | 
							
											  (process-node-list (node-list-first nl)))
							 | 
						||
| 
								 | 
							
											(if (node-list-empty? (node-list-rest nl))
							 | 
						||
| 
								 | 
							
											    (biblioentry-inline-end block-children)
							 | 
						||
| 
								 | 
							
											    (biblioentry-inline-sep (node-list-first nl)
							 | 
						||
| 
								 | 
							
														    (node-list-rest nl)))
							 | 
						||
| 
								 | 
							
											(loop (node-list-rest nl))))))
							 | 
						||
| 
								 | 
							
									  
							 | 
						||
| 
								 | 
							
									  (make element gi: "DIV"
							 | 
						||
| 
								 | 
							
										attributes: '(("CLASS" "BIBLIOENTRYBLOCK")
							 | 
						||
| 
								 | 
							
											      ("STYLE" "margin-left: 0.5in"))
							 | 
						||
| 
								 | 
							
										(let loop ((nl block-children))
							 | 
						||
| 
								 | 
							
										  (if (node-list-empty? nl)
							 | 
						||
| 
								 | 
							
										      (empty-sosofo)
							 | 
						||
| 
								 | 
							
										      (make sequence
							 | 
						||
| 
								 | 
							
											(with-mode biblioentry-block-mode
							 | 
						||
| 
								 | 
							
											  (process-node-list (node-list-first nl)))
							 | 
						||
| 
								 | 
							
											(if (node-list-empty? (node-list-rest nl))
							 | 
						||
| 
								 | 
							
											    (biblioentry-block-end)
							 | 
						||
| 
								 | 
							
											    (biblioentry-block-sep (node-list-first nl)
							 | 
						||
| 
								 | 
							
														   (node-list-rest nl)))
							 | 
						||
| 
								 | 
							
											(loop (node-list-rest nl)))))))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (table-biblioentry 
							 | 
						||
| 
								 | 
							
									 xreflabel leading-abbrev inline-children block-children)
							 | 
						||
| 
								 | 
							
								  (let ((has-leading-abbrev? 
							 | 
						||
| 
								 | 
							
									 (not (or (node-list-empty? leading-abbrev) biblio-number))))
							 | 
						||
| 
								 | 
							
								    (make element gi: "TR"
							 | 
						||
| 
								 | 
							
									  (make element gi: "TD"
							 | 
						||
| 
								 | 
							
										attributes: '(("ALIGN" "LEFT")
							 | 
						||
| 
								 | 
							
											      ("VALIGN" "TOP")
							 | 
						||
| 
								 | 
							
											      ("WIDTH" "10%"))
							 | 
						||
| 
								 | 
							
										(make element gi: "A"
							 | 
						||
| 
								 | 
							
										      attributes: (list (list "NAME" (element-id)))
							 | 
						||
| 
								 | 
							
										      (empty-sosofo))
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										(if (or biblio-number xreflabel has-leading-abbrev?)
							 | 
						||
| 
								 | 
							
										    (make sequence
							 | 
						||
| 
								 | 
							
										      (literal "[")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										      (if biblio-number 
							 | 
						||
| 
								 | 
							
											  (literal (number->string (bibentry-number 
							 | 
						||
| 
								 | 
							
														    (current-node))))
							 | 
						||
| 
								 | 
							
											  (empty-sosofo))
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										      (if xreflabel
							 | 
						||
| 
								 | 
							
											  (literal xreflabel)
							 | 
						||
| 
								 | 
							
											  (empty-sosofo))
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										      (if has-leading-abbrev?
							 | 
						||
| 
								 | 
							
											  (with-mode biblioentry-inline-mode 
							 | 
						||
| 
								 | 
							
											    (process-node-list leading-abbrev))
							 | 
						||
| 
								 | 
							
											  (empty-sosofo))
							 | 
						||
| 
								 | 
							
										      
							 | 
						||
| 
								 | 
							
										      (literal "]"))
							 | 
						||
| 
								 | 
							
										    (make entity-ref name: "nbsp")))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  (make element gi: "TD"
							 | 
						||
| 
								 | 
							
										attributes: '(("ALIGN" "LEFT")
							 | 
						||
| 
								 | 
							
											      ("VALIGN" "TOP")
							 | 
						||
| 
								 | 
							
											      ("WIDTH" "90%"))
							 | 
						||
| 
								 | 
							
										(make element gi: "P"
							 | 
						||
| 
								 | 
							
										      (let loop ((nl inline-children))
							 | 
						||
| 
								 | 
							
											(if (node-list-empty? nl)
							 | 
						||
| 
								 | 
							
											    (empty-sosofo)
							 | 
						||
| 
								 | 
							
											    (make sequence
							 | 
						||
| 
								 | 
							
											      (with-mode biblioentry-inline-mode
							 | 
						||
| 
								 | 
							
												(process-node-list (node-list-first nl)))
							 | 
						||
| 
								 | 
							
											      (if (node-list-empty? (node-list-rest nl))
							 | 
						||
| 
								 | 
							
												  (biblioentry-inline-end block-children)
							 | 
						||
| 
								 | 
							
												  (biblioentry-inline-sep (node-list-first nl)
							 | 
						||
| 
								 | 
							
															  (node-list-rest nl)))
							 | 
						||
| 
								 | 
							
											      (loop (node-list-rest nl))))))
							 | 
						||
| 
								 | 
							
									  
							 | 
						||
| 
								 | 
							
										(let loop ((nl block-children))
							 | 
						||
| 
								 | 
							
										  (if (node-list-empty? nl)
							 | 
						||
| 
								 | 
							
										      (empty-sosofo)
							 | 
						||
| 
								 | 
							
										      (make sequence
							 | 
						||
| 
								 | 
							
											(with-mode biblioentry-block-mode
							 | 
						||
| 
								 | 
							
											  (process-node-list (node-list-first nl)))
							 | 
						||
| 
								 | 
							
											(if (node-list-empty? (node-list-rest nl))
							 | 
						||
| 
								 | 
							
											    (biblioentry-block-end)
							 | 
						||
| 
								 | 
							
											    (biblioentry-block-sep (node-list-first nl)
							 | 
						||
| 
								 | 
							
														   (node-list-rest nl)))
							 | 
						||
| 
								 | 
							
											(loop (node-list-rest nl)))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										(if (node-list-empty? block-children)
							 | 
						||
| 
								 | 
							
										    (empty-sosofo)
							 | 
						||
| 
								 | 
							
										    (make element gi: "P"
							 | 
						||
| 
								 | 
							
											  ;; get the table row spacing right
							 | 
						||
| 
								 | 
							
											  (empty-sosofo)))))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element biblioentry
							 | 
						||
| 
								 | 
							
								  (let* ((expanded-children   (expand-children 
							 | 
						||
| 
								 | 
							
											       (children (current-node))
							 | 
						||
| 
								 | 
							
											       (biblioentry-flatten-elements)))
							 | 
						||
| 
								 | 
							
									 (all-inline-children (if %biblioentry-in-entry-order%
							 | 
						||
| 
								 | 
							
												  (titlepage-gi-list-by-nodelist
							 | 
						||
| 
								 | 
							
												   (biblioentry-inline-elements)
							 | 
						||
| 
								 | 
							
												   expanded-children)
							 | 
						||
| 
								 | 
							
												  (titlepage-gi-list-by-elements
							 | 
						||
| 
								 | 
							
												   (biblioentry-inline-elements)
							 | 
						||
| 
								 | 
							
												   expanded-children)))
							 | 
						||
| 
								 | 
							
									 (block-children      (if %biblioentry-in-entry-order%
							 | 
						||
| 
								 | 
							
												  (titlepage-gi-list-by-nodelist
							 | 
						||
| 
								 | 
							
												   (biblioentry-block-elements)
							 | 
						||
| 
								 | 
							
												   expanded-children)
							 | 
						||
| 
								 | 
							
												  (titlepage-gi-list-by-elements
							 | 
						||
| 
								 | 
							
												   (biblioentry-block-elements)
							 | 
						||
| 
								 | 
							
												   expanded-children)))
							 | 
						||
| 
								 | 
							
									 (leading-abbrev      (if (equal? (normalize "abbrev")
							 | 
						||
| 
								 | 
							
													  (gi (node-list-first 
							 | 
						||
| 
								 | 
							
													       all-inline-children)))
							 | 
						||
| 
								 | 
							
												  (node-list-first all-inline-children)
							 | 
						||
| 
								 | 
							
												  (empty-node-list)))
							 | 
						||
| 
								 | 
							
									 (inline-children     (if (node-list-empty? leading-abbrev)
							 | 
						||
| 
								 | 
							
												  all-inline-children
							 | 
						||
| 
								 | 
							
												  (node-list-rest all-inline-children)))
							 | 
						||
| 
								 | 
							
									 (has-leading-abbrev? (not (node-list-empty? leading-abbrev)))
							 | 
						||
| 
								 | 
							
									 (xreflabel           (if (or has-leading-abbrev? biblio-number)
							 | 
						||
| 
								 | 
							
												  #f
							 | 
						||
| 
								 | 
							
												  (attribute-string (normalize "xreflabel")))))
							 | 
						||
| 
								 | 
							
								    (if (bibliography-table)
							 | 
						||
| 
								 | 
							
									(table-biblioentry xreflabel leading-abbrev inline-children block-children)
							 | 
						||
| 
								 | 
							
									(nontable-biblioentry xreflabel leading-abbrev inline-children block-children))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(mode biblioentry-inline-mode
							 | 
						||
| 
								 | 
							
								  (element abbrev
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element affiliation
							 | 
						||
| 
								 | 
							
								    (let ((inline-children (node-list-filter-by-not-gi 
							 | 
						||
| 
								 | 
							
											    (children (current-node))
							 | 
						||
| 
								 | 
							
											    (list (normalize "address")))))
							 | 
						||
| 
								 | 
							
								      (let loop ((nl inline-children))
							 | 
						||
| 
								 | 
							
									(if (node-list-empty? nl)
							 | 
						||
| 
								 | 
							
									    (empty-sosofo)
							 | 
						||
| 
								 | 
							
									    (make sequence
							 | 
						||
| 
								 | 
							
									      (process-node-list (node-list-first nl))
							 | 
						||
| 
								 | 
							
									      (if (node-list-empty? (node-list-rest nl))
							 | 
						||
| 
								 | 
							
										  (empty-sosofo)
							 | 
						||
| 
								 | 
							
										  (literal ", "))
							 | 
						||
| 
								 | 
							
									      (loop (node-list-rest nl)))))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element artpagenums
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element author
							 | 
						||
| 
								 | 
							
								    (make element gi: "SPAN"
							 | 
						||
| 
								 | 
							
									  attributes: '(("CLASS" "AUTHOR"))
							 | 
						||
| 
								 | 
							
									  (literal (author-list-string))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element authorgroup
							 | 
						||
| 
								 | 
							
								    (process-children))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element authorinitials
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element collab
							 | 
						||
| 
								 | 
							
								    (let* ((nl (children (current-node)))
							 | 
						||
| 
								 | 
							
									   (collabname (node-list-first nl))
							 | 
						||
| 
								 | 
							
									   (affil (node-list-rest nl)))
							 | 
						||
| 
								 | 
							
								      (make sequence
							 | 
						||
| 
								 | 
							
									(process-node-list collabname)
							 | 
						||
| 
								 | 
							
									(if (node-list-empty? affil)
							 | 
						||
| 
								 | 
							
									    (empty-sosofo)
							 | 
						||
| 
								 | 
							
									    (let loop ((nl affil))
							 | 
						||
| 
								 | 
							
									      (if (node-list-empty? nl)
							 | 
						||
| 
								 | 
							
										  (empty-sosofo)
							 | 
						||
| 
								 | 
							
										  (make sequence
							 | 
						||
| 
								 | 
							
										    (literal ", ")
							 | 
						||
| 
								 | 
							
										    (process-node-list (node-list-first nl))
							 | 
						||
| 
								 | 
							
										    (loop (node-list-rest nl)))))))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element (collab collabname)
							 | 
						||
| 
								 | 
							
								    (process-children))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element confgroup
							 | 
						||
| 
								 | 
							
								    (let ((inline-children (node-list-filter-by-not-gi 
							 | 
						||
| 
								 | 
							
											    (children (current-node))
							 | 
						||
| 
								 | 
							
											    (list (normalize "address")))))
							 | 
						||
| 
								 | 
							
								      (let loop ((nl inline-children))
							 | 
						||
| 
								 | 
							
									(if (node-list-empty? nl)
							 | 
						||
| 
								 | 
							
									    (empty-sosofo)
							 | 
						||
| 
								 | 
							
									    (make sequence
							 | 
						||
| 
								 | 
							
									      (process-node-list (node-list-first nl))
							 | 
						||
| 
								 | 
							
									      (if (node-list-empty? (node-list-rest nl))
							 | 
						||
| 
								 | 
							
										  (empty-sosofo)
							 | 
						||
| 
								 | 
							
										  (literal ", "))
							 | 
						||
| 
								 | 
							
									      (loop (node-list-rest nl)))))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element contractnum
							 | 
						||
| 
								 | 
							
								    (process-children))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element contractsponsor
							 | 
						||
| 
								 | 
							
								    (process-children))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element contrib
							 | 
						||
| 
								 | 
							
								    (process-children))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element copyright
							 | 
						||
| 
								 | 
							
								    ;; Just print the year(s)
							 | 
						||
| 
								 | 
							
								    (let ((years (select-elements (children (current-node))
							 | 
						||
| 
								 | 
							
												  (normalize "year"))))
							 | 
						||
| 
								 | 
							
								      (process-node-list years)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element (copyright year)
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)
							 | 
						||
| 
								 | 
							
								      (if (not (last-sibling? (current-node)))
							 | 
						||
| 
								 | 
							
									  (literal ", ")
							 | 
						||
| 
								 | 
							
									  (empty-sosofo))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element corpauthor
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element corpname
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element date
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element edition
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element editor
							 | 
						||
| 
								 | 
							
								    (make element gi: "SPAN"
							 | 
						||
| 
								 | 
							
									  attributes: '(("CLASS" "EDITOR"))
							 | 
						||
| 
								 | 
							
									  (if (first-sibling?) 
							 | 
						||
| 
								 | 
							
									      (make sequence
							 | 
						||
| 
								 | 
							
										(literal (gentext-edited-by))
							 | 
						||
| 
								 | 
							
										(literal " "))
							 | 
						||
| 
								 | 
							
									      (empty-sosofo))
							 | 
						||
| 
								 | 
							
									  (literal (author-list-string))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element firstname
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element honorific
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element invpartnumber
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element isbn
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element issn
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element issuenum
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element lineage
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element orgname
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element othercredit
							 | 
						||
| 
								 | 
							
								    (make element gi: "SPAN"
							 | 
						||
| 
								 | 
							
									  attributes: '(("CLASS" "OTHERCREDIT"))
							 | 
						||
| 
								 | 
							
									  (literal (author-list-string))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element othername
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element pagenums
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element productname
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      ($charseq$)
							 | 
						||
| 
								 | 
							
								; this is actually a problem since "trade" is the default value for
							 | 
						||
| 
								 | 
							
								; the class attribute. we can put this back in in DocBook 5.0, when
							 | 
						||
| 
								 | 
							
								; class becomes #IMPLIED
							 | 
						||
| 
								 | 
							
								;      (if (equal? (attribute-string "class") (normalize "trade"))
							 | 
						||
| 
								 | 
							
								;	  (dingbat-sosofo "trademark")
							 | 
						||
| 
								 | 
							
								;	  (empty-sosofo))
							 | 
						||
| 
								 | 
							
								      ))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element productnumber
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element pubdate
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element publisher
							 | 
						||
| 
								 | 
							
								    (let ((pubname (select-elements (children (current-node))
							 | 
						||
| 
								 | 
							
												    (normalize "publishername")))
							 | 
						||
| 
								 | 
							
									  (cities  (select-elements (descendants (current-node))
							 | 
						||
| 
								 | 
							
												    (normalize "city"))))
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-node-list pubname)
							 | 
						||
| 
								 | 
							
								      (if (node-list-empty? cities)
							 | 
						||
| 
								 | 
							
									  (empty-sosofo)
							 | 
						||
| 
								 | 
							
									  (literal ", "))
							 | 
						||
| 
								 | 
							
								      (process-node-list cities))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element publishername
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element (publisher address city)
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)
							 | 
						||
| 
								 | 
							
								      (if (not (last-sibling? (current-node)))
							 | 
						||
| 
								 | 
							
									  (literal ", ")
							 | 
						||
| 
								 | 
							
									  (empty-sosofo))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element pubsnumber
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element releaseinfo
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element seriesvolnums
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element subtitle
							 | 
						||
| 
								 | 
							
								    (make element gi: "I"
							 | 
						||
| 
								 | 
							
									  (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element surname
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element title
							 | 
						||
| 
								 | 
							
								    (make element gi: "I"
							 | 
						||
| 
								 | 
							
									  (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element titleabbrev
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element volumenum
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element (bibliomixed title) 
							 | 
						||
| 
								 | 
							
								      (make element gi: "I"
							 | 
						||
| 
								 | 
							
									    (process-children)))
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								  (element (bibliomixed subtitle) 
							 | 
						||
| 
								 | 
							
								    (make element gi: "I"
							 | 
						||
| 
								 | 
							
									  (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element (biblioset title)
							 | 
						||
| 
								 | 
							
								    (let ((rel (case-fold-up 
							 | 
						||
| 
								 | 
							
										(inherited-attribute-string (normalize "relation")))))
							 | 
						||
| 
								 | 
							
								      (cond
							 | 
						||
| 
								 | 
							
								       ((equal? rel "ARTICLE") (make sequence
							 | 
						||
| 
								 | 
							
												 (literal (gentext-start-quote))
							 | 
						||
| 
								 | 
							
												 (process-children)
							 | 
						||
| 
								 | 
							
												 (literal (gentext-end-quote))))
							 | 
						||
| 
								 | 
							
								       (else (make element gi: "I"
							 | 
						||
| 
								 | 
							
										   (process-children))))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element (bibliomset title)
							 | 
						||
| 
								 | 
							
								    (let ((rel (case-fold-up 
							 | 
						||
| 
								 | 
							
										(inherited-attribute-string (normalize "relation")))))
							 | 
						||
| 
								 | 
							
								      (cond
							 | 
						||
| 
								 | 
							
								       ((equal? rel "ARTICLE") (make sequence
							 | 
						||
| 
								 | 
							
												 (literal (gentext-start-quote))
							 | 
						||
| 
								 | 
							
												 (process-children)
							 | 
						||
| 
								 | 
							
												 (literal (gentext-end-quote))))
							 | 
						||
| 
								 | 
							
								       (else        (make element gi: "I"
							 | 
						||
| 
								 | 
							
											  (process-children))))))
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(mode biblioentry-block-mode
							 | 
						||
| 
								 | 
							
								  (element abstract
							 | 
						||
| 
								 | 
							
								    (make element gi: "DIV"
							 | 
						||
| 
								 | 
							
									  attributes: (list (list "CLASS" (gi)))
							 | 
						||
| 
								 | 
							
									  (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element (abstract title)
							 | 
						||
| 
								 | 
							
								    (make element gi: "P"
							 | 
						||
| 
								 | 
							
									  (make element gi: "B"
							 | 
						||
| 
								 | 
							
										(process-children))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element address
							 | 
						||
| 
								 | 
							
								    ($linespecific-display$ %indent-address-lines% %number-address-lines%))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element authorblurb
							 | 
						||
| 
								 | 
							
								    (make element gi: "DIV"
							 | 
						||
| 
								 | 
							
									  attributes: (list (list "CLASS" (gi)))
							 | 
						||
| 
								 | 
							
									  (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element printhistory
							 | 
						||
| 
								 | 
							
								    (make element gi: "DIV"
							 | 
						||
| 
								 | 
							
									  attributes: (list (list "CLASS" (gi)))
							 | 
						||
| 
								 | 
							
								      (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element revhistory
							 | 
						||
| 
								 | 
							
								    (make element gi: "DIV"
							 | 
						||
| 
								 | 
							
									  attributes: (list (list "CLASS" (gi)))
							 | 
						||
| 
								 | 
							
									  (make element gi: "TABLE"
							 | 
						||
| 
								 | 
							
										attributes: (list
							 | 
						||
| 
								 | 
							
											     (list "WIDTH" ($table-width$))
							 | 
						||
| 
								 | 
							
											     (list "BORDER" "0"))
							 | 
						||
| 
								 | 
							
										(make sequence
							 | 
						||
| 
								 | 
							
										  (make element gi: "TR"
							 | 
						||
| 
								 | 
							
											(make element gi: "TH"
							 | 
						||
| 
								 | 
							
											      attributes: '(("ALIGN" "LEFT") 
							 | 
						||
| 
								 | 
							
													    ("VALIGN" "TOP")
							 | 
						||
| 
								 | 
							
													    ("COLSPAN" "3"))
							 | 
						||
| 
								 | 
							
											      (make element gi: "B"
							 | 
						||
| 
								 | 
							
												    (literal (gentext-element-name 
							 | 
						||
| 
								 | 
							
													      (gi (current-node)))))))
							 | 
						||
| 
								 | 
							
										  (process-children)))))
							 | 
						||
| 
								 | 
							
								  
							 | 
						||
| 
								 | 
							
								  (element (revhistory revision)
							 | 
						||
| 
								 | 
							
								    (let ((revnumber (select-elements (descendants (current-node)) 
							 | 
						||
| 
								 | 
							
												      (normalize "revnumber")))
							 | 
						||
| 
								 | 
							
									  (revdate   (select-elements (descendants (current-node))
							 | 
						||
| 
								 | 
							
												      (normalize "date")))
							 | 
						||
| 
								 | 
							
									  (revauthor (select-elements (descendants (current-node))
							 | 
						||
| 
								 | 
							
												      (normalize "authorinitials")))
							 | 
						||
| 
								 | 
							
									  (revremark (node-list-filter-by-gi
							 | 
						||
| 
								 | 
							
										      (descendants (current-node))
							 | 
						||
| 
								 | 
							
										      (list (normalize "revremark")
							 | 
						||
| 
								 | 
							
											    (normalize "revdescription")))))
							 | 
						||
| 
								 | 
							
								      (make sequence
							 | 
						||
| 
								 | 
							
									(make element gi: "TR"
							 | 
						||
| 
								 | 
							
									      (make element gi: "TD"
							 | 
						||
| 
								 | 
							
										    attributes: (list
							 | 
						||
| 
								 | 
							
												 (list "ALIGN" "LEFT"))
							 | 
						||
| 
								 | 
							
										    (if (not (node-list-empty? revnumber))
							 | 
						||
| 
								 | 
							
											(make sequence
							 | 
						||
| 
								 | 
							
											  (literal (gentext-element-name-space 
							 | 
						||
| 
								 | 
							
												    (gi (current-node))))
							 | 
						||
| 
								 | 
							
											  (process-node-list revnumber))
							 | 
						||
| 
								 | 
							
											(empty-sosofo)))
							 | 
						||
| 
								 | 
							
									      (make element gi: "TD"
							 | 
						||
| 
								 | 
							
										    attributes: (list
							 | 
						||
| 
								 | 
							
												 (list "ALIGN" "LEFT"))
							 | 
						||
| 
								 | 
							
										    (if (not (node-list-empty? revdate))
							 | 
						||
| 
								 | 
							
											(process-node-list revdate)
							 | 
						||
| 
								 | 
							
											(empty-sosofo)))
							 | 
						||
| 
								 | 
							
									      (make element gi: "TD"
							 | 
						||
| 
								 | 
							
										    attributes: (list
							 | 
						||
| 
								 | 
							
												 (list "ALIGN" "LEFT"))
							 | 
						||
| 
								 | 
							
										    (if (not (node-list-empty? revauthor))
							 | 
						||
| 
								 | 
							
											(make sequence
							 | 
						||
| 
								 | 
							
											  (literal (gentext-revised-by))
							 | 
						||
| 
								 | 
							
											  (process-node-list revauthor))
							 | 
						||
| 
								 | 
							
											(empty-sosofo))))
							 | 
						||
| 
								 | 
							
									(make element gi: "TR"
							 | 
						||
| 
								 | 
							
									      (make element gi: "TD"
							 | 
						||
| 
								 | 
							
										    attributes: (list
							 | 
						||
| 
								 | 
							
												 (list "ALIGN" "LEFT")
							 | 
						||
| 
								 | 
							
												 (list "COLSPAN" "3"))
							 | 
						||
| 
								 | 
							
										    (if (not (node-list-empty? revremark))
							 | 
						||
| 
								 | 
							
											(process-node-list revremark)
							 | 
						||
| 
								 | 
							
											(empty-sosofo)))))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element (revision revnumber) (process-children-trim))
							 | 
						||
| 
								 | 
							
								  (element (revision date) (process-children-trim))
							 | 
						||
| 
								 | 
							
								  (element (revision authorinitials) (process-children-trim))
							 | 
						||
| 
								 | 
							
								  (element (revision revremark) (process-children-trim))
							 | 
						||
| 
								 | 
							
								  (element (revision revdescription) (process-children))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element seriesinfo
							 | 
						||
| 
								 | 
							
								    ;; This is a nearly biblioentry recursively...
							 | 
						||
| 
								 | 
							
								    (let* ((expanded-children   (expand-children 
							 | 
						||
| 
								 | 
							
												 (children (current-node))
							 | 
						||
| 
								 | 
							
												 (biblioentry-flatten-elements)))
							 | 
						||
| 
								 | 
							
									   (all-inline-children (if %biblioentry-in-entry-order%
							 | 
						||
| 
								 | 
							
												    (titlepage-gi-list-by-nodelist
							 | 
						||
| 
								 | 
							
												     (biblioentry-inline-elements)
							 | 
						||
| 
								 | 
							
												     expanded-children)
							 | 
						||
| 
								 | 
							
												    (titlepage-gi-list-by-elements
							 | 
						||
| 
								 | 
							
												     (biblioentry-inline-elements)
							 | 
						||
| 
								 | 
							
												     expanded-children)))
							 | 
						||
| 
								 | 
							
									   (block-children      (if %biblioentry-in-entry-order%
							 | 
						||
| 
								 | 
							
												    (titlepage-gi-list-by-nodelist
							 | 
						||
| 
								 | 
							
												     (biblioentry-block-elements)
							 | 
						||
| 
								 | 
							
												     expanded-children)
							 | 
						||
| 
								 | 
							
												    (titlepage-gi-list-by-elements
							 | 
						||
| 
								 | 
							
												     (biblioentry-block-elements)
							 | 
						||
| 
								 | 
							
												     expanded-children)))
							 | 
						||
| 
								 | 
							
									   (inline-children     all-inline-children))
							 | 
						||
| 
								 | 
							
								      (make element gi: "DIV"
							 | 
						||
| 
								 | 
							
									    attributes: (list (list "CLASS" (gi)))
							 | 
						||
| 
								 | 
							
									    (make element gi: "P"
							 | 
						||
| 
								 | 
							
										  (let loop ((nl inline-children))
							 | 
						||
| 
								 | 
							
										    (if (node-list-empty? nl)
							 | 
						||
| 
								 | 
							
											(empty-sosofo)
							 | 
						||
| 
								 | 
							
											(make sequence
							 | 
						||
| 
								 | 
							
											  (with-mode biblioentry-inline-mode
							 | 
						||
| 
								 | 
							
											    (process-node-list (node-list-first nl)))
							 | 
						||
| 
								 | 
							
											  (if (node-list-empty? (node-list-rest nl))
							 | 
						||
| 
								 | 
							
											      (biblioentry-inline-end block-children)
							 | 
						||
| 
								 | 
							
											      (biblioentry-inline-sep (node-list-first nl)
							 | 
						||
| 
								 | 
							
														      (node-list-rest nl)))
							 | 
						||
| 
								 | 
							
											  (loop (node-list-rest nl))))))
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									    (make element gi: "DIV"
							 | 
						||
| 
								 | 
							
										  attributes: (list (list "CLASS" (gi)))
							 | 
						||
| 
								 | 
							
										  (let loop ((nl block-children))
							 | 
						||
| 
								 | 
							
										    (if (node-list-empty? nl)
							 | 
						||
| 
								 | 
							
											(empty-sosofo)
							 | 
						||
| 
								 | 
							
											(make sequence
							 | 
						||
| 
								 | 
							
											  (with-mode biblioentry-block-mode
							 | 
						||
| 
								 | 
							
											    (process-node-list (node-list-first nl)))
							 | 
						||
| 
								 | 
							
											  (if (node-list-empty? (node-list-rest nl))
							 | 
						||
| 
								 | 
							
											      (biblioentry-block-end)
							 | 
						||
| 
								 | 
							
											      (biblioentry-block-sep (node-list-first nl)
							 | 
						||
| 
								 | 
							
														     (node-list-rest nl)))
							 | 
						||
| 
								 | 
							
											  (loop (node-list-rest nl)))))))))
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (nontable-bibliomixed 
							 | 
						||
| 
								 | 
							
									 xreflabel leading-abbrev inline-children)
							 | 
						||
| 
								 | 
							
								  (let* ((has-leading-abbrev? (not (node-list-empty? leading-abbrev))))
							 | 
						||
| 
								 | 
							
								    (make element gi: "DIV"
							 | 
						||
| 
								 | 
							
									  attributes: (list (list "CLASS" (gi)))
							 | 
						||
| 
								 | 
							
									  (make element gi: "A"
							 | 
						||
| 
								 | 
							
										attributes: (list (list "NAME" (element-id)))
							 | 
						||
| 
								 | 
							
										(empty-sosofo))
							 | 
						||
| 
								 | 
							
									  (make element gi: "P"
							 | 
						||
| 
								 | 
							
										attributes: (list (list "CLASS" (gi)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										(if (or biblio-number xreflabel has-leading-abbrev?)
							 | 
						||
| 
								 | 
							
										    (make sequence
							 | 
						||
| 
								 | 
							
										      (literal "[")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										      (if biblio-number 
							 | 
						||
| 
								 | 
							
											  (literal (number->string (bibentry-number 
							 | 
						||
| 
								 | 
							
														    (current-node))))
							 | 
						||
| 
								 | 
							
											  (empty-sosofo))
							 | 
						||
| 
								 | 
							
										      
							 | 
						||
| 
								 | 
							
										      (if xreflabel
							 | 
						||
| 
								 | 
							
											  (literal xreflabel)
							 | 
						||
| 
								 | 
							
											  (empty-sosofo))
							 | 
						||
| 
								 | 
							
									  
							 | 
						||
| 
								 | 
							
										      (if has-leading-abbrev?
							 | 
						||
| 
								 | 
							
											  (with-mode biblioentry-inline-mode 
							 | 
						||
| 
								 | 
							
											    (process-node-list leading-abbrev))
							 | 
						||
| 
								 | 
							
											  (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										      (literal "]")
							 | 
						||
| 
								 | 
							
										      (make entity-ref name: "nbsp"))
							 | 
						||
| 
								 | 
							
										    (empty-sosofo))
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
										(with-mode biblioentry-inline-mode
							 | 
						||
| 
								 | 
							
										  (process-node-list inline-children))))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (table-bibliomixed 
							 | 
						||
| 
								 | 
							
									 xreflabel leading-abbrev inline-children)
							 | 
						||
| 
								 | 
							
								  (let* ((has-leading-abbrev? (not (node-list-empty? leading-abbrev))))
							 | 
						||
| 
								 | 
							
								    (make element gi: "TR"
							 | 
						||
| 
								 | 
							
									  (make element gi: "TD"
							 | 
						||
| 
								 | 
							
										attributes: '(("ALIGN" "LEFT")
							 | 
						||
| 
								 | 
							
											      ("VALIGN" "TOP")
							 | 
						||
| 
								 | 
							
											      ("WIDTH" "10%"))
							 | 
						||
| 
								 | 
							
										(make element gi: "A"
							 | 
						||
| 
								 | 
							
										      attributes: (list (list "NAME" (element-id)))
							 | 
						||
| 
								 | 
							
										      (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										(if (or biblio-number xreflabel has-leading-abbrev?)
							 | 
						||
| 
								 | 
							
										    (make sequence
							 | 
						||
| 
								 | 
							
										      (literal "[")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										      (if biblio-number 
							 | 
						||
| 
								 | 
							
											  (literal (number->string (bibentry-number 
							 | 
						||
| 
								 | 
							
														    (current-node))))
							 | 
						||
| 
								 | 
							
											  (empty-sosofo))
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										      (if xreflabel
							 | 
						||
| 
								 | 
							
											  (literal xreflabel)
							 | 
						||
| 
								 | 
							
											  (empty-sosofo))
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										      (if has-leading-abbrev?
							 | 
						||
| 
								 | 
							
											  (with-mode biblioentry-inline-mode 
							 | 
						||
| 
								 | 
							
											    (process-node-list leading-abbrev))
							 | 
						||
| 
								 | 
							
											  (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										      (literal "]"))
							 | 
						||
| 
								 | 
							
										    (make entity-ref name: "nbsp")))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									  (make element gi: "TD"
							 | 
						||
| 
								 | 
							
										attributes: '(("ALIGN" "LEFT")
							 | 
						||
| 
								 | 
							
											      ("VALIGN" "TOP")
							 | 
						||
| 
								 | 
							
											      ("WIDTH" "90%"))
							 | 
						||
| 
								 | 
							
										(with-mode biblioentry-inline-mode
							 | 
						||
| 
								 | 
							
										  (process-node-list inline-children))))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element bibliomixed 
							 | 
						||
| 
								 | 
							
								  (let* ((all-inline-children (children (current-node)))
							 | 
						||
| 
								 | 
							
									 (leading-abbrev      (if (equal? (normalize "abbrev")
							 | 
						||
| 
								 | 
							
													  (gi (node-list-first 
							 | 
						||
| 
								 | 
							
													       all-inline-children)))
							 | 
						||
| 
								 | 
							
												  (node-list-first all-inline-children)
							 | 
						||
| 
								 | 
							
												  (empty-node-list)))
							 | 
						||
| 
								 | 
							
									 (inline-children     (if (node-list-empty? leading-abbrev)
							 | 
						||
| 
								 | 
							
												  all-inline-children
							 | 
						||
| 
								 | 
							
												  (node-list-rest all-inline-children)))
							 | 
						||
| 
								 | 
							
									 (has-leading-abbrev? (not (node-list-empty? leading-abbrev)))
							 | 
						||
| 
								 | 
							
									 (xreflabel           (if (or has-leading-abbrev? biblio-number)
							 | 
						||
| 
								 | 
							
												  #f
							 | 
						||
| 
								 | 
							
												  (attribute-string (normalize "xreflabel")))))
							 | 
						||
| 
								 | 
							
								    (if (bibliography-table)
							 | 
						||
| 
								 | 
							
									(table-bibliomixed xreflabel leading-abbrev inline-children)
							 | 
						||
| 
								 | 
							
									(nontable-bibliomixed xreflabel leading-abbrev inline-children))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								;; ....................... BIBLIOGRAPHY ELEMENTS .......................
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								;; These are element construction rules for bibliography elements that 
							 | 
						||
| 
								 | 
							
								;; may occur outside of a BIBLIOENTRY or BIBLIOMIXED.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element bibliomisc (process-children))
							 | 
						||
| 
								 | 
							
								(element bibliomset (process-children))
							 | 
						||
| 
								 | 
							
								(element biblioset (process-children))
							 | 
						||
| 
								 | 
							
								(element bookbiblio (process-children))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element street ($charseq$))
							 | 
						||
| 
								 | 
							
								(element pob ($charseq$))
							 | 
						||
| 
								 | 
							
								(element postcode ($charseq$))
							 | 
						||
| 
								 | 
							
								(element city ($charseq$))
							 | 
						||
| 
								 | 
							
								(element state ($charseq$))
							 | 
						||
| 
								 | 
							
								(element country ($charseq$))
							 | 
						||
| 
								 | 
							
								(element phone ($charseq$))
							 | 
						||
| 
								 | 
							
								(element fax ($charseq$))
							 | 
						||
| 
								 | 
							
								(element otheraddr ($charseq$))
							 | 
						||
| 
								 | 
							
								(element affiliation ($charseq$))
							 | 
						||
| 
								 | 
							
								(element shortaffil ($charseq$))
							 | 
						||
| 
								 | 
							
								(element jobtitle ($charseq$))
							 | 
						||
| 
								 | 
							
								(element orgdiv ($charseq$))
							 | 
						||
| 
								 | 
							
								(element artpagenums ($charseq$))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element author
							 | 
						||
| 
								 | 
							
								  (make sequence
							 | 
						||
| 
								 | 
							
								    (literal (author-list-string))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element authorgroup (process-children))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element collab (process-children))
							 | 
						||
| 
								 | 
							
								(element collabname ($charseq$))
							 | 
						||
| 
								 | 
							
								(element authorinitials ($charseq$))
							 | 
						||
| 
								 | 
							
								(element confgroup (process-children))
							 | 
						||
| 
								 | 
							
								(element confdates ($charseq$))
							 | 
						||
| 
								 | 
							
								(element conftitle ($charseq$))
							 | 
						||
| 
								 | 
							
								(element confnum ($charseq$))
							 | 
						||
| 
								 | 
							
								(element confsponsor ($charseq$))
							 | 
						||
| 
								 | 
							
								(element contractnum ($charseq$))
							 | 
						||
| 
								 | 
							
								(element contractsponsor ($charseq$))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element copyright
							 | 
						||
| 
								 | 
							
								  (make sequence
							 | 
						||
| 
								 | 
							
								    (literal (gentext-element-name (gi (current-node))))
							 | 
						||
| 
								 | 
							
								    (make entity-ref name: "nbsp")
							 | 
						||
| 
								 | 
							
								    (dingbat-sosofo "copyright")
							 | 
						||
| 
								 | 
							
								    (make entity-ref name: "nbsp")
							 | 
						||
| 
								 | 
							
								    (process-children)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element year
							 | 
						||
| 
								 | 
							
								  (make sequence
							 | 
						||
| 
								 | 
							
								    (process-children)
							 | 
						||
| 
								 | 
							
								    (if (not (last-sibling? (current-node)))
							 | 
						||
| 
								 | 
							
									(literal ", ")
							 | 
						||
| 
								 | 
							
									(literal " "))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element holder ($charseq$))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element corpauthor
							 | 
						||
| 
								 | 
							
								  (make sequence
							 | 
						||
| 
								 | 
							
								    (literal (author-list-string))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element corpname ($charseq$))
							 | 
						||
| 
								 | 
							
								(element date ($charseq$))
							 | 
						||
| 
								 | 
							
								(element edition ($charseq$))
							 | 
						||
| 
								 | 
							
								(element editor ($charseq$))
							 | 
						||
| 
								 | 
							
								(element isbn ($charseq$))
							 | 
						||
| 
								 | 
							
								(element issn ($charseq$))
							 | 
						||
| 
								 | 
							
								(element invpartnumber ($charseq$))
							 | 
						||
| 
								 | 
							
								(element issuenum ($charseq$))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element legalnotice ($semiformal-object$))
							 | 
						||
| 
								 | 
							
								(element (legalnotice title) (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element modespec (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element orgname ($charseq$))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element othercredit
							 | 
						||
| 
								 | 
							
								  (make sequence
							 | 
						||
| 
								 | 
							
								    (literal (author-list-string))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element pagenums ($charseq$))
							 | 
						||
| 
								 | 
							
								(element contrib ($charseq$))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element firstname ($charseq$))
							 | 
						||
| 
								 | 
							
								(element honorific ($charseq$))
							 | 
						||
| 
								 | 
							
								(element lineage ($charseq$))
							 | 
						||
| 
								 | 
							
								(element othername ($charseq$))
							 | 
						||
| 
								 | 
							
								(element surname ($charseq$))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element printhistory (empty-sosofo))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (element productname
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      ($charseq$)
							 | 
						||
| 
								 | 
							
								; this is actually a problem since "trade" is the default value for
							 | 
						||
| 
								 | 
							
								; the class attribute. we can put this back in in DocBook 5.0, when
							 | 
						||
| 
								 | 
							
								; class becomes #IMPLIED
							 | 
						||
| 
								 | 
							
								;      (if (equal? (attribute-string "class") (normalize "trade"))
							 | 
						||
| 
								 | 
							
								;	  (dingbat-sosofo "trademark")
							 | 
						||
| 
								 | 
							
								;	  (empty-sosofo))
							 | 
						||
| 
								 | 
							
								      ))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element productnumber ($charseq$))
							 | 
						||
| 
								 | 
							
								(element pubdate ($charseq$))
							 | 
						||
| 
								 | 
							
								(element publisher (process-children))
							 | 
						||
| 
								 | 
							
								(element publishername ($charseq$))
							 | 
						||
| 
								 | 
							
								(element pubsnumber ($charseq$))
							 | 
						||
| 
								 | 
							
								(element releaseinfo (empty-sosofo))
							 | 
						||
| 
								 | 
							
								(element revision ($charseq$))
							 | 
						||
| 
								 | 
							
								(element revnumber ($charseq$))
							 | 
						||
| 
								 | 
							
								(element revremark ($charseq$))
							 | 
						||
| 
								 | 
							
								(element revdescription ($block-container$))
							 | 
						||
| 
								 | 
							
								(element seriesvolnums ($charseq$))
							 | 
						||
| 
								 | 
							
								(element volumenum ($charseq$))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element (bookbiblio revhistory) ($book-revhistory$))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								;; The (element (bookinfo revhistory)) construction rule is in dbinfo.dsl
							 | 
						||
| 
								 | 
							
								;; It calls $book-revhistory$...
							 | 
						||
| 
								 | 
							
								(define ($book-revhistory$)
							 | 
						||
| 
								 | 
							
								  (make element gi: "DIV"
							 | 
						||
| 
								 | 
							
									attributes: (list
							 | 
						||
| 
								 | 
							
										     (list "CLASS" (gi)))
							 | 
						||
| 
								 | 
							
									(make element gi: "TABLE"
							 | 
						||
| 
								 | 
							
									      attributes: (list
							 | 
						||
| 
								 | 
							
											   (list "WIDTH" ($table-width$))
							 | 
						||
| 
								 | 
							
											   (list "BORDER" "0"))
							 | 
						||
| 
								 | 
							
									      (make sequence
							 | 
						||
| 
								 | 
							
										(make element gi: "TR"
							 | 
						||
| 
								 | 
							
										      (make element gi: "TH"
							 | 
						||
| 
								 | 
							
											    attributes: '(("ALIGN" "LEFT") 
							 | 
						||
| 
								 | 
							
													  ("VALIGN" "TOP")
							 | 
						||
| 
								 | 
							
													  ("COLSPAN" "3"))
							 | 
						||
| 
								 | 
							
											    (make element gi: "B"
							 | 
						||
| 
								 | 
							
												  (literal (gentext-element-name 
							 | 
						||
| 
								 | 
							
													    (gi (current-node)))))))
							 | 
						||
| 
								 | 
							
									      (process-children)))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element (revhistory revision)
							 | 
						||
| 
								 | 
							
								  (let ((revnumber (select-elements (descendants (current-node))
							 | 
						||
| 
								 | 
							
												    (normalize "revnumber")))
							 | 
						||
| 
								 | 
							
									(revdate   (select-elements (descendants (current-node))
							 | 
						||
| 
								 | 
							
												    (normalize "date")))
							 | 
						||
| 
								 | 
							
									(revauthor (select-elements (descendants (current-node))
							 | 
						||
| 
								 | 
							
												    (normalize "authorinitials")))
							 | 
						||
| 
								 | 
							
									(revremark (node-list-filter-by-gi
							 | 
						||
| 
								 | 
							
										    (descendants (current-node))
							 | 
						||
| 
								 | 
							
										    (list (normalize "revremark")
							 | 
						||
| 
								 | 
							
											  (normalize "revdescription")))))
							 | 
						||
| 
								 | 
							
								    (make sequence
							 | 
						||
| 
								 | 
							
								      (make element gi: "TR"
							 | 
						||
| 
								 | 
							
									(make element gi: "TD"
							 | 
						||
| 
								 | 
							
									      attributes: (list
							 | 
						||
| 
								 | 
							
											   (list "ALIGN" "LEFT"))
							 | 
						||
| 
								 | 
							
									      (if (not (node-list-empty? revnumber))
							 | 
						||
| 
								 | 
							
										  (make sequence
							 | 
						||
| 
								 | 
							
										    (literal (gentext-element-name-space 
							 | 
						||
| 
								 | 
							
											      (gi (current-node))))
							 | 
						||
| 
								 | 
							
										    (process-node-list revnumber))
							 | 
						||
| 
								 | 
							
										  (empty-sosofo)))
							 | 
						||
| 
								 | 
							
									(make element gi: "TD"
							 | 
						||
| 
								 | 
							
									      attributes: (list
							 | 
						||
| 
								 | 
							
											   (list "ALIGN" "LEFT"))
							 | 
						||
| 
								 | 
							
									      (if (not (node-list-empty? revdate))
							 | 
						||
| 
								 | 
							
										  (process-node-list revdate)
							 | 
						||
| 
								 | 
							
										  (empty-sosofo)))
							 | 
						||
| 
								 | 
							
									(make element gi: "TD"
							 | 
						||
| 
								 | 
							
									      attributes: (list
							 | 
						||
| 
								 | 
							
											   (list "ALIGN" "LEFT"))
							 | 
						||
| 
								 | 
							
									      (if (not (node-list-empty? revauthor))
							 | 
						||
| 
								 | 
							
										  (make sequence
							 | 
						||
| 
								 | 
							
										    (literal (gentext-revised-by))
							 | 
						||
| 
								 | 
							
										    (process-node-list revauthor))
							 | 
						||
| 
								 | 
							
										  (empty-sosofo))))
							 | 
						||
| 
								 | 
							
									(make element gi: "TR"
							 | 
						||
| 
								 | 
							
									    (make element gi: "TD"
							 | 
						||
| 
								 | 
							
										  attributes: (list
							 | 
						||
| 
								 | 
							
											       (list "ALIGN" "LEFT")
							 | 
						||
| 
								 | 
							
											       (list "COLSPAN" "3"))
							 | 
						||
| 
								 | 
							
										  (if (not (node-list-empty? revremark))
							 | 
						||
| 
								 | 
							
										      (process-node-list revremark)
							 | 
						||
| 
								 | 
							
										      (empty-sosofo)))))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(element (revision revnumber) (process-children-trim))
							 | 
						||
| 
								 | 
							
								(element (revision date) (process-children-trim))
							 | 
						||
| 
								 | 
							
								(element (revision authorinitials) (process-children-trim))
							 | 
						||
| 
								 | 
							
								(element (revision revremark) (process-children-trim))
							 |