Re: [xsl] Transforming a Loose Structure

Subject: Re: [xsl] Transforming a Loose Structure
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 21 Mar 2007 10:56:00 GMT
> How can i achieve my desired results?

it seems from your example that your transformation of sub is to defer
generating the subscript element until you reach text node descendents
of the original element, so that's:


<?xml version="1.0" encoding="UTF-8"?>
<section>
    <par>Test para <inline vertical-align="sub">test <inline 
font-style="italic">para1</inline> and more</inline> Test para</par>
</section>



<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  <xsl:template match="*">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>


  <xsl:template match="inline[@role='italic']">
    <emphasis role="italic"><xsl:apply-templates/></emphasis>
  </xsl:template>

  <xsl:template match="inline[@vertical-align]">
    <xsl:apply-templates/>
  </xsl:template>

  <xsl:template match="inline[@vertical-align='sub']//text()">
    <subscript><xsl:value-of select="."/></subscript>
  </xsl:template>


</xsl:stylesheet>




$ saxon8 inline2.xml inline2.xsl
<?xml version="1.0" encoding="UTF-8"?><section>
    <par>Test para <subscript>test </subscript><inline font-style="italic"><subscript>para1</subscript></inline><subscript> and more</subscript> Test para</par>
</section>

Current Thread