]> granicus.if.org Git - docbook-dsssl/commitdiff
Initial support of syntax highlighting of programlistings.
authorJirka Kosek <jirka@kosek.cz>
Tue, 20 Jun 2006 22:26:59 +0000 (22:26 +0000)
committerJirka Kosek <jirka@kosek.cz>
Tue, 20 Jun 2006 22:26:59 +0000 (22:26 +0000)
18 files changed:
xsl/fo/highlight.xsl [new file with mode: 0644]
xsl/fo/param.ent
xsl/fo/param.xweb
xsl/fo/verbatim.xsl
xsl/highlighting/common.xsl [new file with mode: 0644]
xsl/highlighting/delphi-hl.xml [new file with mode: 0644]
xsl/highlighting/ini-hl.xml [new file with mode: 0644]
xsl/highlighting/java-hl.xml [new file with mode: 0644]
xsl/highlighting/m2-hl.xml [new file with mode: 0644]
xsl/highlighting/myxml-hl.xml [new file with mode: 0644]
xsl/highlighting/php-hl.xml [new file with mode: 0644]
xsl/highlighting/xslthl-config.xml [new file with mode: 0644]
xsl/html/highlight.xsl [new file with mode: 0644]
xsl/html/param.ent
xsl/html/param.xweb
xsl/html/verbatim.xsl
xsl/params/highlight.default.language.xml [new file with mode: 0644]
xsl/params/highlight.source.xml [new file with mode: 0644]

diff --git a/xsl/fo/highlight.xsl b/xsl/fo/highlight.xsl
new file mode 100644 (file)
index 0000000..3084369
--- /dev/null
@@ -0,0 +1,57 @@
+<?xml version='1.0'?>\r
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
+               xmlns:fo="http://www.w3.org/1999/XSL/Format"\r
+               xmlns:xslthl="http://xslthl.sf.net"\r
+                exclude-result-prefixes="xslthl"\r
+                version='1.0'>\r
+\r
+<!-- ********************************************************************\r
+     $Id: inline.xsl 5953 2006-05-08 04:23:10Z bobstayton $\r
+     ********************************************************************\r
+\r
+     This file is part of the XSL DocBook Stylesheet distribution.\r
+     See ../README or http://nwalsh.com/docbook/xsl/ for copyright\r
+     and other information.\r
+\r
+     ******************************************************************** -->\r
+\r
+<xsl:template match='xslthl:keyword'>\r
+  <fo:inline font-weight="bold"><xsl:apply-templates/></fo:inline>\r
+</xsl:template>\r
+\r
+<xsl:template match='xslthl:string'>\r
+  <fo:inline font-weight="bold" font-style="italic"><xsl:apply-templates/></fo:inline>\r
+</xsl:template>\r
+\r
+<xsl:template match='xslthl:comment'>\r
+  <fo:inline font-style="italic"><xsl:apply-templates/></fo:inline>\r
+</xsl:template>\r
+\r
+<xsl:template match='xslthl:tag'>\r
+  <fo:inline font-weight="bold"><xsl:apply-templates/></fo:inline>\r
+</xsl:template>\r
+\r
+<xsl:template match='xslthl:attribute'>\r
+  <fo:inline font-weight="bold"><xsl:apply-templates/></fo:inline>\r
+</xsl:template>\r
+\r
+<xsl:template match='xslthl:value'>\r
+  <fo:inline font-weight="bold"><xsl:apply-templates/></fo:inline>\r
+</xsl:template>\r
+\r
+<!--\r
+<xsl:template match='xslthl:html'>\r
+  <span style='background:#AFF'><font color='blue'><xsl:apply-templates/></font></span>\r
+</xsl:template>\r
+\r
+<xsl:template match='xslthl:xslt'>\r
+  <span style='background:#AAA'><font color='blue'><xsl:apply-templates/></font></span>\r
+</xsl:template>\r
+\r
+<xsl:template match='xslthl:section'>\r
+  <span style='background:yellow'><xsl:apply-templates/></span>\r
+</xsl:template>\r
+-->\r
+\r
+</xsl:stylesheet>\r
+\r
index c003ea464d43186698114cde60093ffc17d7e574..c97f8528836aadea12b4d00486c40cfeffbcad20 100644 (file)
@@ -81,6 +81,8 @@
 <!ENTITY header.column.widths SYSTEM "../params/header.column.widths.xml">
 <!ENTITY header.table.height SYSTEM "../params/header.table.height.xml">
 <!ENTITY headers.on.blank.pages SYSTEM "../params/headers.on.blank.pages.xml">
+<!ENTITY highlight.default.language SYSTEM "../params/highlight.default.language.xml"> 
+<!ENTITY highlight.source SYSTEM "../params/highlight.source.xml"> 
 <!ENTITY hyphenate SYSTEM "../params/hyphenate.xml">
 <!ENTITY hyphenate.verbatim SYSTEM "../params/hyphenate.verbatim.xml">
 <!ENTITY hyphenate.verbatim.characters SYSTEM "../params/hyphenate.verbatim.characters.xml">
index 8248509b1ed7914d4cfaeb7007288a08274391c7..d49a60985d156877e1490966d711651bf1b4ef21 100644 (file)
@@ -281,6 +281,8 @@ generate.section.toc.level;
 &superscript.properties;
 &subscript.properties;
 &pgwide.properties;
