<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
<!ENTITY docbook.dsl SYSTEM "@DOCBOOK_HTML@" CDATA DSSSL>
<!ENTITY html-common.dsl SYSTEM "@srcdir@/html-common.dsl">
<!ENTITY version.dsl SYSTEM "@srcdir@/version.dsl">
<!-- these files are generated, so they are not in @srcdir@ -->
<!ENTITY html-locale.dsl SYSTEM "html-locale.dsl">
<!ENTITY common.dsl SYSTEM "common.dsl">
]>

<!--

  $Id: howto-php.dsl.in,v 1.1 2007/01/22 14:09:55 bjori Exp $

  HTML-specific stylesheet customization for the PHPDOC howto.

-->

<style-sheet>
<style-specification id="docbook-php-html" use="docbook">
<style-specification-body>

(define %html-ext% ".php")
(define %output-dir% "howto/php")

(define %generate-article-toc%
  ;; Should a Table of Contents be produced for Articles?
  #t)

;; Uncommented, because generates a warning
;;(define (toc-depth nd)
;;  2)

(define %section-autolabel%
  ;; Are sections enumerated?
  #t)
  
;; Retrieves a node's title from the XML source. Parameters are
;; the current node and title element's name (unused)
(define (docweb-node-title #!optional (nd (current-node)) (title-elem "title"))
	(let*
		(
			(preferred-title-node
				(cond
					;; For "refentry"s search for the first (and only one)
					;; "refname" from the children list of "refnamediv" childrens.
					(
						(equal? (gi nd) "refentry")
							(node-list-first
								(select-elements
									(children
										(select-elements (children nd) "refnamediv")
									)
									"refname"
								)
							)
						)
					;; For other nodes, just select the first children node
					(else
						(node-list-first
							(select-elements (children nd) title-elem)
						)
					)
				)
			)
			;; The title node is the preferred title node, or if
			;; it cannot be find, then then "title" children
			(title-node
				(if (node-list-empty? preferred-title-node)
					(select-elements (children nd) "title")
					preferred-title-node
				)
			)
		)
		(data title-node)
	)
)

;; Quotes a string to be inserted to a single quoted string
(define (docweb-quote str)
	(string-replace str "'" "\\'")
)

;; Prints out a PHP file header. Parameter is the current node (unused)
(define (docweb-header #!optional (nd (current-node)))
	(php-code
		(string-append
			newline
			"require_once dirname(__FILE__) . '/../../include/init.inc.php';" newline
			"echo site_header('" (docweb-quote (docweb-node-title nd)) "');" newline
		)
	)
)

;; Prints out manual footer PHP code. Parameter is the current node (unused)
(define (docweb-footer #!optional (nd (current-node)))
	(php-code
		(string-append
			"echo site_footer();" newline
		)
	)
)

;; Defines the format of all the output files
;; generated for phpweb display. Parameters are the
;; title sequence and the body sequence.
(define (html-document title-sosofo body-sosofo)
	(let*
		(
			(prev         (prev-chunk-element))
			(next         (next-chunk-element))
			(prevm        (prev-major-component-chunk-element))
			(nextm        (next-major-component-chunk-element))
			(doc-sosofo 
				(if (or (chunk?) (node-list=? (current-node) (sgml-root-element)))
					(make sequence
						(docweb-header (current-node))
						body-sosofo
						(footer-navigation (current-node) (list prev next prevm nextm))
						(docweb-footer (current-node))
					)
					body-sosofo
				)
			)
		)
		(if (chunk?)
			(make
				entity
				system-id: (html-entity-file (html-file))
				doc-sosofo
			)
			doc-sosofo
		)
	)
)

&html-common.dsl;
&html-locale.dsl;
&common.dsl;
&version.dsl;

</style-specification-body>
</style-specification>

<external-specification id="docbook" document="docbook.dsl">

</style-sheet>
