GitBucket
4.21.2
Toggle navigation
Snippets
Sign in
Files
Branches
1
Releases
1
Issues
Pull requests
Labels
Priorities
Milestones
Wiki
Forks
nigel.stanger
/
XML
Browse code
• Corrected exercise element to produce HTML output when it contains embedded paragraph elements.
master
1 parent
314dd6c
commit
adc4f1f34693249d492a246b69b0afa6614923fb
Nigel Stanger
authored
on 5 Aug 2015
Patch
Showing
1 changed file
modules/q-and-a.xml
Ignore Space
Show notes
View
modules/q-and-a.xml
<?xml version="1.0" encoding="utf-8"?> <!-- Elements for generating question and sample answer text in the likes of tutorial and lab exercises. --> <stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- Question text. This only exists so that we can ensure that appropriate <p> tags are correctly inserted. If this template didn't exist, showing the answers would generate invalid HTML. The answers are enclosed in a <div class="answer">...</div>. Without this template, the answer markup ends up embedded inside <p>...</p>, which is invalid. --> <template name="question" match="question"> <common formats="/latex/xelatex/"><xsl:apply-templates /></common> <common formats="/html/xhtml/"> <xsl:choose> <!-- Check whether there are actual paragraphs inside the question. If so, let them worry about inserting the <p> tags. --> <xsl:when test="count(paragraph|para|p|question|answer|code-block) != 0"> <xsl:apply-templates /> </xsl:when> <!-- Otherwise, insert <p> tags surrounding the question content. --> <xsl:otherwise> <p><xsl:apply-templates /></p> </xsl:otherwise> </xsl:choose> </common> </template> <!-- Sample answers, which may optionally be excluded from the output. This can be done globally for all answers by setting the style sheet parameter $showanswers to "no", or it can be done locally on a question-by-question basis by setting the @hide attribute of the element to "yes". @hide: If "yes", don't include this answer in the output stream. The default is to include the answer. --> <template name="answer" match="answer"> <common formats="/latex/xelatex/"> <!-- It's nice to weed out the sample answer markup at the XSLT processing stage to make LaTeX run faster. Note that \showanswers still needs to be called so that LaTeX can format chapter headings like "Answers for ..." --> <xsl:if test="$showanswers='yes'"> <xsl:text>\begin{answer}</xsl:text> <xsl:call-template name="newline-internal" /> <xsl:apply-templates /> <xsl:text>\end{answer}</xsl:text> <xsl:call-template name="newline-internal" /> <xsl:call-template name="newline-internal" /> </xsl:if> </common> <common formats="/html/xhtml/"> <xsl:if test="$showanswers='yes'"> <div class="answer"> <xsl:apply-templates /> </div> </xsl:if> </common> </template> <!-- Match hidden answers and do nothing. --> <template name="hidden-answer" match="answer[@hide='yes']" /> <!-- Generate an "exercise". These are numbered and labelled, and are displayed in a box. @label --> <template name="exercise" match="exercise"> <common formats="/latex/xelatex/"> <xsl:text>\medskip</xsl:text> <xsl:call-template name="newline-internal" /> <xsl:text>\begin{exercise}</xsl:text> <xsl:if test="@label"> <xsl:text>\label{</xsl:text> <xsl:value-of select="@label" /> <xsl:text>}</xsl:text> <xsl:call-template name="newline-internal" /> </xsl:if> <xsl:apply-templates /> <xsl:call-template name="newline-internal" /> <xsl:text>\end{exercise}</xsl:text> <xsl:call-template name="newline-internal" /> <xsl:text>\medskip</xsl:text> </common> <common formats="/html/xhtml/"> <xsl:if test="@label"><a id="{@label}"></a></xsl:if> <div style="border: 1px solid black; padding: 0.25em; margin-top: 0.5em; margin-bottom: 0.5em;"> <strong> <xsl:text>Exercise </xsl:text> <xsl:number count="exercise" level="any" format="1" /> <xsl:text>: </xsl:text> </strong> <xsl:apply-templates /> </div> </common> </template> </stylesheet>
<?xml version="1.0" encoding="utf-8"?> <!-- Elements for generating question and sample answer text in the likes of tutorial and lab exercises. --> <stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- Question text. This only exists so that we can ensure that appropriate <p> tags are correctly inserted. If this template didn't exist, showing the answers would generate invalid HTML. The answers are enclosed in a <div class="answer">...</div>. Without this template, the answer markup ends up embedded inside <p>...</p>, which is invalid. --> <template name="question" match="question"> <common formats="/latex/xelatex/"><xsl:apply-templates /></common> <common formats="/html/xhtml/"> <xsl:choose> <!-- Check whether there are actual paragraphs inside the question. If so, let them worry about inserting the <p> tags. --> <xsl:when test="count(paragraph|para|p|question|answer|code-block) != 0"> <xsl:apply-templates /> </xsl:when> <!-- Otherwise, insert <p> tags surrounding the question content. --> <xsl:otherwise> <p><xsl:apply-templates /></p> </xsl:otherwise> </xsl:choose> </common> </template> <!-- Sample answers, which may optionally be excluded from the output. This can be done globally for all answers by setting the style sheet parameter $showanswers to "no", or it can be done locally on a question-by-question basis by setting the @hide attribute of the element to "yes". @hide: If "yes", don't include this answer in the output stream. The default is to include the answer. --> <template name="answer" match="answer"> <common formats="/latex/xelatex/"> <!-- It's nice to weed out the sample answer markup at the XSLT processing stage to make LaTeX run faster. Note that \showanswers still needs to be called so that LaTeX can format chapter headings like "Answers for ..." --> <xsl:if test="$showanswers='yes'"> <xsl:text>\begin{answer}</xsl:text> <xsl:call-template name="newline-internal" /> <xsl:apply-templates /> <xsl:text>\end{answer}</xsl:text> <xsl:call-template name="newline-internal" /> <xsl:call-template name="newline-internal" /> </xsl:if> </common> <common formats="/html/xhtml/"> <xsl:if test="$showanswers='yes'"> <div class="answer"> <xsl:apply-templates /> </div> </xsl:if> </common> </template> <!-- Match hidden answers and do nothing. --> <template name="hidden-answer" match="answer[@hide='yes']" /> <!-- Generate an "exercise". These are numbered and labelled, and are displayed in a box. @label --> <template name="exercise" match="exercise"> <common formats="/latex/xelatex/"> <xsl:text>\medskip</xsl:text> <xsl:call-template name="newline-internal" /> <xsl:text>\begin{exercise}</xsl:text> <xsl:if test="@label"> <xsl:text>\label{</xsl:text> <xsl:value-of select="@label" /> <xsl:text>}</xsl:text> <xsl:call-template name="newline-internal" /> </xsl:if> <xsl:apply-templates /> <xsl:call-template name="newline-internal" /> <xsl:text>\end{exercise}</xsl:text> <xsl:call-template name="newline-internal" /> <xsl:text>\medskip</xsl:text> </common> <common formats="/html/xhtml/"> <xsl:if test="@label"><a id="{@label}"></a></xsl:if> <p style="border: 1px solid black; padding: 0.25em; margin-top: 0.5em; margin-bottom: 0.5em;"> <strong> <xsl:text>Exercise </xsl:text> <xsl:number count="exercise" level="any" format="1" /> <xsl:text>: </xsl:text> </strong> <xsl:apply-templates /> </p> </common> </template> </stylesheet>
Show line notes below