[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] unfolding compressed equivalents


Subject: Re: [xsl] unfolding compressed equivalents
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 23 Jan 2008 22:29:37 GMT

<equivalent>
    <omittable>last</omittable>
    <text> </text>
    <either>Sunday</either>
    <or>Monday</or>
    <or>Tuesday</or>
    <text> </text>
    <either>evening</either>
    <or>night</or>
    <text> I was at home</text>
     <x/>
</equivalent>


<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  
<xsl:template match="equivalent">
  <xsl:apply-templates select="*[1]"/>
</xsl:template>


<xsl:template match="equivalent/*">
  <xsl:param name="done" as="node()*"/>
  <xsl:apply-templates select="following-sibling::*[1]">
    <xsl:with-param name="done" select="$done,."/>
  </xsl:apply-templates>
</xsl:template>

<xsl:template match="equivalent/omittable" priority="2">
  <xsl:param name="done" as="node()*"/>
  <xsl:apply-templates select="following-sibling::*[1]">
    <xsl:with-param name="done" select="$done"/>
  </xsl:apply-templates>
  <xsl:apply-templates select="following-sibling::*[1]">
    <xsl:with-param name="done" select="$done,."/>
  </xsl:apply-templates>
</xsl:template>

<xsl:template match="equivalent/either|equivalent/or" priority="2">
  <xsl:param name="done" as="node()*"/>
  <xsl:apply-templates select="following-sibling::*[not(self::or)][1]">
    <xsl:with-param name="done" select="$done,."/>
  </xsl:apply-templates>
  <xsl:apply-templates select="following-sibling::*[1][self::or]">
    <xsl:with-param name="done" select="$done"/>
  </xsl:apply-templates>
</xsl:template>

<xsl:template match="equivalent/x" priority="2">
  <xsl:param name="done" as="node()*"/>
 :<equivalent><xsl:value-of select="$done" separator=""/></equivalent>
</xsl:template>
</xsl:stylesheet>



$ saxon9 equiv.xml equiv.xsl
<?xml version="1.0" encoding="UTF-8"?>
 :<equivalent> Sunday evening I was at home</equivalent>
 :<equivalent> Sunday night I was at home</equivalent>
 :<equivalent> Monday evening I was at home</equivalent>
 :<equivalent> Monday night I was at home</equivalent>
 :<equivalent> Tuesday evening I was at home</equivalent>
 :<equivalent> Tuesday night I was at home</equivalent>
 :<equivalent>last Sunday evening I was at home</equivalent>
 :<equivalent>last Sunday night I was at home</equivalent>
 :<equivalent>last Monday evening I was at home</equivalent>
 :<equivalent>last Monday night I was at home</equivalent>
 :<equivalent>last Tuesday evening I was at home</equivalent>
 :<equivalent>last Tuesday night I was at home</equivalent>


David

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. 
________________________________________________________________________


Current Thread