Subject: RE: [xsl] Type error with variable as=xs:string using xsl:choose From: "Trevor Nicholls" <trevor@xxxxxxxxxxxxxxxxxx> Date: Thu, 7 Sep 2006 22:01:03 +1200 |
I can't see how $xsrc can have more than one node: <xsl:variable name="xsrc" as="xs:string"> <xsl:value-of select="@src" /> </xsl:variable> Then follows the variable declaration in my original email, below. The actual XML element on which the template is choking is this one: <icon src="../../abc/images/def/icon_arrow.gif" dpi="96"/> Checking my logs, I have found that the error only occurs for a few instances of <icon>; most are converted without problems, e.g. <icon src="images/edf/features/pivot.gif" dpi="96"/> In fact, it looks like it is the "../../" prefix which may be the problem - but the src values which include this are valid and correct. Does this extra information change the advice at all? Cheers Trevor -----Original Message----- From: Joe Fawcett [mailto:joefawcett@xxxxxxxxxxx] Sent: Thursday, 7 September 2006 9:41 p.m. To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: RE: [xsl] Type error with variable as=xs:string using xsl:choose You defined the variable as a single string instance. If $xsrc has more than one node and the xsl:otherwise instruction kicks in then this is an error. Perhaps change to: <xsl:otherwise> <xsl:value-of select="$xsrc[1]" /> </xsl:otherwise> Joe >From: "Trevor Nicholls" <trevor@xxxxxxxxxxxxxxxxxx> >Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx >To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> >Subject: [xsl] Type error with variable as=xs:string using xsl:choose >Date: Thu, 7 Sep 2006 21:29:25 +1200 > >The following variable definition is giving me the error >"XTTE0570: A sequence of more than one item is not allowed as the value of >variable normsrc" > >I'm using Saxon 8.6.1 on Windows XP. > >==== ><xsl:variable name="normsrc" as="xs:string"> ><xsl:choose> ><xsl:when test="contains($xsrc,'/images/images/')"> ><xsl:text>images/</xsl:text> ><xsl:value-of select="substring-after($xsrc,'/images/images/')" /> ></xsl:when> ><xsl:when test="contains($xsrc,'/images/')"> ><xsl:text>images/</xsl:text> ><xsl:value-of select="substring-after($xsrc,'/images/')" /> ></xsl:when> ><xsl:otherwise> ><xsl:value-of select="$xsrc" /> ></xsl:otherwise> ></xsl:choose> ></xsl:variable> >==== > >If I drop the as="xs:string" attribute it works perfectly, but I'm sure >I've >got exactly this construction elsewhere without complaint. One difference >with this logic is that the 'when' tests overlap: any $xsrc that matches >the >first 'when' will also match the second, but I understood that 'choose' >will >only make one choice. Am I confused? > >Cheers >Trevor
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Type error with variable , Joe Fawcett | Thread | RE: [xsl] Type error with variable , Michael Kay |
RE: [xsl] Data Integration at runti, Michael Kay | Date | RE: [xsl] Data Integration at runti, Ambika.Das |
Month |