Zvýrazňování syntaxe #12: zdrojáky ze souborů budeme načítat už v XSLT ne až v Javě.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Thu, 05 Jan 2012 11:01:25 +0100
changeset 43 4a4364826e59
parent 42 be907afcf4f6
child 44 5a556e708f75
Zvýrazňování syntaxe #12: zdrojáky ze souborů budeme načítat už v XSLT ne až v Javě.
vstup/matrixový-spořič.sh
šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java
šablona/stránka.xsl
--- a/vstup/matrixový-spořič.sh	Sat Dec 31 18:55:19 2011 +0100
+++ b/vstup/matrixový-spořič.sh	Thu Jan 05 11:01:25 2012 +0100
@@ -13,4 +13,3 @@
         $0 start;
 ;;
 esac
-
--- a/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java	Sat Dec 31 18:55:19 2011 +0100
+++ b/šablona/funkce/src/cz/frantovo/xmlWebGenerator/Funkce.java	Thu Jan 05 11:01:25 2012 +0100
@@ -82,17 +82,6 @@
 	}
 
 	/**
-	 * TODO: prohodit volání mezi zvýrazniSyntaxiSouboru() a zvýrazniSyntaxi(), 
-	 * aby se nepřeváděl proud na text a pak zase na proud.
-	 * 
-	 * @param src cesta k souboru, jehož obsah se má zvýraznit a vložit
-	 */
-	public static String zvýrazniSyntaxiSouboru(String src, String jazyk) throws IOException, InterruptedException {
-		String zdroják = načtiProud(new FileInputStream(new File(ADRESÁŘ_VSTUPNÍ, src)));
-		return zvýrazniSyntaxi(zdroják, jazyk);
-	}
-
-	/**
 	 * Vygeneruje CSS styl pro zvýrazňování syntaxe.
 	 * @return obsah CSS souboru nebo null, pokud generování nebylo možné
 	 */
--- a/šablona/stránka.xsl	Sat Dec 31 18:55:19 2011 +0100
+++ b/šablona/stránka.xsl	Thu Jan 05 11:01:25 2012 +0100
@@ -123,34 +123,35 @@
     	Makro pro zvýraznění syntaxe:
     -->    
     <xsl:template match="m:pre">
-    	<xsl:call-template name="vypišPre">
-    		<xsl:with-param name="zvýrazněnýText" select="j:zvýrazniSyntaxi(text(), @jazyk)"/>
+    	<xsl:call-template name="zvýrazniZdroják">
+    		<xsl:with-param name="zdroják" select="text()"/>
     	</xsl:call-template>
     </xsl:template>
     
     <xsl:template match="m:pre[@src]">
-    	<xsl:call-template name="vypišPre">
-    		<xsl:with-param name="zvýrazněnýText" select="j:zvýrazniSyntaxiSouboru(@src, @jazyk)"/>
+    	<xsl:call-template name="zvýrazniZdroják">
+    		<xsl:with-param name="zdroják" select="unparsed-text(concat($vstup, @src))"/>
     	</xsl:call-template>
-    	<xsl:if test="@odkaz = 'ano'">
-    		<p class="zdroják-ke-stažení">
-    			<span>Stáhnout: <a href="{encode-for-uri(@src)}"><xsl:value-of select="@src"/></a></span>
-    		</p>
-    	</xsl:if>
+		<xsl:if test="@odkaz = 'ano'">
+			<p class="zdroják-ke-stažení">
+				<span>Stáhnout: <a href="{encode-for-uri(@src)}"><xsl:value-of select="@src"/></a></span>
+			</p>
+		</xsl:if>
     </xsl:template>
     
-    <xsl:template name="vypišPre">
-    	<xsl:param name="zvýrazněnýText"/>
+    <xsl:template name="zvýrazniZdroják">
+    	<xsl:param name="zdroják"/>
+    	<xsl:variable name="zvýrazněnýZdroják" select="j:zvýrazniSyntaxi($zdroják, @jazyk)"/>
     	<xsl:choose>
-    		<xsl:when test="$zvýrazněnýText">
+    		<xsl:when test="$zvýrazněnýZdroják">
     			<xsl:comment>Následující kód je v jazyce <xsl:value-of select="@jazyk"/></xsl:comment>
-    			<xsl:value-of disable-output-escaping="yes" select="$zvýrazněnýText"/>		
+    			<xsl:value-of disable-output-escaping="yes" select="$zvýrazněnýZdroják"/>
     		</xsl:when>
     		<xsl:otherwise>
     			<xsl:message>Zvýraznění syntaxe se nezdařilo → bude vložen původní nezvýrazněný kód.</xsl:message>
-    			<pre><xsl:apply-templates/></pre>
+    			<pre><xsl:value-of select="$zdroják"/></pre>
     		</xsl:otherwise>
-    	</xsl:choose>
+    	</xsl:choose>    	
     </xsl:template>
     
     <!--