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

Subject: RE: [xsl] avoiding NaN-result in string processing due to missing elements
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 1 Dec 2008 17:02:09 -0000
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@xxxxxxxxxxxxx [mailto:cavecatem@xxxxxxxxxxxxx] 
> Sent: 01 December 2008 17:32
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> 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

Current Thread