diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/01_raw/tree.xsl | 51 | ||||
-rw-r--r-- | source/02_data/branches.xsl | 84 | ||||
-rw-r--r-- | source/02_data/leaves.xsl | 34 | ||||
-rw-r--r-- | source/03_meta/meta.xsl | 29 | ||||
-rw-r--r-- | source/99_result/branches.xsl | 61 | ||||
-rw-r--r-- | source/99_result/leaves.xsl | 37 | ||||
-rw-r--r-- | source/99_result/main.css | 73 | ||||
-rw-r--r-- | source/99_result/media/favicon.ico | bin | 0 -> 1150 bytes |
8 files changed, 369 insertions, 0 deletions
diff --git a/source/01_raw/tree.xsl b/source/01_raw/tree.xsl new file mode 100644 index 0000000..f54157b --- /dev/null +++ b/source/01_raw/tree.xsl @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet + version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xalan="http://xml.apache.org/xalan" + xmlns:InputXSLT="function.inputxslt.application" + exclude-result-prefixes="xalan InputXSLT" +> + +<xsl:include href="[utility/formatter.xsl]"/> +<xsl:include href="[utility/datasource.xsl]"/> + +<xsl:variable name="meta"> + <datasource type="main" mode="xpath" source="$source_tree/directory[@name = '00_content']/directory" target="files"/> + <target mode="plain" value="tree.xml"/> +</xsl:variable> + +<xsl:template match="@*|node()" mode="tree"> + <xsl:copy> + <xsl:apply-templates select="@*|node()"/> + </xsl:copy> +</xsl:template> + +<xsl:template match="file[@extension = '.md']" mode="tree"> + <xsl:variable name="content"> + <xsl:call-template name="formatter"> + <xsl:with-param name="source" select="InputXSLT:read-file(./full)/text()"/> + </xsl:call-template> + </xsl:variable> + + <leaf name="{@name}"> + <title> + <xsl:value-of select="xalan:nodeset($content)/h1"/> + </title> + <content> + <xsl:copy-of select="xalan:nodeset($content)/*[name() != 'h1']"/> + </content> + </leaf> +</xsl:template> + +<xsl:template match="directory" mode="tree"> + <branch name="{@name}"> + <xsl:apply-templates select="node()" mode="tree"/> + </branch> +</xsl:template> + +<xsl:template match="files/directory[@name = 'tree']"> + <xsl:apply-templates select="node()" mode="tree"/> +</xsl:template> + +</xsl:stylesheet> diff --git a/source/02_data/branches.xsl b/source/02_data/branches.xsl new file mode 100644 index 0000000..ce661cc --- /dev/null +++ b/source/02_data/branches.xsl @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet + version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xalan="http://xml.apache.org/xalan" + xmlns:InputXSLT="function.inputxslt.application" + exclude-result-prefixes="xalan InputXSLT" +> + +<xsl:include href="[utility/datasource.xsl]"/> + +<xsl:variable name="meta"> + <datasource type="main" mode="full" source="01_raw/tree.xml" target="tree"/> + <target mode="plain" value="branches.xml"/> +</xsl:variable> + +<xsl:template match="branch | leaf" mode="serialize"> + <xsl:apply-templates select="parent::branch" mode="serialize"/> + <xsl:text>/</xsl:text> + <xsl:value-of select="@name"/> +</xsl:template> + +<xsl:template match="@*|node()" mode="include"> + <xsl:copy> + <xsl:apply-templates select="@*|node()" mode="include"/> + </xsl:copy> +</xsl:template> + +<xsl:template match="leaf" mode="include"> + <xsl:apply-templates select="node()" mode="include"/> +</xsl:template> + +<xsl:template match="leaf" mode="digest"> + <node name="{@name}"> + <title> + <xsl:value-of select="title"/> + </title> + <digest size="{string-length(content/p[normalize-space(.)][1])}"> + <xsl:copy-of select="content/p[normalize-space(.)][1]/node()"/> + </digest> + </node> +</xsl:template> + +<xsl:template match="leaf"> + <xsl:variable name="name" select="@name"/> + + <xsl:if test="not(preceding-sibling::branch[@name = $name])"> + <xsl:apply-templates select="." mode="digest"/> + </xsl:if> +</xsl:template> + +<xsl:template match="branch" mode="digest"> + <xsl:variable name="name" select="@name"/> + + <xsl:apply-templates select="following-sibling::leaf[@name = $name]" mode="digest"/> +</xsl:template> + +<xsl:template match="branch"> + <xsl:variable name="path"> + <xsl:apply-templates select="." mode="serialize"/> + </xsl:variable> + + <entry handle="{$path}"> + <xsl:variable name="name" select="@name"/> + + <payload> + <xsl:apply-templates select="following-sibling::leaf[@name = $name]" mode="include"/> + </payload> + + <branches> + <xsl:apply-templates select="branch" mode="digest"/> + </branches> + + <leaves> + <xsl:apply-templates select="leaf"/> + </leaves> + </entry> +</xsl:template> + +<xsl:template match="tree"> + <xsl:apply-templates select="//branch"/> +</xsl:template> + +</xsl:stylesheet> diff --git a/source/02_data/leaves.xsl b/source/02_data/leaves.xsl new file mode 100644 index 0000000..81ba8f3 --- /dev/null +++ b/source/02_data/leaves.xsl @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet + version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xalan="http://xml.apache.org/xalan" + xmlns:InputXSLT="function.inputxslt.application" + exclude-result-prefixes="xalan InputXSLT" +> + +<xsl:include href="[utility/datasource.xsl]"/> + +<xsl:variable name="meta"> + <datasource type="main" mode="full" source="01_raw/tree.xml" target="tree"/> + <target mode="plain" value="leaves.xml"/> +</xsl:variable> + +<xsl:template match="branch | leaf" mode="serialize"> + <xsl:apply-templates select="parent::branch" mode="serialize"/> + <xsl:text>/</xsl:text> + <xsl:value-of select="@name"/> +</xsl:template> + +<xsl:template match="tree//leaf[not(preceding-sibling::branch[@name = current()/@name])]"> + <xsl:variable name="path"> + <xsl:apply-templates select="." mode="serialize"/> + </xsl:variable> + + <entry handle="{$path}"> + <xsl:copy-of select="title"/> + <xsl:copy-of select="content"/> + </entry> +</xsl:template> + +</xsl:stylesheet> diff --git a/source/03_meta/meta.xsl b/source/03_meta/meta.xsl new file mode 100644 index 0000000..c2bd107 --- /dev/null +++ b/source/03_meta/meta.xsl @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet + version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +> + +<xsl:include href="[utility/datasource.xsl]"/> + +<xsl:variable name="meta"> + <datasource type="main" mode="full" source="00_content/meta.xml" target="meta"/> + <datasource type="support" mode="full" source="02_data/leaves.xml" target="leaves"/> + <target mode="plain" value="meta.xml"/> +</xsl:variable> + +<xsl:template match="meta"> + <xsl:copy-of select="*"/> +</xsl:template> + +<xsl:template match="leaves/entry"> + <entry handle="{@handle}"/> +</xsl:template> + +<xsl:template match="leaves"> + <leaves> + <xsl:apply-templates select="entry"/> + </leaves> +</xsl:template> + +</xsl:stylesheet> diff --git a/source/99_result/branches.xsl b/source/99_result/branches.xsl new file mode 100644 index 0000000..86467ef --- /dev/null +++ b/source/99_result/branches.xsl @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet + version="1.0" + xmlns="http://www.w3.org/1999/xhtml" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xalan="http://xml.apache.org/xalan" + exclude-result-prefixes="xalan" +> + +<xsl:include href="[utility/master.xsl]"/> +<xsl:include href="[utility/xhtml.xsl]"/> + +<xsl:variable name="meta"> + <datasource type="main" mode="iterate" source="02_data/branches.xml" target="branch"/> + <datasource type="support" mode="full" source="03_meta/meta.xml" target="meta"/> + <target mode="xpath" value="concat($datasource/branch/entry/@handle, '/index.html')"/> +</xsl:variable> + +<xsl:template name="title-text"> + <xsl:value-of select="/datasource/branch/entry/@handle"/> +</xsl:template> + +<xsl:template match="branch/entry"> + <div class="article"> + <h2> + <xsl:text>» </xsl:text> + <a href="{@handle}"> + <xsl:value-of select="payload/title"/> + </a> + </h2> + <p class="info"/> + + <xsl:apply-templates select="payload/content/node()" mode="xhtml"/> + </div> + + <div class="columns"> + <ul class="prettylist"> + <xsl:apply-templates select="branches/node"> + <xsl:sort select="digest/@size" data-type="number" order="descending"/> + </xsl:apply-templates> + + <xsl:apply-templates select="leaves/node"> + <xsl:sort select="digest/@size" data-type="number" order="descending"/> + </xsl:apply-templates> + </ul> + </div> +</xsl:template> + +<xsl:template match="entry/*/node"> + <li> + <em>»</em> + <a href="{@name}/index.html"> + <strong><xsl:value-of select="title"/></strong> + <p> + <xsl:apply-templates select="digest/node()" mode="xhtml"/> + </p> + </a> + </li> +</xsl:template> + +</xsl:stylesheet> diff --git a/source/99_result/leaves.xsl b/source/99_result/leaves.xsl new file mode 100644 index 0000000..3f22aa1 --- /dev/null +++ b/source/99_result/leaves.xsl @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet + version="1.0" + xmlns="http://www.w3.org/1999/xhtml" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xalan="http://xml.apache.org/xalan" + exclude-result-prefixes="xalan" +> + +<xsl:include href="[utility/master.xsl]"/> +<xsl:include href="[utility/xhtml.xsl]"/> + +<xsl:variable name="meta"> + <datasource type="main" mode="iterate" source="02_data/leaves.xml" target="leaf"/> + <datasource type="support" mode="full" source="03_meta/meta.xml" target="meta"/> + <target mode="xpath" value="concat($datasource/leaf/entry/@handle, '/index.html')"/> +</xsl:variable> + +<xsl:template name="title-text"> + <xsl:value-of select="/datasource/leaf/entry/@handle"/> +</xsl:template> + +<xsl:template match="leaf/entry"> + <div class="article"> + <h2> + <xsl:text>» </xsl:text> + <a href="{@handle}"> + <xsl:value-of select="title"/> + </a> + </h2> + <p class="info"/> + + <xsl:apply-templates select="content/node()" mode="xhtml"/> + </div> +</xsl:template> + +</xsl:stylesheet> diff --git a/source/99_result/main.css b/source/99_result/main.css new file mode 100644 index 0000000..ec95157 --- /dev/null +++ b/source/99_result/main.css @@ -0,0 +1,73 @@ +body{margin:0;padding:0;font:1em sans-serif;color:#272828;word-wrap:break-word} +a, a:visited{text-decoration:underline;color:#272828} +a:hover{color:black} +h1, h2{margin:0;color:#272828;font-weight:bold} +h1 a, h2 a{text-decoration:none} +p{margin:0 0 .5em 0;text-align:justify;line-height:1.75em} +ul{margin:0;padding:0;list-style:none} +blockquote{border-left:.4em solid #e3e8e8;margin-left:0;padding-left:1em} +pre{font-family:monospace;padding:1em;border-radius:.75em;color:#f8f8f2;background:#272822;white-space:pre-wrap} +code{font-family:monospace;margin:0 .1em;padding:0 .5em;border:.1em solid #e3e8e8;background-color:#f8f8f8;border-radius:.3em} +.full{width:100%} +.center{width:45em;margin:0 auto;overflow:hidden} +.border_bottom{border-bottom:.3em solid #e3e8e8} +.border_top{border-top:.3em solid #e3e8e8} +#navigation{padding:2em 0 0 0} +#navigation h1{font-size:1.1em;line-height:1.5em;font-weight:bold;float:left;padding:0 .2em 0 0;margin:0} +#navigation ul{float:right;font-size:1.1em} +#content p{margin-bottom:.7em;text-align:justify} +#content h2{font-size:1.4em;margin:0;color:#F80} +#content h2 a, h2 span{font-size:.8em;text-decoration:none !important;color:#272828;font-weight:normal;display:inline-block;vertical-align:middle;max-width:95%} +#content h2 a:hover{text-decoration:underline !important} +#content h3, #content h4{font-size:1.05em;font-weight:normal;padding-bottom:.2em;margin:.8em 0 .5em 0;border-bottom:.1em solid #e3e8e8} +#content .article{border-bottom:.3em dotted #e3e8e8;padding-bottom:.5em;margin-top:1em;text-align:justify} +#content .article:last-child{border:none} +#content .article a{text-decoration:underline;color:#272828} +#content .article a:hover{color:black} +#content .article ul{float:none;margin-left:2em;text-align:left} +#content .article ul li{list-style-type:circle;float:none} +#content .article ul li a{background:0} +#content .article .info{font-size:.9em;margin-bottom:.5em;margin-left:1.4em} +#content .article .info a{text-decoration:none;color:#272828} +#content .article .info a:hover{text-decoration:underline} +#content .article table{border-collapse:collapse;border-left:.4em solid #e3e8e8;margin:1em} +#content .article table thead{border-bottom:.1em solid #272828} +#content .article table tr{border-bottom:.1em solid #272828} +#content .article table tr:last-child{border-bottom:0} +#content .article table tr th{font-weight:normal;padding:.2em 1em} +#content .article table tr td{padding:.2em 1em} +#content .footnotes {border-top:.3em dotted #e3e8e8} +#content img{padding:.2em;border:.1em solid #e3e8e8;display:block;margin-left:auto;margin-right:auto;max-width:95%} +#content img.clear{border:0;max-width:100%} +#content p.math{padding:0.5em;line-height:0;text-align:center} +#content span.math{line-height:0} +#footer{padding-top:.3em} +#footer a{text-decoration:none;color:#272828} +#footer a:hover{text-decoration:underline} +#footer ul{float:right;padding:0} +.columns{column-count:2;-moz-column-count:2;-webkit-column-count:2;column-gap:1em;-moz-column-gap:1em;-webkit-column-gap:1em} +.column{-webkit-column-break-inside:avoid;break-inside:avoid-column;overflow:hidden} +.buttonlist{overflow:hidden} +.buttonlist li{float:left;background:#e3e8e8;border-radius:.3em;padding:.2em;margin:0 0 .2em .2em} +.buttonlist li a{text-decoration:none;color:#272828;} +.buttonlist li a:hover{text-decoration:underline} +.prettylist li{display:inline-block;padding:.5em 0} +.prettylist li a{margin-left:.2em;color:#272828;text-decoration:none} +.prettylist li a:hover{text-decoration:underline} +.prettylist li p{margin:0 !important} +.prettylist li em{font-style:normal;font-size:1.4em;color:#F80} +.prettylist li p em{font-style:italic;color:#272828;font-size:1em} +.menuhead{border-bottom:0.1em solid #e3e8e8;overflow:hidden;padding:0;margin-top:0.8em} +.menuhead h3{float:left;padding:0.4em 0 0 0;margin:0 !important;border:none !important} +.menuhead ul{float:right;padding:0;font-size:1.1em} +@media screen and (max-width:46em){ + #content .article h2 a{max-width:90%} + #navigation{padding:.3em 0 0 0} + .center{width:98%} + .columns{column-count:1;-moz-column-count:1;-webkit-column-count:1} + .column{width:100%} +} +@media screen and (max-width:30em){ + #navigation h1{float:none} + #navigation ul{float:none} +} diff --git a/source/99_result/media/favicon.ico b/source/99_result/media/favicon.ico Binary files differnew file mode 100644 index 0000000..f5a9ac4 --- /dev/null +++ b/source/99_result/media/favicon.ico |