summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Jamfile.jam2
-rw-r--r--Jamrules.jam21
-rw-r--r--docs/manual.qbk11
-rw-r--r--docs/manual.xsl95
4 files changed, 120 insertions, 9 deletions
diff --git a/Jamfile.jam b/Jamfile.jam
index b636025..9bba987 100644
--- a/Jamfile.jam
+++ b/Jamfile.jam
@@ -105,7 +105,7 @@ for CONFIG in $(CONFIGURATIONS)
}
# documentation
-Documentation docs/manual.html : docs/manual.qbk ;
+Documentation docs/manual.html : docs/manual.qbk : docs/manual.xsl ;
Alias docs : docs/manual.html ;
diff --git a/Jamrules.jam b/Jamrules.jam
index 1efd90c..202d583 100644
--- a/Jamrules.jam
+++ b/Jamrules.jam
@@ -486,9 +486,12 @@ actions QuickbookAction
%QUICKBOOK_PATH%\bin\quickbook.exe --output-file $(<) --input-file $(>) >nul
}
-actions XSLTProcAction
+actions response XSLTProcAction
{
- %QUICKBOOK_PATH%\bin\xsltproc.exe --path$(SPACE)$(XSLPATH:C) --stringparam$(SPACE)$(XSLPARAM) --output $(<) $(XSL) $(>)
+ %QUICKBOOK_PATH%\bin\xsltproc.exe --path$(SPACE)$(XSLPATH:C) --stringparam$(SPACE)$(XSLPARAM) --output $(<) @(<?xml version="1.0"?>
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+ <xsl:import$(SPACE)href="file:///$(XSL:/)"$(SPACE)/>
+ </xsl:stylesheet>) $(>)
}
rule MakeFileDir TARGET
@@ -616,7 +619,13 @@ rule QuickbookImport SOURCE : IMPORT
Includes $(SOURCE) : $(SOURCE:D)/$(IMPORT) ;
}
-rule Documentation TARGET : SOURCE
+rule FullPath FILE
+{
+ local PWD = [ Subst [ Shell "cd" ] : "%c" : "" ] ;
+ return "$(PWD)/$(FILE)" ;
+}
+
+rule Documentation TARGET : SOURCE : STYLESHEET
{
# escape colon with %3A because colon is a path list separator
local XSLDIR = [ Subst $(QUICKBOOK_PATH) : ":" : "%%%%3A" ] ;
@@ -635,7 +644,7 @@ rule Documentation TARGET : SOURCE
# boostbook -> docbook
local DOCBOOK = $(BUILD)/$(SOURCE:S=.db.xml) ;
- XSL on $(DOCBOOK) = $(XSLDIR)/boostbook/xsl/docbook.xsl ;
+ XSL on $(DOCBOOK) = $(QUICKBOOK_PATH)/boostbook/xsl/docbook.xsl ;
XSLPATH on $(DOCBOOK) = $(XSLDIR)/boostbook/dtd $(XSLDIR)/docbook-xml ;
XSLTProcAction $(DOCBOOK) : $(BOOSTBOOK) ;
Depends $(DOCBOOK) : $(BOOSTBOOK) ;
@@ -643,7 +652,7 @@ rule Documentation TARGET : SOURCE
# docbook -> html
local HTML = $(TARGET) ;
- XSL on $(HTML) = $(XSLDIR)/boostbook/xsl/html.xsl ;
+ XSL on $(HTML) = $(QUICKBOOK_PATH)/boostbook/xsl/html.xsl [ FullPath $(STYLESHEET) ] ;
XSLPATH on $(HTML) = $(XSLDIR)/docbook-xml $(XSLDIR)/docbook-xsl/html $(XSLDIR)/docbook-xsl/lib ;
XSLPARAM on $(HTML) =
@@ -657,5 +666,5 @@ rule Documentation TARGET : SOURCE
;
XSLTProcAction $(HTML) : $(DOCBOOK) ;
- Depends $(HTML) : $(DOCBOOK) ;
+ Depends $(HTML) : $(DOCBOOK) $(STYLESHEET) ;
}
diff --git a/docs/manual.qbk b/docs/manual.qbk
index f110503..5b7b5f9 100644
--- a/docs/manual.qbk
+++ b/docs/manual.qbk
@@ -1,4 +1,4 @@
-[article pugixml
+[book pugixml
[quickbook 1.5]
[version 0.9]
@@ -23,7 +23,7 @@ pugixml enables very fast, convenient and memory-efficient XML document processi
This is the complete user manual for pugixml, which describes all features of the library in detail. If you want to start writing code as quickly as possible, you are advised to [@quickstart.html read the quick start guide first].
-[note No documentation is perfect, neither is this one. If you encounter a description that is unclear, please file an issue as described in [sref manual.overview.feedback]. Also if you can spare the time for a full proof-reading, including spelling and grammar, that would be great! Please send me an e-mail; as a token of appreciation, your name will be put into the corresponding section of this documentation.]
+[note No documentation is perfect, neither is this one. If you encounter a description that is unclear, please file an issue as described in [sref manual.overview.feedback]. Also if you can spare the time for a full proof-reading, including spelling and grammar, that would be great! Please [link email send me an e-mail]; as a token of appreciation, your name will be included into the [link manual.overview.thanks corresponding section] of this documentation.]
[endsect] [/introduction]
@@ -1996,3 +1996,10 @@ Functions:
* [link set_memory_management_functions]
[endsect] [/apiref]
+
+[section:toc Table of contents]
+
+toc-placeholder
+
+[endsect] [/toc]
+
diff --git a/docs/manual.xsl b/docs/manual.xsl
new file mode 100644
index 0000000..60e99b2
--- /dev/null
+++ b/docs/manual.xsl
@@ -0,0 +1,95 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+ <xsl:template name="navbar.section">
+ <xsl:param name="name" select="/foo" />
+ <xsl:param name="target" select="id($name)" />
+ <xsl:param name="text" select="normalize-space($target/title)" />
+
+ <xsl:choose>
+ <xsl:when test="@id != $name">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target">
+ <xsl:with-param name="object" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:value-of select="$text" />
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$text" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="navbar.contents">
+ <xsl:value-of select="/*/title" /> user manual |
+ <xsl:call-template name="navbar.section"><xsl:with-param name="name" select="'manual.overview'" /></xsl:call-template> |
+ <xsl:call-template name="navbar.section"><xsl:with-param name="name" select="'manual.install'" /></xsl:call-template> |
+ Document:
+ <xsl:call-template name="navbar.section"><xsl:with-param name="name" select="'manual.dom'" /><xsl:with-param name="text" select="'Object model'" /></xsl:call-template>
+ <xsl:text disable-output-escaping="yes"> &amp;middot; </xsl:text>
+ <xsl:call-template name="navbar.section"><xsl:with-param name="name" select="'manual.loading'" /><xsl:with-param name="text" select="'Loading'" /></xsl:call-template>
+ <xsl:text disable-output-escaping="yes"> &amp;middot; </xsl:text>
+ <xsl:call-template name="navbar.section"><xsl:with-param name="name" select="'manual.access'" /><xsl:with-param name="text" select="'Accessing'" /></xsl:call-template>
+ <xsl:text disable-output-escaping="yes"> &amp;middot; </xsl:text>
+ <xsl:call-template name="navbar.section"><xsl:with-param name="name" select="'manual.modify'" /><xsl:with-param name="text" select="'Modifying'" /></xsl:call-template>
+ <xsl:text disable-output-escaping="yes"> &amp;middot; </xsl:text>
+ <xsl:call-template name="navbar.section"><xsl:with-param name="name" select="'manual.saving'" /><xsl:with-param name="text" select="'Saving'" /></xsl:call-template> |
+ <xsl:call-template name="navbar.section"><xsl:with-param name="name" select="'manual.xpath'" /></xsl:call-template> |
+ <xsl:call-template name="navbar.section"><xsl:with-param name="name" select="'manual.apiref'" /></xsl:call-template> |
+ <xsl:call-template name="navbar.section"><xsl:with-param name="name" select="'manual.toc'" /></xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="header.navigation">
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:param name="nav.context"/>
+
+ <table width="100%"><tr>
+ <td>
+ <xsl:call-template name="navbar.contents" />
+ </td>
+ <td width="*" align="right">
+ <xsl:call-template name="navbar.spirit">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="nav.context" select="$nav.context"/>
+ </xsl:call-template>
+ </td>
+
+ </tr></table>
+ <hr/>
+ </xsl:template>
+
+ <xsl:template name="footer.navigation">
+ <xsl:param name="prev" select="/foo"/>
+ <xsl:param name="next" select="/foo"/>
+ <xsl:param name="nav.context"/>
+
+ <hr/>
+ <table width="100%"><tr>
+ <td>
+ <xsl:call-template name="navbar.contents" />
+ </td>
+ <td width="*" align="right">
+ <xsl:call-template name="navbar.spirit">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="nav.context" select="$nav.context"/>
+ </xsl:call-template>
+ </td>
+
+ </tr></table>
+ </xsl:template>
+
+ <xsl:template match="section[@id='manual.toc']/para[normalize-space(text())='toc-placeholder']">
+ <!-- trick to switch context node to root element -->
+ <xsl:for-each select="/*">
+ <xsl:call-template name="component.toc">
+ <xsl:with-param name="toc.title.p" select="false()" />
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:template>
+</xsl:stylesheet>
+