diff --git a/Doc/Sd1/Statements/statements.xml b/Doc/Sd1/Statements/statements.xml index 48ab1334aee57225fc506c44fb98a034bd62c922..8d323d6c7a101d9e4ecb03827edd6ccea7dec60e 100644 --- a/Doc/Sd1/Statements/statements.xml +++ b/Doc/Sd1/Statements/statements.xml @@ -866,9 +866,9 @@ public class App { <td valign="top"><screen>Enter a value:123 You entered 123</screen><para>See <methodname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html#nextBoolean()">nextBoolean()</methodname>, + xlink:href="javaapi://java.util.Scanner#nextBoolean()">nextBoolean()</methodname>, <methodname><link - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html#nextByte()">nextByte()</link></methodname> + xlink:href="javaapi://java.util.Scanner#nextByte()">nextByte()</link></methodname> and friends.</para></td> </tr> </informaltable> @@ -1038,14 +1038,14 @@ System.out.println("New Result:" + augmentedMark);</programlisting> final int pointsToAdd = 3; final int augmentedMark = <link - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#min(int,int)">Math.min</link>(maximumPoints, pointsReached + pointsToAdd); + xlink:href="javaapi://Math#min(int,int)">Math.min</link>(maximumPoints, pointsReached + pointsToAdd); System.out.println("New Result:" + augmentedMark); }</programlisting> <para>You will fully understand the above <classname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html">Math</classname>.<methodname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html#min(int,int)">min(...)</methodname> + xlink:href="javaapi://Math">Math</classname>.<methodname + xlink:href="javaapi://Math#min(int,int)">min(...)</methodname> expression after finishing the <quote>Static Final Variables</quote> section of <xref linkend="bib_Kurniawan"/>.</para> @@ -1070,7 +1070,7 @@ System.out.println("New Result:" + augmentedMark);</programlisting> <figure xml:id="sd1VideoUsingScannerClass"> <title>Using a <classname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html">Scanner</classname> + xlink:href="javaapi://java.util.Scanner">Scanner</classname> class collecting user input.</title> <mediaobject> @@ -1701,7 +1701,7 @@ switch(<emphasis role="red">day % 7</emphasis>) { <programlisting language="java">String month, season; ... // Since Java 7: <link - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</link> based <code + xlink:href="javaapi://String">String</link> based <code language="java">case</code> labels switch(month) { case "March": case "April": case "May": @@ -1742,7 +1742,7 @@ Unknown day name 'July'</screen> <orderedlist> <listitem> <para>Starting from <xref linkend="glo_Java"/> 7 <classname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname> + xlink:href="javaapi://String">String</classname> based <code language="java">switch</code> statements are allowed.</para> </listitem> @@ -1750,8 +1750,8 @@ Unknown day name 'July'</screen> <listitem> <para>You may read strings into your application using <classname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html">Scanner</classname>.<methodname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html#next()">next()</methodname>.</para> + xlink:href="javaapi://java.util.Scanner">Scanner</classname>.<methodname + xlink:href="javaapi://java.util.Scanner#next()">next()</methodname>.</para> </listitem> </orderedlist> </tip> @@ -1915,24 +1915,24 @@ switch (number) { <td valign="top"><itemizedlist> <listitem> <para>byte and <classname - xlink:href="javaapi://java.lang.Byte">Byte</classname></para> + xlink:href="javaapi://Byte">Byte</classname></para> </listitem> <listitem> <para>short and <classname - xlink:href="javaapi://java.lang.Short">Short</classname></para> + xlink:href="javaapi://Short">Short</classname></para> </listitem> </itemizedlist></td> <td valign="top"><itemizedlist> <listitem> <para>int and <classname - xlink:href="javaapi://java.lang.Integer">Integer</classname></para> + xlink:href="javaapi://Integer">Integer</classname></para> </listitem> <listitem> <para>char and <classname - xlink:href="javaapi://java.lang.Character">Character</classname></para> + xlink:href="javaapi://Character">Character</classname></para> </listitem> </itemizedlist></td> </tr> @@ -2933,9 +2933,9 @@ for (int row = 0; row < numberOfRows; row++) { <co xml:id="sd1_callout_printTriangle-4"> <para>Print an individual character. Notice the presence of a <methodname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#print(java.lang.String)">print(....)</methodname> + xlink:href="javaapi://java.io.PrintStream#print(java.lang.String)">print(....)</methodname> rather than a <methodname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#println(java.lang.String)">println()</methodname> + xlink:href="javaapi://java.io.PrintStream#println(java.lang.String)">println()</methodname> method call. This way printing continues within a given line rather than breaking to a new one.</para> </callout> @@ -2945,12 +2945,12 @@ for (int row = 0; row < numberOfRows; row++) { <co <para>After each line we need a line break <code language="java">'\n'</code> for starting the next one using <methodname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#println()">println()</methodname>. + xlink:href="javaapi://java.io.PrintStream#println()">println()</methodname>. If you prefer explicit code you may use <package - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html">System</package>.<parameter - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#out">out</parameter>. + xlink:href="javaapi://System">System</package>.<parameter + xlink:href="javaapi://System#out">out</parameter>. <methodname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#print(char)">print('\n')</methodname> + xlink:href="javaapi://java.io.PrintStream#print(char)">print('\n')</methodname> instead.</para> </callout> </calloutlist> @@ -3182,7 +3182,7 @@ System.out.println("<emphasis role="red">###</emphasis>"); printing fixed numbers of space (<code>''</code>) characters using loop statements. The <classname>System</classname><code>.</code><property>out</property><code>.</code><methodname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#format(java.lang.String,java.lang.Object...)">format()</methodname> + xlink:href="javaapi://java.io.PrintStream#format(java.lang.String,java.lang.Object...)">format()</methodname> method as in <xref linkend="sd1QandaSquareNumberTableFormatted"/> allows for getting rid of these. As an example printing the tree's top @@ -3221,9 +3221,9 @@ System.out.println("<emphasis role="red">X</emphasis>"); </programlisting></ <para>Moreover starting with <xref linkend="glo_Java"/> 11 the <classname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname> + xlink:href="javaapi://String">String</classname> class features a <methodname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#repeat(int)">repeat()</methodname> + xlink:href="javaapi://String#repeat(int)">repeat()</methodname> method:</para> <informaltable border="1"> @@ -3248,7 +3248,7 @@ for (int i = 0; i < repetitions; i++) { <tr> <th>Using <methodname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#repeat(int)">repeat(int)</methodname> + xlink:href="javaapi://String#repeat(int)">repeat(int)</methodname> instead</th> </tr> @@ -3340,15 +3340,15 @@ System.out.format("%"+ (numberOfRows + 1) + "s\n", "###");</programlisting> <listitem> <para>Read about using <classname>System</classname><code>.</code><property>out</property><code>.</code><methodname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#format(java.lang.String,java.lang.Object...)">format()</methodname> + xlink:href="javaapi://java.io.PrintStream#format(java.lang.String,java.lang.Object...)">format()</methodname> and <methodname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#repeat(int)">repeat(int)</methodname> + xlink:href="javaapi://String#repeat(int)">repeat(int)</methodname> in the previous exercises solution.</para> </listitem> <listitem> <para>The <methodname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#indent(int)">indent(int)</methodname> + xlink:href="javaapi://String#indent(int)">indent(int)</methodname> method allows for indenting multi line blocks:</para> <informaltable border="1"> @@ -3683,11 +3683,11 @@ System.out.println("<emphasis role="red">[___]</emphasis>"); <para>Similar to the previous exercise <xref linkend="sd1QandaXmasTree"/> this time we replace all inner loops by<classname> using </classname><classname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>.<methodname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#indent(int)">indent()</methodname> + xlink:href="javaapi://String">String</classname>.<methodname + xlink:href="javaapi://String#indent(int)">indent()</methodname> and <classname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html">String</classname>.<methodname - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#repeat(int)">repeat()</methodname>. + xlink:href="javaapi://String">String</classname>.<methodname + xlink:href="javaapi://String#repeat(int)">repeat()</methodname>. This variant's full source code is on offer at <link xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/tree/master/Doc/Sd1/Ref/Statements/MoreFunXmasTree/src/main/java/de/hdm_stuttgart/mi/sd1/XmasUsingFormat.java">XmasUsingFormat.java</link>.</para> @@ -3868,11 +3868,11 @@ System.out.print("[___]".indent(numberOfRowGroups + 1));</programlisting> xlink:href="https://docs.oracle.com/javase/tutorial/java/data/numberformat.html">Formatting Numeric Print Output</link> and learn how to style numeric output: Use <methodname><link - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#out">System.out</link>.<link - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#format(java.lang.String,java.lang.Object...)">format</link>(...%nd...)</methodname> + xlink:href="javaapi://System#out">System.out</link>.<link + xlink:href="javaapi://java.io.PrintStream#format(java.lang.String,java.lang.Object...)">format</link>(...%nd...)</methodname> instead of <methodname><link - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/System.html#out">System.out</link>.<link - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/PrintStream.html#println()">println</link>(...)</methodname> + xlink:href="javaapi://System#out">System.out</link>.<link + xlink:href="javaapi://java.io.PrintStream#println()">println</link>(...)</methodname> statements</para> </tip></para> </question> @@ -3999,7 +3999,7 @@ System.out.format("Start:<emphasis role="red">%5d</emphasis>:End", <emphasis xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/-/blob/master/Doc/Sd1/Ref/Statements/MultSimpleHtmlTable/src/main/java/de/hdm_stuttgart/mi/sd1/App.java">App.java</link>. This solution uses both <xref linkend="glo_Java"/> 15 multi line blocks and the String.<link - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#indent(int)">indent(..)</link> + xlink:href="javaapi://String#indent(int)">indent(..)</link> method.</para> </answer> </qandaentry> @@ -4055,7 +4055,7 @@ System.out.format("Start:<emphasis role="red">%5d</emphasis>:End", <emphasis <para>Having integer values of differing lengths you have to consider right justified output. The integer <link - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Formatter.html#syntax">format + xlink:href="javaapi://java.util.Formatter#syntax">format specifier</link> <code>%...d</code> is your friend here. The subsequent example prints four integer values in right justified style within output fields of common @@ -4867,7 +4867,7 @@ for (int i = 1; i < 50; i++) { </m:math> </inlineequation> equals 6227020800 which is ways beyond <code - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html#MAX_VALUE">Integer.MAX_VALUE</code> + xlink:href="javaapi://Integer#MAX_VALUE">Integer.MAX_VALUE</code> == 2147483647 giving rise to a (silent) arithmetic overflow. But even declaring our variable <code language="java">product</code> of type <code @@ -4899,7 +4899,7 @@ for (int i = 1; i < 50; i++) { <para>This time <code>20! == 2432902008176640000</code> is the last correct value being smaller than <code language="java" - xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Long.html#MAX_VALUE">Long.MAX_VALUE</code> + xlink:href="javaapi://Long#MAX_VALUE">Long.MAX_VALUE</code> == 9223372036854775807.</para> <para>Fortunately we have another option. Consider an @@ -5493,7 +5493,7 @@ import java.util.Random; // and number of tries. final int randomValue = new Random() // Selecting a pseudo random value - .<link xlink:href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Random.html#nextInt(int)">nextInt(11)</link>; // between 0 and 10 (inclusive). + .<link xlink:href="javaapi://java.util.Random#nextInt(int)">nextInt(11)</link>; // between 0 and 10 (inclusive). // ToDo: complete the implementation }</programlisting> diff --git a/ws/Docbook/CustomLayer/lib/reveal.js-3.9.2.tgz b/ws/Docbook/CustomLayer/lib/reveal.js-3.9.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..8e4cbd9e375781d0b28158a3f39c19394454ad65 Binary files /dev/null and b/ws/Docbook/CustomLayer/lib/reveal.js-3.9.2.tgz differ diff --git a/ws/Docbook/Extensions/Tdata/Common/Components/exampleSlides.xml b/ws/Docbook/Extensions/Tdata/Common/Components/exampleSlides.xml index 422dca2c35db5c2677b29b4463be0fbe365b565b..94640fcf6321ddd9fc2943691768a8fcef31fad2 100644 --- a/ws/Docbook/Extensions/Tdata/Common/Components/exampleSlides.xml +++ b/ws/Docbook/Extensions/Tdata/Common/Components/exampleSlides.xml @@ -171,7 +171,7 @@ <itemizedlist> <listitem> - <para>A normal <classname + <para>A <abbrev>html</abbrev> <classname xlink:href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Scanner.html">Scanner</classname> reference</para> </listitem> @@ -184,15 +184,32 @@ <listitem> <para>Simplified <link - xlink:href="javaapi://java.lang.String">String</link> reference - for <package>java.lang</package> default package</para> + xlink:href="javaapi://java.lang.String">String</link> in default + package</para> </listitem> <listitem> <para><link - xlink:href="javaapi://java.lang.String#join(java.lang.CharSequence,java.lang.Iterable)">String.join</link> - method reference for <package>java.lang</package> default - package</para> + xlink:href="javaapi://java.lang.String#join(java.lang.CharSequence,java.lang.Iterable)">String.join(CharSequence, + Iterable)</link> method</para> + </listitem> + + <listitem> + <para><link + xlink:href="javaapi://java.lang.String#copyValueOf(char[],int,int)">String.copyValueOf(char[], + int , int )</link> method </para> + </listitem> + + <listitem> + <para><link + xlink:href="javaapi://java.lang.String#String(byte[],int,int,java.nio.charset.Charset)">String.String(byte[], + int, int, Charset)</link> method</para> + </listitem> + + <listitem> + <para><link + xlink:href="javaapi://Long#MAX_VALUE">Long.MAX_VALUE</link> + constant</para> </listitem> </itemizedlist> </figure> diff --git a/ws/Docbook/Preprocess/Xsl/docbook2docbook.xsl b/ws/Docbook/Preprocess/Xsl/docbook2docbook.xsl index 09d879e03b13aa0fbd215df341036f3361db60c6..4c10b4ab7757378a312e9379725b1bc3f00f8750 100644 --- a/ws/Docbook/Preprocess/Xsl/docbook2docbook.xsl +++ b/ws/Docbook/Preprocess/Xsl/docbook2docbook.xsl @@ -74,23 +74,31 @@ <xsl:choose> <xsl:when test="contains($javaUrl, '#')"> + + <xsl:variable name="fqJavaClassname" select="substring-before($javaUrl, '#')"/> + <xsl:call-template name="javaApiClassname2htmlReference"> - <xsl:with-param name="javaApiClassname" select="substring-before($javaUrl, '#')"/> + <xsl:with-param name="fqJavaClassname" select="$fqJavaClassname"/> </xsl:call-template> <xsl:text>#</xsl:text> - <xsl:message> - <xsl:value-of select="substring-after($javaUrl, '#')"/> - </xsl:message> + <xsl:variable name="javaClassname"> + <xsl:value-of select="tokenize($fqJavaClassname, '\.')[last()]"/> + <!-- + <xsl:variable name="fqJavaNameComponents" select="tokenize($fqJavaClassname, '\.')"/> + <xsl:value-of select="$fqJavaNameComponents[last()]"/> + --> + </xsl:variable> <xsl:call-template name="javaApiArgs2htmlReference"> - <xsl:with-param name="javaArguments" select="substring-after($javaUrl, '#')"/> + <xsl:with-param name="javaClassName" select="$javaClassname"/> + <xsl:with-param name="javaMethodnameAndArguments" select="substring-after($javaUrl, '#')"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:call-template name="javaApiClassname2htmlReference"> - <xsl:with-param name="javaApiClassname" select="$javaUrl"/> + <xsl:with-param name="fqJavaClassname" select="$javaUrl"/> </xsl:call-template> </xsl:otherwise> @@ -107,21 +115,43 @@ </xsl:template> <xsl:template name="javaApiArgs2htmlReference"> - <xsl:param name="javaArguments"/> - <xsl:value-of select="$javaArguments"/> + <xsl:param name="javaClassName"/> + <xsl:param name="javaMethodnameAndArguments"/> + + <xsl:variable name="methodname" select="substring-before($javaMethodnameAndArguments, '(')"/> + + <xsl:variable name="unescapedHtmlReference"> + <xsl:choose> + <xsl:when test="$methodname eq $javaClassName"> + <xsl:text><init>(</xsl:text> + <xsl:value-of select="substring-after($javaMethodnameAndArguments, '(')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$javaMethodnameAndArguments"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + + <!-- + https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html#%3Cinit%3E(byte%5B%5D,int,int,java.nio.Charset) + https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html#%3Cinit%3E(byte%5B%5D,int,int,java.nio.charset.Charset) + --> + + <xsl:value-of select="replace(replace($unescapedHtmlReference,'\[','%5B'), '\]', '%5D')"/> </xsl:template> <xsl:template name="javaApiClassname2htmlReference"> - <xsl:param name="javaApiClassname"/> + <xsl:param name="fqJavaClassname"/> <xsl:value-of select="$javaApiBaseUrl"/> <xsl:choose> - <xsl:when test="contains($javaApiClassname, '.')"> + <xsl:when test="contains($fqJavaClassname, '.')"> <xsl:text>/</xsl:text> - <xsl:value-of select="replace($javaApiClassname, '\.', '/')"/> + <xsl:value-of select="replace($fqJavaClassname, '\.', '/')"/> </xsl:when> <xsl:otherwise> <xsl:text>/java/lang/</xsl:text> - <xsl:value-of select="$javaApiClassname"/> + <xsl:value-of select="$fqJavaClassname"/> </xsl:otherwise> </xsl:choose> <xsl:text>.html</xsl:text> diff --git a/ws/Docbook/Preprocess/make.rules b/ws/Docbook/Preprocess/make.rules index e9cbec722163b137746e47342919bb042ceccd04..c032a80ccce185efb1719a78286836c9e066dff8 100644 --- a/ws/Docbook/Preprocess/make.rules +++ b/ws/Docbook/Preprocess/make.rules @@ -147,7 +147,7 @@ SAXONCMD=java -cp "${DBOOK_XSL}/tools/lib/saxon9he.jar:/usr/share/java/xercesImp %.slide: %.slide.xml ${SAXON6CMD} $< ${DBOOK_XSL_CUSTOM}/slide/xsl/slideHdm.xsl ${dbookXslSlideParam} - rsync -a --exclude .git /usr/share/reveal.js . + tar zxf /usr/share/hdm-docbook-xsl/CustomLayer/lib/reveal.js-3.9.2.tgz cd reveal.js; patch -p1 < ${DBOOK_XSL_CUSTOM}/slide/patch/reveal.css.patch rsync -a ${DBOOK_XSL_CUSTOM}/slide/slideAssets . touch $*.slide