+&highlight.source;
+&highlight.default.language;
 </reference>
 
 <reference id="graphics"><title>Graphics</title>
@@ -661,6 +663,8 @@ around all these parameters.</para>
 <src:fragref linkend="header.column.widths.frag"/>
 <src:fragref linkend="header.table.height.frag"/>
 <src:fragref linkend="headers.on.blank.pages.frag"/>
+<src:fragref linkend="highlight.default.language.frag"/>
+<src:fragref linkend="highlight.source.frag"/>
 <src:fragref linkend="hyphenate.frag"/>
 <src:fragref linkend="hyphenate.verbatim.frag"/>
 <src:fragref linkend="hyphenate.verbatim.characters.frag"/>
index 3449d94ad4351dae980c20a509b16254048ddfb8..d90f80b84cb95f92f684d7eb99845cb7a8cbeb4a 100644 (file)
@@ -18,6 +18,9 @@
 
      ******************************************************************** -->
 
+<xsl:include href="../highlighting/common.xsl"/>
+<xsl:include href="highlight.xsl"/>
+
 <lxslt:component prefix="xverb"
                  functions="numberLines"/>
 
                       and $linenumbering.extension != '0'">
         <xsl:call-template name="number.rtf.lines">
           <xsl:with-param name="rtf">
-            <xsl:apply-templates/>
+           <xsl:call-template name="apply-highlighting"/>
           </xsl:with-param>
         </xsl:call-template>
       </xsl:when>
       <xsl:otherwise>
-        <xsl:apply-templates/>
+       <xsl:call-template name="apply-highlighting"/>
       </xsl:otherwise>
     </xsl:choose>
   </xsl:variable>
