RE: [xsl] Saxon errors

Subject: RE: [xsl] Saxon errors
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 10 May 2007 08:41:30 +0100
Saxon is telling you that the XML parser has found an error in your XML
document. Your first step is to get out of denial: title your post "my
errors" not "Saxon errors".

You certainly need to correct the well-formedness error in your first line
(XSLT can only handle well-formed XML input). You also need to look for the
root cause: where did that file come from, who is generating ill-formed
(non-)XML and how can you prevent its happening again?

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

> -----Original Message-----
> From: Rob Newman [mailto:rlnewman@xxxxxxxx] 
> Sent: 10 May 2007 01:11
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Saxon errors
> 
> Hi All,
> 
> I am trying to parse a file (1.xml) that has the form:
> 
> 1 <pfarr name="<?xml version="1.0" encoding="iso-8859-1"?>">
> 2 <pfarr name="dls">
> 3 <pfarr name="TA_H02A">
> 4 <pfstring name="aa">0.011</pfstring>
> 5 <pfstring name="br24">27705432.0</pfstring>
> 6 <pfstring name="bw24">1177050.0</pfstring>
> 7 <pfstring name="cale">-</pfstring>
> 8 <pfstring name="ce">100.000</pfstring>
> 9 <pfstring name="cld">0</pfstring>
> 10 <pfstring name="clq">l</pfstring>
> 11 <pfstring name="clt">0.000</pfstring>
> 12 <pfstring name="con">yes</pfstring>
> 13 <pfstring name="da">0.058</pfstring>
> 14 <pfstring name="dbc">0</pfstring>
> 15 <pfstring name="dbd">0</pfstring>
> 16 <pfstring name="dbu">0</pfstring>
> 17 <pfstring name="dg">0.000</pfstring>
> 18 <pfstring name="dlt">3.040</pfstring>
> 19 <pfstring name="dr">2606</pfstring>
> 20 <pfstring name="dt">15.000</pfstring>
> 21 <pfstring name="dv">13.500</pfstring>
> 22 <pfstring name="elev">0.2041</pfstring>
> 23 <pfstring name="gp1">0.000</pfstring>
> 24 <pfstring name="gp24">2.000</pfstring>
> 25 <pfstring name="gps">elck 3d</pfstring>
> 26 <pfstring name="gpss">-</pfstring>
> 27 <pfstring name="inp">udp:166.159.115.120:5332:L1:startacq:0:0</ 
> pfstring>
> 28 <pfstring name="lat">44.676390</pfstring>
> 29 <pfstring name="lcq">100.000</pfstring> 30 <pfstring 
> name="lon">-123.999687</pfstring>
> 31 <pfstring name="m0">4</pfstring>
> 32 <pfstring name="m1">-34</pfstring>
> 33 <pfstring name="m2">-8</pfstring>
> 34 <pfstring name="m3">-</pfstring>
> 35 <pfstring name="m4">-</pfstring>
> 36 <pfstring name="m5">-</pfstring>
> 37 <pfstring name="meme">0</pfstring>
> 38 <pfstring name="nc">3</pfstring>
> 39 <pfstring name="ni24">0.0</pfstring>
> 40 <pfstring name="nl24">2.0</pfstring>
> 41 <pfstring name="np24">2.0</pfstring>
> 42 <pfstring name="nr24">0.0</pfstring>
> 43 <pfstring name="nrb">51</pfstring>
> 44 <pfstring name="nrs">63</pfstring>
> 45 <pfstring name="opt">isp1</pfstring>
> 46 <pfstring name="pb">0.000</pfstring>
> 47 <pfstring name="pbr">0.000</pfstring>
> 48 <pfstring name="pkce">0</pfstring>
> 49 <pfstring name="pkp">10596</pfstring> 50 <pfstring 
> name="pkse">0</pfstring>
> 51 <pfstring name="pt">1972</pfstring>
> 52 <pfstring name="rtm">10508.717</pfstring>
> 53 <pfstring name="sn">0100000B6980C3F2</pfstring>
> 54 <pfstring name="thr">56000</pfstring>
> 55 <pfstring name="tput">1.000</pfstring>
> 56 <pfstring name="trb">1171717136</pfstring>
> 57 <pfstring name="trs">1171717971</pfstring>
> 58 <pfstring name="vco">2056</pfstring>
> 59 </pfarr>
> 60 </pfarr>
> 61 <pfstring name="hostname">foley-4-72 132.239.4.72</pfstring>
> 62 <pfstring name="itvl">60</pfstring>
> 63 <pfstring name="model">q330</pfstring>
> 64 <pfstring name="orbc">132.239.4.72:39872</pfstring>
> 65 <pfstring name="pid">16279</pfstring>
> 66 <pfstring name="rtm">10818.125</pfstring>
> 67 <pfstring name="target">tadataHN</pfstring>
> 68 <pfstring name="type">dl</pfstring>
> 69 <pfstring name="ver">SunOS 4.8p  2:04 Feb 15, 
> 2007</pfstring> 70 </pfarr>
> 
> This is one of many files in a summary XML file (summary.xml):
> 
> 1 <?xml version="1.0" encoding="ISO-8859-1" ?>
> 2 <sources>
> 3     <source href="1.xml" />
> 4     <source href="2.xml" />
> 5     <source href="3.xml" />
> 6     <source href="4.xml" />
> 7 </sources>
> 
> My XSL script (convert.xsl):
> 
>        1 <?xml version="1.0" encoding="ISO-8859-1"?>
>        2
>        3 <xsl:stylesheet version="2.0" 
> xmlns:xsl="http://www.w3.org/ 1999/XSL/Transform">
>        4 <xsl:output method="xml" version="1.0" encoding="UTF-8"  
> indent="yes" />
>        5
>        6 <xsl:template match="/">
>        7     <xsl:variable name="alldataloggers">
>        8     <alldataloggerlist>
>        9         <xsl:apply-templates select="document( sources/ 
> source/@href, .)/pfarr/pfarr/pfarr" />
>       10     </alldataloggerlist>
>       11     </xsl:variable>
>       12
>       13     <xsl:variable name="dataloggers">
>       14     <dataloggerlist>
>       15         <xsl:for-each select="$alldataloggers/ 
> alldataloggerlist/datalogger">
>       16             <xsl:sort select="@sortorder" 
> order="ascending" />
>       17             <xsl:copy-of select="."/>
>       18         </xsl:for-each>
>       19     </dataloggerlist>
>       20     </xsl:variable>
>       21
>       22     <xsl:copy-of select="$dataloggers"/>
>       23
>       24 </xsl:template>
>       25
>       26 <!-- THIS GETS STATION NAME AND PARAMETER VALUES -->
>       27 <xsl:template match="pfarr">
>       28     <xsl:variable name="runstat" select="pfstring[@name =  
> 'con']" />
>       29     <!-- <xsl:variable name="rtm" select="pfstring[@name =  
> 'con']" /> -->
>       30     <xsl:variable name="sortorder">
>       31         <xsl:choose>
>       32             <xsl:when test="$runstat = 'yes'">4</xsl:when>
>       33             <xsl:when test="$runstat = 
> 'waiting'">4</xsl:when>
>       34             <xsl:when test="$runstat = 'su'">1</xsl:when>
>       35             <xsl:when test="$runstat = 'reg'">1</xsl:when>
>       36             <xsl:when test="$runstat = 
> 'sleeping'">1</xsl:when>
>       37             <xsl:when test="$runstat = 'hibernating'">1</ 
> xsl:when>
>       38             <xsl:when test="$runstat = 'no'">1</xsl:when>
>       39             <xsl:when test="$runstat = 
> 'stopped'">0</xsl:when>
>       40             <xsl:otherwise>1</xsl:otherwise>
>       41         </xsl:choose>
>       42     </xsl:variable>
>       43     <xsl:variable name="orderandname" select="concat 
> ( $sortorder,substring-after(@name, '_'))" />
>       44     <datalogger name="{@name}" sortorder="{$orderandname}">
>       45         <xsl:apply-templates select="pfstring"/>
>       46     </datalogger>
>       47 </xsl:template>
>       48
>       49 <xsl:template match="pfstring">
>       50     <xsl:element name="{@name}">
>       51         <xsl:value-of select="." />
>       52     </xsl:element>
>       53 </xsl:template>
>       54
>       55 </xsl:stylesheet>
> 
> 
> When I run Saxon (version 8.9J), I get the following errors:
> 
> saxon -o output.xml -s summary.xml convert.xsl
> Error on line 1 of file: 1.xml:
>    SXXP0003: Error reported by XML parser: Use "&lt;" for "<" in  
> attribute values.
> Error on line 9 of file:convert.xsl:
>    FODC0005: org.xml.sax.SAXParseException: Use "&lt;" for "<" in  
> attribute values.
> 
> No new (output.xml) file gets created. Should I just trash that  
> header line (<pfarr name="<?xml version="1.0" encoding="iso-8859-1"? 
>  >">) if that is the problem?
> 
> Thanks in advance,
> - Rob

Current Thread