[Home] [By Thread] [By Date] [Recent Entries]
Dear XSL experts,
I am trying to write a WordML to DocBook transformation. Everything works fine but I cannot instantiate the templates below. Hope that anyone can help me. The input files looks like the following: <?xml version="1.0" encoding="UTF-8"?> <w:body xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2"> <w:p wsp:rsidP="00A161FC" wsp:rsidR="00A161FC" wsp:rsidRDefault="00882C04"> <w:pPr> <w:pStyle w:val="heading1"/> </w:pPr> <w:r> <w:t>1. </w:t> </w:r> <w:r wsp:rsidR="00A161FC"> <w:t>Eine Cberschrift Ebene 1</w:t> </w:r> <w:r wsp:rsidR="00076292"> <w:t> (K1)</w:t> </w:r> </w:p> <w:p wsp:rsidP="007C4D27" wsp:rsidR="007C4D27" wsp:rsidRDefault="007C4D27" wsp:rsidRPr="007C4D27"> <w:pPr> <w:pStyle w:val="paragraph"/> </w:pPr> <w:r> <w:t>Ein Absatz. Ein Absatz. Ein Absatz.</w:t> </w:r> </w:p> <w:p wsp:rsidP="00176E25" wsp:rsidR="00176E25" wsp:rsidRDefault="00882C04"> <w:pPr> <w:pStyle w:val="heading2"/> </w:pPr> <w:r> <w:t>1.1 </w:t> </w:r> <w:r wsp:rsidR="00176E25"> <w:t>Cberschrift Ebene 2 (K1)</w:t> </w:r> </w:p> <w:p wsp:rsidP="005B5D4F" wsp:rsidR="005B5D4F" wsp:rsidRDefault="005B5D4F"> <w:pPr> <w:pStyle w:val="heading3"/> </w:pPr> <w:r> <w:t>1.1.1 Cberschrift Ebene 3 (K1)</w:t> </w:r> </w:p> <w:p wsp:rsidP="00933AB1" wsp:rsidR="00933AB1" wsp:rsidRDefault="00933AB1" wsp:rsidRPr="00933AB1"> <w:pPr> <w:pStyle w:val="paragraph"/> </w:pPr> <w:r wsp:rsidRPr="00933AB1"> <w:t>Ein Absatz (K1)</w:t> </w:r> </w:p> <w:p wsp:rsidP="00933AB1" wsp:rsidR="003E1625" wsp:rsidRDefault="003E1625" wsp:rsidRPr="003E1625"> <w:pPr> <w:pStyle w:val="heading3"/> </w:pPr> <w:r> <w:t>1.1.2</w:t> </w:r> <w:r wsp:rsidRPr="003E1625"> <w:t> Cberschrift Ebene 3 (K1)</w:t> </w:r> </w:p> <w:p wsp:rsidP="00A161FC" wsp:rsidR="00A161FC" wsp:rsidRDefault="00A161FC"> <w:pPr> <w:pStyle w:val="paragraph"/> </w:pPr> <w:r> <w:t>Ein </w:t> </w:r> <w:r wsp:rsidRPr="00273261"> <w:rPr> <w:rStyle w:val="emphasis1"/> </w:rPr> <w:t>Absatz</w:t> </w:r> <w:r wsp:rsidR="00076292"> <w:t> (K1)</w:t> </w:r> </w:p> </w:body> My xsl file: <xsl:template match="w:body"> <chapter> <xsl:call-template name="chapter"/> </chapter> </xsl:template> <xsl:template name="chapter"> <xsl:param name="level" select="1"/> <xsl:param name="nodes" select="*"/> <xsl:for-each-group select="$nodes" group-starting-with="*[descendant-or-self::*[@w:val=concat('heading',$level)]]"> <xsl:choose> <xsl:when test="current-group()[descendant-or-self::*[@w:val=concat('heading',$level)]]"> <xsl:element name="sect{$level}"> <xsl:apply-templates select="node()"/> <xsl:choose> <xsl:when test="not(current-group()[position()!=1])"> <xsl:for-each-group select="current-group()[position()!=1]" group-starting-with="*[descendant-or-self::*[@w:val=starts-with(.,'heading')]]"> <xsl:apply-templates select="current-group()"/> </xsl:for-each-group> </xsl:when> <xsl:otherwise> <xsl:call-template name="chapter"> <xsl:with-param name="level" select="$level+1"/> <xsl:with-param name="nodes" select="current-group()"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:element> </xsl:when> </xsl:choose> </xsl:for-each-group> </xsl:template> <!-- These templates are not instantiate --> <xsl:template match="w:p[descendant-or-self::*[@w:val='paragraph']]"> <para> <xsl:apply-templates/> </para> </xsl:template> <xsl:template match="w:p[descendant-or-self::*[@w:val='heading1']]"> <title> <xsl:apply-templates/> </title> </xsl:template> <xsl:template match="w:p[descendant-or-self::*[@w:val='heading2']]"> <title> <xsl:apply-templates/> </title> </xsl:template> <xsl:template match="w:p[descendant-or-self::*[@w:val='heading3']]"> <title> <xsl:apply-templates/> </title> </xsl:template> And the output should look like the following; <?xml version="1.0" encoding="UTF-16"?> <book> <chapter> <sect1> <title>1. Eine Cberschrift Ebene 1 (K1)</title> <para>Ein Absatz. Ein Absatz. Ein Absatz.</para> <sect2> <title>1.1 Cberschrift Ebene 2 (K1)</title> <sect3> <title>1.1.1 Cberschrift Ebene 3 (K1)</title> <para>Ein Absatz (K1)</para> </sect3> <sect3> <title>1.1.2 Cberschrift Ebene 3 (K1)</title> <para>Ein <emphasis>Absatz</emphasis> (K1)</para> </sect3> </sect2> </sect1> </chapter> </book> regards Andreas
|

Cart