diff --git a/xsl/highlighting/common.xsl b/xsl/highlighting/common.xsl
new file mode 100644 (file)
index 0000000..552c7c3
--- /dev/null
@@ -0,0 +1,62 @@
+<?xml version='1.0'?>\r
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
+               xmlns:hl="java:net.sf.xslthl.ConnectorSaxon6"\r
+                xmlns:exsl="http://exslt.org/common"\r
+               exclude-result-prefixes="exsl hl"\r
+                version='1.0'>\r
+\r
+<!-- ********************************************************************\r
+     $Id: inline.xsl 5953 2006-05-08 04:23:10Z bobstayton $\r
+     ********************************************************************\r
+\r
+     This file is part of the XSL DocBook Stylesheet distribution.\r
+     See ../README or http://nwalsh.com/docbook/xsl/ for copyright\r
+     and other information.\r
+\r
+     ******************************************************************** -->\r
+\r
+<!-- You can override this template to do more complex mapping of\r
+     language attribute to highlighter language ID (see xslthl-config.xml) -->\r
+<xsl:template name="language.to.xslthl">\r
+  <xsl:param name="language"/>\r
+\r
+  <xsl:value-of select="$language"/>\r
+</xsl:template>\r
+\r
+<xsl:template name="apply-highlighting">\r
+  <xsl:choose>\r
+    <!-- Do we want syntax highlighting -->\r
+    <xsl:when test="$highlight.source != 0 and function-available('hl:highlight')">\r
+      <xsl:variable name="language">\r
+       <xsl:choose>\r
+         <xsl:when test="@language">\r
+           <xsl:call-template name="language.to.xslthl">\r
+             <xsl:with-param name="language" select="@language"/>\r
+           </xsl:call-template>\r
+         </xsl:when>\r
+         <xsl:when test="$highlight.default.language != ''">\r
+           <xsl:value-of select="$highlight.default.language"/>\r
+         </xsl:when>\r
+       </xsl:choose>\r
+      </xsl:variable>\r
+      <xsl:choose>\r
+       <xsl:when test="$language != ''">\r
+         <xsl:variable name="content">\r
+           <xsl:apply-templates/>\r
+         </xsl:variable>\r
+         <xsl:apply-templates select="hl:highlight($language, exsl:node-set($content))"/>\r
+       </xsl:when>\r
+       <xsl:otherwise>\r
+         <xsl:apply-templates/>\r
+       </xsl:otherwise>\r
+      </xsl:choose>\r
+    </xsl:when>\r
+    <!-- No syntax highlighting -->\r
+    <xsl:otherwise>\r
+      <xsl:apply-templates/>\r
+    </xsl:otherwise>\r
+  </xsl:choose>\r
+</xsl:template>\r
+\r
+</xsl:stylesheet>\r
+\r
diff --git a/xsl/highlighting/delphi-hl.xml b/xsl/highlighting/delphi-hl.xml
new file mode 100644 (file)
index 0000000..1f69aec
--- /dev/null
@@ -0,0 +1,158 @@
+<?xml version='1.0'?>\r
+<!--\r
+\r
+  Bakalarska prace: Zvyraznovani syntaxe v XSLT\r
+  Michal Molhanec 2005\r
+\r
+  delphi-hl.xml - konfigurace zvyraznovace jazyka Delphi\r
+\r
+-->\r
+<highlighters>\r
+\r
+<highlighter type='multiline-comment'>\r
+  <start>{</start>\r
+  <end>}</end>\r
+</highlighter>\r
+\r
+<highlighter type='multiline-comment'>\r
+  <start>(*</start>\r
+  <end>*)</end>\r
+</highlighter>\r
+\r
+<highlighter type='oneline-comment'>\r
+  //\r
+</highlighter>\r
+\r
+<highlighter type='string'>\r
+  <string>'</string>\r
+  <doubleEscapes/>\r
+</highlighter>\r
+\r
+<highlighter type='keywords'>\r
+\r
+  <!-- Reserved words -->\r
+  <keyword>and</keyword>\r
+  <keyword>else</keyword>\r
+  <keyword>inherited</keyword>\r
+  <keyword>packed</keyword>\r
+  <keyword>then</keyword>\r
+  <keyword>array</keyword>\r
+  <keyword>end</keyword>\r
+  <keyword>initialization</keyword>\r
+  <keyword>procedure</keyword>\r
+  <keyword>threadvar</keyword>\r
+  <keyword>as</keyword>\r
+  <keyword>except</keyword>\r
+  <keyword>inline</keyword>\r
+  <keyword>program</keyword>\r
+  <keyword>to</keyword>\r
+  <keyword>asm</keyword>\r
+  <keyword>exports</keyword>\r
+  <keyword>interface</keyword>\r
+  <keyword>property</keyword>\r
+  <keyword>try</keyword>\r
+  <keyword>begin</keyword>\r
+  <keyword>file</keyword>\r
+  <keyword>is</keyword>\r
+  <keyword>raise</keyword>\r
+  <keyword>type</keyword>\r
+  <keyword>case</keyword>\r
+  <keyword>final</keyword>\r
+  <keyword>label</keyword>\r
+  <keyword>record</keyword>\r
+  <keyword>unit</keyword>\r
+  <keyword>class</keyword>\r
+  <keyword>finalization</keyword>\r
+  <keyword>library</keyword>\r
+  <keyword>repeat</keyword>\r
+  <keyword>unsafe</keyword>\r
+  <keyword>const</keyword>\r
+  <keyword>finally</keyword>\r
+  <keyword>mod</keyword>\r
+  <keyword>resourcestring</keyword>\r
+  <keyword>until</keyword>\r
+  <keyword>constructor</keyword>\r
+  <keyword>for</keyword>\r
+  <keyword>nil</keyword>\r
+  <keyword>sealed</keyword>\r
+  <keyword>uses</keyword>\r
+  <keyword>destructor</keyword>\r
+  <keyword>function</keyword>\r
+  <keyword>not</keyword>\r
+  <keyword>set</keyword>\r
+  <keyword>var</keyword>\r
+  <keyword>dispinterface</keyword>\r
+  <keyword>goto</keyword>\r
+  <keyword>object</keyword>\r
+  <keyword>shl</keyword>\r
+  <keyword>while</keyword>\r
+  <keyword>div</keyword>\r
+  <keyword>if</keyword>\r
+  <keyword>of</keyword>\r
+  <keyword>shr</keyword>\r
+  <keyword>with</keyword>\r
+  <keyword>do</keyword>\r
+  <keyword>implementation</keyword>\r
+  <keyword>or</keyword>\r
+  <keyword>static</keyword>\r
+  <keyword>xor</keyword>\r
+  <keyword>downto</keyword>\r
+  <keyword>in</keyword>\r
+  <keyword>out</keyword>\r
+  <keyword>string</keyword>\r
+\r
+  <!-- Special meaning -->\r
+  <keyword>at</keyword>\r
+  <keyword>on</keyword>\r
+  \r
+  <!-- Directives -->\r
+  <keyword>absolute</keyword>\r
+  <keyword>dynamic</keyword>\r
+  <keyword>local</keyword>\r
+  <keyword>platform</keyword>\r
+  <keyword>requires</keyword>\r
+  <keyword>abstract</keyword>\r
+  <keyword>export</keyword>\r
+  <keyword>message</keyword>\r
+  <keyword>private</keyword>\r
+  <keyword>resident</keyword>\r
+  <keyword>assembler</keyword>\r
+  <keyword>external</keyword>\r
+  <keyword>name</keyword>\r
+  <keyword>protected</keyword>\r
+  <keyword>safecall</keyword>\r
+  <keyword>automated</keyword>\r
+  <keyword>far</keyword>\r
+  <keyword>near</keyword>\r
+  <keyword>public</keyword>\r
+  <keyword>stdcall</keyword>\r
+  <keyword>cdecl</keyword>\r
+  <keyword>forward</keyword>\r
+  <keyword>nodefault</keyword>\r
+  <keyword>published</keyword>\r
+  <keyword>stored</keyword>\r
+  <keyword>contains</keyword>\r
+  <keyword>implements</keyword>\r
+  <keyword>overload</keyword>\r
+  <keyword>read</keyword>\r
+  <keyword>varargs</keyword>\r
+  <keyword>default</keyword>\r
+  <keyword>index</keyword>\r
+  <keyword>override</keyword>\r
+  <keyword>readonly</keyword>\r
+  <keyword>virtual</keyword>\r
+  <keyword>deprecated</keyword>\r
+  <keyword>inline</keyword>\r
+  <keyword>package</keyword>\r
+  <keyword>register</keyword>\r
+  <keyword>write</keyword>\r
+  <keyword>dispid</keyword>\r
+  <keyword>library</keyword>\r
+  <keyword>pascal</keyword>\r
+  <keyword>reintroduce</keyword>\r
+  <keyword>writeonly</keyword>\r
+\r
+  <ignoreCase/>\r
+</highlighter>\r
+\r
+</highlighters>
\ No newline at end of file
diff --git a/xsl/highlighting/ini-hl.xml b/xsl/highlighting/ini-hl.xml
new file mode 100644 (file)
index 0000000..61afb5e
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version='1.0'?>\r
+<!--\r
+\r
+  Bakalarska prace: Zvyraznovani syntaxe v XSLT\r
+  Michal Molhanec 2005\r
+\r
+  ini-hl.xml - konfigurace zvyraznovace INI souboru\r
+\r
+-->\r
+<highlighters>\r
+\r
+<wholehighlighter type='regex'>\r
+  <pattern>(?m)(;.*)$</pattern>\r
+  <style>comment</style>\r
+</wholehighlighter>\r
+\r
+<wholehighlighter type='regex'>\r
+  <pattern>(?m)^(\[.+\]\s*)$</pattern>\r
+  <style>section</style>\r
+</wholehighlighter>\r
+\r
+<wholehighlighter type='regex'>\r
+  <pattern>(?m)^(.+=)</pattern>\r
+  <style>keyword</style>\r
+</wholehighlighter>\r
+\r
+</highlighters>
\ No newline at end of file
diff --git a/xsl/highlighting/java-hl.xml b/xsl/highlighting/java-hl.xml
new file mode 100644 (file)
index 0000000..a483c2f
--- /dev/null
@@ -0,0 +1,82 @@
+<?xml version='1.0'?>\r
+<!--\r
+\r
+  Bakalarska prace: Zvyraznovani syntaxe v XSLT\r
+  Michal Molhanec 2005\r
+\r
+  java-hl.xml - konfigurace zvyraznovace jazyka Java\r
+\r
+-->\r
+<highlighters>\r
+\r
+<highlighter type='multiline-comment'>\r
+  <start>/*</start>\r
+  <end>*/</end>\r
+</highlighter>\r
+\r
+<highlighter type='oneline-comment'>\r
+  //\r
+</highlighter>\r
+\r
+<highlighter type='string'>\r
+  <string>"</string>\r
+  <escape>\</escape>\r
+</highlighter>\r
+\r
+<highlighter type='string'>\r
+  <string>'</string>\r
+  <escape>\</escape>\r
+</highlighter>\r
+\r
+<highlighter type='keywords'>\r
+  <keyword>abstract</keyword>\r
+  <keyword>boolean</keyword>\r
+  <keyword>break</keyword>\r
+  <keyword>byte</keyword>\r
+  <keyword>case</keyword>\r
+  <keyword>catch</keyword>\r
+  <keyword>char</keyword>\r
+  <keyword>class</keyword>\r
+  <keyword>const</keyword>\r
+  <keyword>continue</keyword>\r
+  <keyword>default</keyword>\r
+  <keyword>do</keyword>\r
+  <keyword>double</keyword>\r
+  <keyword>else</keyword>\r
+  <keyword>extends</keyword>\r
+  <keyword>final</keyword>\r
+  <keyword>finally</keyword>\r
+  <keyword>float</keyword>\r
+  <keyword>for</keyword>\r
+  <keyword>goto</keyword>\r
+  <keyword>if</keyword>\r
+  <keyword>implements</keyword>\r
+  <keyword>import</keyword>\r
+  <keyword>instanceof</keyword>\r
+  <keyword>int</keyword>\r
+  <keyword>interface</keyword>\r
+  <keyword>long</keyword>\r
+  <keyword>native</keyword>\r
+  <keyword>new</keyword>\r
+  <keyword>package</keyword>\r
+  <keyword>private</keyword>\r
+  <keyword>protected</keyword>\r
+  <keyword>public</keyword>\r
+  <keyword>return</keyword>\r
+  <keyword>short</keyword>\r
+  <keyword>static</keyword>\r
+  <keyword>strictfp</keyword>\r
+  <keyword>super</keyword>\r
+  <keyword>switch</keyword>\r
+  <keyword>synchronized</keyword>\r
+  <keyword>this</keyword>\r
+  <keyword>throw</keyword>\r
+  <keyword>throws</keyword>\r
+  <keyword>transient</keyword>\r
+  <keyword>try</keyword>\r
+  <keyword>void</keyword>\r
+  <keyword>volatile</keyword>\r
+  <keyword>while</keyword>\r
+</highlighter>\r
+\r
+</highlighters>
\ No newline at end of file
diff --git a/xsl/highlighting/m2-hl.xml b/xsl/highlighting/m2-hl.xml
new file mode 100644 (file)
index 0000000..67b1f28
--- /dev/null
@@ -0,0 +1,70 @@
+<?xml version='1.0'?>\r
+<!--\r
+\r
+  Bakalarska prace: Zvyraznovani syntaxe v XSLT\r
+  Michal Molhanec 2005\r
+\r
+  java-hl.xml - konfigurace zvyraznovace jazyka Modula-2\r
+\r
+-->\r
+<highlighters>\r
+\r
+<highlighter type='nested-multiline-comment'>\r
+  <start>(*</start>\r
+  <end>*)</end>\r
+</highlighter>\r
+\r
+<highlighter type='string'>\r
+  <string>"</string>\r
+</highlighter>\r
+\r
+<highlighter type='string'>\r
+  <string>'</string>\r
+</highlighter>\r
+\r
+<highlighter type='keywords'>\r
+  <keyword>and</keyword>\r
+  <keyword>array</keyword>\r
+  <keyword>begin</keyword>\r
+  <keyword>by</keyword>\r
+  <keyword>case</keyword>\r
+  <keyword>const</keyword>\r
+  <keyword>definition</keyword>\r
+  <keyword>div</keyword>\r
+  <keyword>do</keyword>\r
+  <keyword>else</keyword>\r
+  <keyword>elsif</keyword>\r
+  <keyword>end</keyword>\r
+  <keyword>exit</keyword>\r
+  <keyword>export</keyword>\r
+  <keyword>for</keyword>\r
+  <keyword>from</keyword>\r
+  <keyword>if</keyword>\r
+  <keyword>implementation</keyword>\r
+  <keyword>import</keyword>\r
+  <keyword>in</keyword>\r
+  <keyword>loop</keyword>\r
+  <keyword>mod</keyword>\r
+  <keyword>module</keyword>\r
+  <keyword>not</keyword>\r
+  <keyword>of</keyword>\r
+  <keyword>or</keyword>\r
+  <keyword>pointer</keyword>\r
+  <keyword>procedure</keyword>\r
+  <keyword>qualified</keyword>\r
+  <keyword>record</keyword>\r
+  <keyword>repeat</keyword>\r
+  <keyword>return</keyword>\r
+  <keyword>set</keyword>\r
+  <keyword>then</keyword>\r
+  <keyword>to</keyword>\r
+  <keyword>type</keyword>\r
+  <keyword>until</keyword>\r
+  <keyword>var</keyword>\r
+  <keyword>while</keyword>\r
+  <keyword>with</keyword>\r
+  \r
+  <ignoreCase/>\r
+</highlighter>\r
+\r
+</highlighters>
\ No newline at end of file
diff --git a/xsl/highlighting/myxml-hl.xml b/xsl/highlighting/myxml-hl.xml
new file mode 100644 (file)
index 0000000..afa4be7
--- /dev/null
@@ -0,0 +1,116 @@
+<?xml version='1.0'?>\r
+<!--\r
+\r
+  Bakalarska prace: Zvyraznovani syntaxe v XSLT\r
+  Michal Molhanec 2005\r
+\r
+  myxml-hl.xml - konfigurace zvyraznovace XML, ktera zvlast zvyrazni\r
+                 HTML elementy a XSL elementy\r
+\r
+-->\r
+<highlighters>\r
+\r
+<wholehighlighter type='xml'>\r
+  <elementSet>\r
+    <style>html</style>\r
+    <element>A</element>\r
+    <element>ABBR</element>\r
+    <element>ACRONYM</element>\r
+    <element>ADDRESS</element>\r
+    <element>APPLET</element>\r
+    <element>AREA</element>\r
+    <element>B</element>\r
+    <element>BASE</element>\r
+    <element>BASEFONT</element>\r
+    <element>BDO</element>\r
+    <element>BIG</element>\r
+    <element>BLOCKQUOTE</element>\r
+    <element>BODY</element>\r
+    <element>BR</element>\r
+    <element>BUTTON</element>\r
+    <element>CAPTION</element>\r
+    <element>CENTER</element>\r
+    <element>CITE</element>\r
+    <element>CODE</element>\r
+    <element>COL</element>\r
+    <element>COLGROUP</element>\r
+    <element>DD</element>\r
+    <element>DEL</element>\r
+    <element>DFN</element>\r
+    <element>DIR</element>\r
+    <element>DIV</element>\r
+    <element>DL</element>\r
+    <element>DT</element>\r
+    <element>EM</element>\r
+    <element>FIELDSET</element>\r
+    <element>FONT</element>\r
+    <element>FORM</element>\r
+    <element>FRAME</element>\r
+    <element>FRAMESET</element>\r
+    <element>H1</element>\r
+    <element>H2</element>\r
+    <element>H3</element>\r
+    <element>H4</element>\r
+    <element>H5</element>\r
+    <element>H6</element>\r
+    <element>HEAD</element>\r
+    <element>HR</element>\r
+    <element>HTML</element>\r
+    <element>I</element>\r
+    <element>IFRAME</element>\r
+    <element>IMG</element>\r
+    <element>INPUT</element>\r
+    <element>INS</element>\r
+    <element>ISINDEX</element>\r
+    <element>KBD</element>\r
+    <element>LABEL</element>\r
+    <element>LEGEND</element>\r
+    <element>LI</element>\r
+    <element>LINK</element>\r
+    <element>MAP</element>\r
+    <element>MENU</element>\r
+    <element>META</element>\r
+    <element>NOFRAMES</element>\r
+    <element>NOSCRIPT</element>\r
+    <element>OBJECT</element>\r
+    <element>OL</element>\r
+    <element>OPTGROUP</element>\r
+    <element>OPTION</element>\r
+    <element>P</element>\r
+    <element>PARAM</element>\r
+    <element>PRE</element>\r
+    <element>Q</element>\r
+    <element>S</element>\r
+    <element>SAMP</element>\r
+    <element>SCRIPT</element>\r
+    <element>SELECT</element>\r
+    <element>SMALL</element>\r
+    <element>SPAN</element>\r
+    <element>STRIKE</element>\r
+    <element>STRONG</element>\r
+    <element>STYLE</element>\r
+    <element>SUB</element>\r
+    <element>SUP</element>\r
+    <element>TABLE</element>\r
+    <element>TBODY</element>\r
+    <element>TD</element>\r
+    <element>TEXTAREA</element>\r
+    <element>TFOOT</element>\r
+    <element>TH</element>\r
+    <element>THEAD</element>\r
+    <element>TITLE</element>\r
+    <element>TR</element>\r
+    <element>TT</element>\r
+    <element>U</element>\r
+    <element>UL</element>\r
+    <element>VAR</element>\r
+    <element>XMP</element>\r
+    <ignoreCase/>\r
+  </elementSet>\r
+  <elementPrefix>\r
+    <style>xslt</style>\r
+    <prefix>xsl:</prefix>\r
+  </elementPrefix>\r
+</wholehighlighter>\r
+\r
+</highlighters>
\ No newline at end of file
diff --git a/xsl/highlighting/php-hl.xml b/xsl/highlighting/php-hl.xml
new file mode 100644 (file)
index 0000000..bfb85e4
--- /dev/null
@@ -0,0 +1,111 @@
+<?xml version='1.0'?>\r
+<!--\r
+\r
+  Bakalarska prace: Zvyraznovani syntaxe v XSLT\r
+  Michal Molhanec 2005\r
+\r
+  php-hl.xml - konfigurace zvyraznovace jazyka PHP\r
+\r
+-->\r
+<highlighters>\r
+\r
+<highlighter type='multiline-comment'>\r
+  <start>/*</start>\r
+  <end>*/</end>\r
+</highlighter>\r
+\r
+<highlighter type='oneline-comment'>\r
+  //\r
+</highlighter>\r
+\r
+<highlighter type='oneline-comment'>\r
+  #\r
+</highlighter>\r
+\r
+<highlighter type='string'>\r
+  <string>"</string>\r
+  <escape>\</escape>\r
+</highlighter>\r
+\r
+<highlighter type='string'>\r
+  <string>'</string>\r
+  <escape>\</escape>\r
+</highlighter>\r
+\r
+<highlighter type='heredoc'>\r
+  <start>&lt;&lt;&lt;</start>\r
+</highlighter>\r
+\r
+<highlighter type='keywords'>\r
+  <keyword>and</keyword>\r
+  <keyword>or</keyword>\r
+  <keyword>xor</keyword>\r
+  <keyword>__FILE__</keyword>\r
+  <keyword>exception</keyword>\r
+  <keyword>__LINE__</keyword>\r
+  <keyword>array</keyword>\r
+  <keyword>as</keyword>\r
+  <keyword>break</keyword>\r
+  <keyword>case</keyword>\r
+  <keyword>class</keyword>\r
+  <keyword>const</keyword>\r
+  <keyword>continue</keyword>\r
+  <keyword>declare</keyword>\r
+  <keyword>default</keyword>\r
+  <keyword>die</keyword>\r
+  <keyword>do</keyword>\r
+  <keyword>echo</keyword>\r
+  <keyword>else</keyword>\r
+  <keyword>elseif</keyword>\r
+  <keyword>empty</keyword>\r
+  <keyword>enddeclare</keyword>\r
+  <keyword>endfor</keyword>\r
+  <keyword>endforeach</keyword>\r
+  <keyword>endif</keyword>\r
+  <keyword>endswitch</keyword>\r
+  <keyword>endwhile</keyword>\r
+  <keyword>eval</keyword>\r
+  <keyword>exit</keyword>\r
+  <keyword>extends</keyword>\r
+  <keyword>for</keyword>\r
+  <keyword>foreach</keyword>\r
+  <keyword>function</keyword>\r
+  <keyword>global</keyword>\r
+  <keyword>if</keyword>\r
+  <keyword>include</keyword>\r
+  <keyword>include_once</keyword>\r
+  <keyword>isset</keyword>\r
+  <keyword>list</keyword>\r
+  <keyword>new</keyword>\r
+  <keyword>print</keyword>\r
+  <keyword>require</keyword>\r
+  <keyword>require_once</keyword>\r
+  <keyword>return</keyword>\r
+  <keyword>static</keyword>\r
+  <keyword>switch</keyword>\r
+  <keyword>unset</keyword>\r
+  <keyword>use</keyword>\r
+  <keyword>var</keyword>\r
+  <keyword>while</keyword>\r
+  <keyword>__FUNCTION__</keyword>\r
+  <keyword>__CLASS__</keyword>\r
+  <keyword>__METHOD__</keyword>\r
+  <keyword>final</keyword>\r
+  <keyword>php_user_filter</keyword>\r
+  <keyword>interface</keyword>\r
+  <keyword>implements</keyword>\r
+  <keyword>extends</keyword>\r
+  <keyword>public</keyword>\r
+  <keyword>private</keyword>\r
+  <keyword>protected</keyword>\r
+  <keyword>abstract</keyword>\r
+  <keyword>clone</keyword>\r
+  <keyword>try</keyword>\r
+  <keyword>catch</keyword>\r
+  <keyword>throw</keyword>\r
+  <keyword>cfunction</keyword>\r
+  <keyword>old_function</keyword>\r
+  <ignoreCase/>\r
+</highlighter>\r
+\r
+</highlighters>
\ No newline at end of file
diff --git a/xsl/highlighting/xslthl-config.xml b/xsl/highlighting/xslthl-config.xml
new file mode 100644 (file)
index 0000000..f6db132
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version='1.0'?>\r
+<!--\r
+\r
+  Bakalarska prace: Zvyraznovani syntaxe v XSLT\r
+  Michal Molhanec 2005\r
+\r
+  xslthl-config.xml - konfigurace zvyraznovacu\r
+\r
+-->\r
+\r
+<xslthl-config>\r
+  <highlighter id='java'   file='./java-hl.xml'  />\r
+  <highlighter id='delphi' file='./delphi-hl.xml'/>\r
+  <highlighter id='ini'    file='./ini-hl.xml'   />\r
+  <highlighter id='php'    file='./php-hl.xml'   />\r
+  <highlighter id='myxml'  file='./myxml-hl.xml' />\r
+  <highlighter id='m2'     file='./m2-hl.xml'    />\r
+  <namespace prefix="xslthl" uri="http://xslthl.sf.net" />\r
+</xslthl-config>\r
diff --git a/xsl/html/highlight.xsl b/xsl/html/highlight.xsl
new file mode 100644 (file)
index 0000000..b581ee5
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version='1.0'?>\r
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
+               xmlns:xslthl="http://xslthl.sf.net"\r
+                exclude-result-prefixes="xslthl"\r
+                version='1.0'>\r
+\r
+<!-- ********************************************************************\r
+     $Id: inline.xsl 5953 2006-05-08 04:23:10Z bobstayton $\r
+     ********************************************************************\r
+\r
+     This file is part of the XSL DocBook Stylesheet distribution.\r
+     See ../README or http://nwalsh.com/docbook/xsl/ for copyright\r
+     and other information.\r
+\r
+     ******************************************************************** -->\r
+\r
+<xsl:template match='xslthl:keyword'>\r
+  <b class="hl-keyword"><xsl:apply-templates/></b>\r
+</xsl:template>\r
+\r
+<xsl:template match='xslthl:string'>\r
+  <b class="hl-string"><i><font color='red'><xsl:apply-templates/></font></i></b>\r
+</xsl:template>\r
+\r
+<xsl:template match='xslthl:comment'>\r
+  <i class="hl-comment"><font color='silver'><xsl:apply-templates/></font></i>\r
+</xsl:template>\r
+\r
+<xsl:template match='xslthl:tag'>\r
+  <b class="hl-tag"><font color='blue'><xsl:apply-templates/></font></b>\r
+</xsl:template>\r
+\r
+<xsl:template match='xslthl:attribute'>\r
+  <span class="hl-attribute"><font color='blue'><xsl:apply-templates/></font></span>\r
+</xsl:template>\r
+\r
+<xsl:template match='xslthl:value'>\r
+  <span class="hl-value"><font color='blue'><xsl:apply-templates/></font></span>\r
+</xsl:template>\r
+\r
+<xsl:template match='xslthl:html'>\r
+  <b><i><font color='red'><xsl:apply-templates/></font></i></b>\r
+</xsl:template>\r
+\r
+<xsl:template match='xslthl:xslt'>\r
+  <b><font color='blue'><xsl:apply-templates/></font></b>\r
+</xsl:template>\r
+\r
+<xsl:template match='xslthl:section'>\r
+  <b><xsl:apply-templates/></b>\r
+</xsl:template>\r
+\r
+\r
+</xsl:stylesheet>\r
+\r
index 60efcb22097a1310922d0cb3aa36c2eaf4cab1f1..9405283c0e8754dc696a7e02ad1310e4d0a325cc 100644 (file)
@@ -67,6 +67,8 @@
 <!ENTITY glossterm.auto.link SYSTEM "../params/glossterm.auto.link.xml">
 <!ENTITY graphic.default.extension SYSTEM "../params/graphic.default.extension.xml">
 <!ENTITY header.rule SYSTEM "../params/header.rule.xml">
