Re: [xsl] Translating roman numerals into integers with XSLT 2.0

Subject: Re: [xsl] Translating roman numerals into integers with XSLT 2.0
From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx>
Date: Mon, 20 Dec 2004 10:53:06 -0800 (PST)
You could try something like this -

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";      

xmlns:xs="http://www.w3.org/2001/XMLSchema";           
xmlns:num="http://whatever"; version="2.0" >
    
<xsl:output method="text"/>
    
<xsl:variable name="max" select="10000" />
    
<xsl:template match="/">
  <xsl:call-template name="RomanToInteger">
    <xsl:with-param name="roman_number" select="'XXI'"
/>        
  </xsl:call-template>        
</xsl:template>
    
<xsl:template name="RomanToInteger">
  <xsl:param name="roman_number" />
  <xsl:for-each select="1 to $max">
    <xsl:if test="num:toRoman(.) = $roman_number">
      <xsl:value-of select="." />
    </xsl:if>
  </xsl:for-each>
</xsl:template>
    
<xsl:function name="num:toRoman" as="xs:string">
  <xsl:param name="value" as="xs:integer"/>
  <xsl:number value="$value" format="I"/>
</xsl:function>

</xsl:stylesheet>

The above XSL assumes, that there is some maximum
value of the number(in this example 10000).

I see this as an area of improvement..

Is there a way to break from xsl:for-each loop when
some condition is met?
here , xsl:if test="num:toRoman(.) = $roman_number"

Regards,
Mukul

--- Huditsch Roman <Roman.Huditsch@xxxxxxxxxxxxx>
wrote:

> Hi again,
> 
> Sorry, for bothering you a second time today, 
> but I was wondering if there is a more or less
> simple way
> of translating roman numerals into intergers with
> XSLT 2.0.
> 
> Or do I have to use the standard method for doing
> this 
> describes in the "XSLT Cookbook" by Sal Mangano?
> 
> Would be nice if format-number() or anything similar
> would allow
> me to o this...
> 
> Thank you very much for your patience.
> 
> wbr,
> Roman
> 
> _______________________________________
> 
> Roman Huditsch
> IT and Electronic Publishing
> LexisNexis ARD Orac 
> Marxergasse 25
> 1030 Vienna
> Austria 
> ph: +43-1-534 52-1514
> f: +43-1-534 52-140
> e-mail roman.huditsch@xxxxxxxxxxxxx
> www.lexisnexis.at
>  
> 
> > -----Urspr|ngliche Nachricht-----
> > Von: Michael Kay [mailto:mike@xxxxxxxxxxxx] 
> > Gesendet: Montag, 20. Dezember 2004 15:20
> > An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Betreff: RE: [xsl] Omitting default namespace in
> the output - XSLT 2.0
> > 
> > If you copy elements using xsl:copy-of, the output
> elements 
> > will have the same names as the input elements,
> and the 
> > system will automatically add declarations of the
> namespaces 
> > used in these names. You want your output elements
> to have a 
> > different name from the input elements (same local
> name, 
> > different URI). So you can't use copy-of.
> > 
> > To copy a tree while renaming elements, use a
> modified form 
> > of the identity template rule:
> > 
> > <xsl:template match="*">
> > <xsl:element name="{local-name()}">
> >   <xsl:copy-of select="@*"/>
> >   <xsl:apply-templates/>
> > </xsl:element>
> > </xsl:template>
> > 
> > Michael Kay
> > http://www.saxonica.com/
> >  
> > 
> > > -----Original Message-----
> > > From: Huditsch Roman
> [mailto:Roman.Huditsch@xxxxxxxxxxxxx]
> > > Sent: 20 December 2004 13:52
> > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > > Subject: [xsl] Omitting default namespace in the
> output - XSLT 2.0
> > > 
> > > Hi,
> > > 
> > > Given an example input like:
> > > 
> > > <?xml version="1.0" encoding="UTF-8"?> <norm 
> > > xmlns="myDefaultNamespace">
> > > 	<table>
> > > 		<row>
> > > 			<cell>My Table</cell>
> > > 		</row>
> > > 	</table>
> > > </norm>
> > > 
> > > I searched for an easy way to get output data,
> which is not 
> > associated 
> > > to my default namespace any more, with the help
> of <xsl:copy-of> in 
> > > XSLT 2.0 I hoped that the attribute
> "copy-namespaces" set to "no" 
> > > would help me here, but unfortunately I had no
> luck with Saxon 8.1.1
> > > 
> > > My output still looks like
> > > 
> > > <table>
> > > 	<row xmlns="myDefaultNamespace">
> > > 		<cell>My Table</cell>
> > > 	</row>
> > > </table>
> > > 
> > > 
> > > XSLT:
> > > =====
> > > 
> > > 	<xsl:template match="ln:table">
> > > 		<table>
> > > 			<xsl:copy-of select="node() | @*"
> > > copy-namespaces="no"/>
> > > 		</table>
> > > 	</xsl:template>
> > > 
> > > 
> > > Thanks in advance for your input!
> > > 
> > > wbr,
> > > Roman
> > > _______________________________________
> > > 
> > > Roman Huditsch
> > > IT and Electronic Publishing
> > > LexisNexis ARD Orac
> > > Marxergasse 25
> > > 1030 Vienna
> > > Austria
> > > ph: +43-1-534 52-1514
> > > f: +43-1-534 52-140
> > > e-mail roman.huditsch@xxxxxxxxxxxxx
> > > www.lexisnexis.at
> 
> 



		
__________________________________ 
Do you Yahoo!? 
All your favorites on one personal page  Try My Yahoo!
http://my.yahoo.com 

Current Thread