R
Ralf Wahner
Dear Masters of XSLT
Could I ask you for a clue on the following question? I'd
like to use XSLT to transform an XML source file to LaTeX.
In the following small example the <para> Element contains
(I think so)
- a text node (node one)
- an element node (node two)
- a text node (node three)
Example:
<para>
Some words or lines of common text with LaTeX special
characters like $, # and _ (underscore) appear before
an element node.
<emph>Attention!</emph>
Take care for converting $ to \$, # to \# and _ to \_
before running latex.
</para>
I'd like to process the nodes in the <para> element content one
after the other with respect to their node type. For text nodes
it's sufficient just to change all occuring special characters,
while the <emph> element node should get e.g. a \textbf{} or
\emph{} before its content will be inserted (self-evidently after
first changing the special characters). In terms of pseudo-XSLT:
<xsl:template match="para">
<xsl:for-each select="."> <!-- get set of childs of para -->
<xsl:choose>
<xsl:when test="emph">
<!-- process element node -->
</xsl:when >
<xsltherwise>
<!-- process text node -->
</xsltherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
Unfortunately, this works only, when the <emph> element node
is cut out from the above example. I spend about five days but
gained no success. I pressume that my point of view is unfavo-
rable: Given the childs of a element node. Take one after the
other and detect the node type. "Node one is an element node,
node two is a processing instruction, ...".
I'm working with XSLT for several months now, but still haven't
understood how to think/to look at a problem to find an approp-
riate solution in XSLT. I'd gratefully appreciate any hint on
the topic at hand as well as on "Thinking in XSLT".
Thank you very much,
Ralf
Could I ask you for a clue on the following question? I'd
like to use XSLT to transform an XML source file to LaTeX.
In the following small example the <para> Element contains
(I think so)
- a text node (node one)
- an element node (node two)
- a text node (node three)
Example:
<para>
Some words or lines of common text with LaTeX special
characters like $, # and _ (underscore) appear before
an element node.
<emph>Attention!</emph>
Take care for converting $ to \$, # to \# and _ to \_
before running latex.
</para>
I'd like to process the nodes in the <para> element content one
after the other with respect to their node type. For text nodes
it's sufficient just to change all occuring special characters,
while the <emph> element node should get e.g. a \textbf{} or
\emph{} before its content will be inserted (self-evidently after
first changing the special characters). In terms of pseudo-XSLT:
<xsl:template match="para">
<xsl:for-each select="."> <!-- get set of childs of para -->
<xsl:choose>
<xsl:when test="emph">
<!-- process element node -->
</xsl:when >
<xsltherwise>
<!-- process text node -->
</xsltherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
Unfortunately, this works only, when the <emph> element node
is cut out from the above example. I spend about five days but
gained no success. I pressume that my point of view is unfavo-
rable: Given the childs of a element node. Take one after the
other and detect the node type. "Node one is an element node,
node two is a processing instruction, ...".
I'm working with XSLT for several months now, but still haven't
understood how to think/to look at a problem to find an approp-
riate solution in XSLT. I'd gratefully appreciate any hint on
the topic at hand as well as on "Thinking in XSLT".
Thank you very much,
Ralf