+<!ENTITY highlight.default.language SYSTEM "../params/highlight.default.language.xml"> 
+<!ENTITY highlight.source SYSTEM "../params/highlight.source.xml"> 
 <!ENTITY html.base SYSTEM "../params/html.base.xml">
 <!ENTITY html.cleanup SYSTEM "../params/html.cleanup.xml">
 <!ENTITY html.ext SYSTEM "../params/html.ext.xml">
index 782f39b6fe0b66732696846f20903628165583e2..115b99ad8487aecb45a221fcbc0f7516ecb50a46 100644 (file)
@@ -284,6 +284,8 @@ stylesheet like this:</para>
 &table.footnote.number.format;
 &footnote.number.symbols;
 &table.footnote.number.symbols;
+&highlight.source;
+&highlight.default.language;
 </reference>
 
 <reference id="annos"><title>Annotations</title>
@@ -536,6 +538,8 @@ around all these parameters.</para>
 <src:fragref linkend="graphicsize.extension.frag"/>
 <src:fragref linkend="graphicsize.use.img.src.path.frag"/>
 <src:fragref linkend="header.rule.frag"/>
+<src:fragref linkend="highlight.default.language.frag"/>
+<src:fragref linkend="highlight.source.frag"/>
 <src:fragref linkend="html.base.frag"/>
 <src:fragref linkend="html.cellpadding.frag"/>
 <src:fragref linkend="html.cellspacing.frag"/>
