xsl-list
[Top] [All Lists]

RE: [xsl] avoiding NaN-result in string processing due to missing elements

2008-12-01 12:02:42

If you want the output for this case to be an empty string, you could do

<xsl:decimal-format NaN=""/>

But I think I would write:

select="rdf:Description/(tiff:XResolution | @tiff:XResolution)/
  format-number(number(substring-before(.,'/'),
number(substring-after(.,'/'))"

which would return an empty sequence if the element/attribute does not
exist, and value-of outputs nothing if you select an empty sequence. 

Michael Kay
http://www.saxonica.com/


-----Original Message-----
From: cavecatem(_at_)directbox(_dot_)com 
[mailto:cavecatem(_at_)directbox(_dot_)com] 
Sent: 01 December 2008 17:32
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] avoiding NaN-result in string processing due 
to missing elements

Dear List,

I'm working with XSLT 2.0 and Saxon 8B to process Adobe 
XMP-format image meta data for display in HTML. I'm using 
Oxygen 7.1  to work it out.


XMP stores numerical values as Strings, e.g.  
<tiff:XResolution>2400000/10000</tiff:XResolution> and I 
managed to work out how to convert such a string into a useful number:


           <xsl:value-of 
select="format-number(number(substring-before((rdf:Description
/(tiff:XResolution | @tiff:XResolution)), '/')) div 
number(substring-after((rdf:Description/(tiff:XResolution | 
@tiff:XResolution)),'/')),'#######.')"/>
           
The problem is: If the element (or attribute, both are 
allowed in XMP) does not exist, the result I get in NaN (not 
a number).

A possible solution is to query for the element/attribute first

   <xsl:if test="rdf:Description/(tiff:XResolution | 
@tiff:XResolution)">
    <xsl:value-of select ...
   </xsl:if>
   
 Is there another way to do this?

Thanks. I'm on the digest version of the lists, so I cannot 
answer questions until tomorrow.
Regards
CJ


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>