index 63f25e0a51a41389d7d4edf8fe806457b94e813e..bb1e0c77ed614751169bd937e83c53768a3a092a 100644 (file)
@@ -17,6 +17,9 @@
 
      ******************************************************************** -->
 
+<xsl:include href="../highlighting/common.xsl"/>
+<xsl:include href="highlight.xsl"/>
+
 <lxslt:component prefix="xverb"
                  functions="numberLines"/>
 
@@ -46,7 +49,7 @@
                    and $use.extensions != '0'
                    and $linenumbering.extension != '0'">
       <xsl:variable name="rtf">
-       <xsl:apply-templates/>
+       <xsl:call-template name="apply-highlighting"/>
       </xsl:variable>
       <pre class="{name(.)}">
        <xsl:call-template name="number.rtf.lines">
@@ -56,7 +59,7 @@
     </xsl:when>
     <xsl:otherwise>
       <pre class="{name(.)}">
-       <xsl:apply-templates/>
+       <xsl:call-template name="apply-highlighting"/>
       </pre>
     </xsl:otherwise>
   </xsl:choose>
diff --git a/xsl/params/highlight.default.language.xml b/xsl/params/highlight.default.language.xml
new file mode 100644 (file)
index 0000000..3e5cfe7
--- /dev/null
@@ -0,0 +1,22 @@
+<refentry id="highlight.default.language">\r
+<refmeta>\r
+<refentrytitle>highlight.default.language</refentrytitle>\r
+<refmiscinfo role="type">string</refmiscinfo>\r
+</refmeta>\r
+<refnamediv>\r
+<refname>highlight.default.language</refname>\r
+<refpurpose>Default language of programlisting</refpurpose>\r
+</refnamediv>\r
+\r
+<refsynopsisdiv>\r
+<src:fragment id='highlight.default.language.frag'>\r
+<xsl:param name="highlight.default.language" select="''"/>\r
+</src:fragment>\r
+</refsynopsisdiv>\r
+\r
+<refsect1><title>Description</title>\r
+\r
+<para>This language is used when there is no language attribute on programlisting.</para>\r
+\r
+</refsect1>\r
+</refentry>\r
diff --git a/xsl/params/highlight.source.xml b/xsl/params/highlight.source.xml
new file mode 100644 (file)
index 0000000..edcd798
--- /dev/null
@@ -0,0 +1,48 @@
+<refentry id="highlight.source">\r
+<refmeta>\r
+<refentrytitle>highlight.source</refentrytitle>\r
+<refmiscinfo role="type">boolean</refmiscinfo>\r
+</refmeta>\r
+<refnamediv>\r
+<refname>highlight.source</refname>\r
+<refpurpose>Should be content of <sgmltag>programlisting</sgmltag>\r
+syntactically highlighted?</refpurpose>\r
+</refnamediv>\r
+\r
+<refsynopsisdiv>\r
+<src:fragment id='highlight.source.frag'>\r
+<xsl:param name="highlight.source" select="0"/>\r
+</src:fragment>\r
+</refsynopsisdiv>\r
+\r
+<refsect1><title>Description</title>\r
+\r
+<para>When this parameter is non-zero, the stylesheets will try to do\r
+syntax highlighting in content of programlisting element.</para>\r
+\r
+<para>In order to use this extension, you must add\r
+<filename>xslthl.jar</filename> into your Java classpath. You can\r
+download this software from <ulink\r
+url="http://sourceforge.net/projects/xslthl"/>.</para>\r
+\r
+<para>Configuration of syntax highlighting is stored insise\r
+<filename>highlighting/xslthl-config.xml</filename> file. Java\r
+property <literal>xslthl.config</literal> must be pointing to this\r
+file using URL.</para>\r
+\r
+<para>This extension is known to work with Saxon 6.5.x. When using\r
+syntax highlighting, do not forget to modify your classpath and point\r
+to configuration file using property. Modified Saxon command looks\r
+like:</para>\r
+\r
+<programlisting>java -cp c:\batch\;…;c:\cesta\k\xslthl.jar -Dxslthl.config=file:///c:/docbook-xsl/highlighting/xslthl-config.xml … com.icl.saxon.StyleSheet …</programlisting>\r
+\r
+<para>You can specify language of each programlisting using <sgmltag\r
+class="attribute">language</sgmltag> attribute. You can also specify\r
+language to be expected for programlistings without <sgmltag\r
+class="attribute">language</sgmltag> attribute. In this case, you can\r
+use parameter <parameter>highlighting.default.language</parameter> to\r
+set default language.</para>\r
+\r
+</refsect1>\r
+</refentry>\r