[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: Re: [xsl] XPath syntax error problem


Subject: RE: Re: [xsl] XPath syntax error problem
From: cknell@xxxxxxxxxx
Date: Sat, 22 Jan 2005 15:09:33 -0500

> " What am I doing wrong?"

The processor has told you what you are doing wrong. You just don't see it.
This is line 24 in your XSL file. 

<xsl:if test="count(//*[substring-after(@ref,':') = $elementName] = 0">

How do I know this without seeing the whole file? The error message told me so.
The error message says that you have failed to include a closing parenthesis for the count() function. Change the line to read like this and that message will go away.

<xsl:if test="count(//*[substring-after(@ref,':') = $elementName] = 0)">

Note the right parenthesis between the '0' and the closing quotation mark. It isn't in your code and that's why the processor is complaining.

-- 
Charles Knell
cknell@xxxxxxxxxx - email



-----Original Message-----
From:     Joe Fawcett <joefawcett@xxxxxxxxxxx>
Sent:     Sat, 22 Jan 2005 17:29:15 -0000
To:       <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Subject:  Re: [xsl] XPath syntax error problem

----- Original Message ----- 
From: "Kenneth Stephen" <marvin.the.cynical.robot@xxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Saturday, January 22, 2005 1:32 AM
Subject: [xsl] XPath syntax error problem


> Hi,
> 
>    I have the following template in my XSL :
> 
> <xsl:template match="xsd:element">
> <xsl:variable name="elementName" select="@name" />
> <xsl:if test="count(//*[substring-after(@ref,':') = $elementName] = 0">
> <xsl:if test="count(@name) = 1">
> <xsl:if test="/xsd:schema/@elementFormDefault = 'qualified'">
> <xsl:value-of select="concat($prefix,':')" />
> </xsl:if>
> <xsl:value-of select="@name" />
> </xsl:if>
> </xsl:if>
> <xsl:text>&eol;</xsl:text>
> </xsl:template>
> 
>    On execution, Saxon (and Xalan too) complain about a syntax error
> on the outermost "xsl:if" . The Saxon error is shown below :
> 
> bash-2.05b$ java net.sf.saxon.Transform ../data/Metadata_0101.xsd
> analyze-schema.xsl
> Error at xsl:if on line 24 of
> file:/C:/cygwin/home/zaphod/code/analyze-schema.xsl:
>  XPath syntax error in {...(@ref,':') = $elementName] ...}:
>    expected ")", found "<eof>"
> Transformation failed: Failed to compile stylesheet. 1 error detected.
> 
> 
>    What am I doing wrong? What I want to do is find out if the value
> of the "name" attribute on an xsd:element in the input occurs within a
> "ref" attribute elsewhere in my XML Schema file.
> 
> Thanks,
> Kenneth
> 
>

You are missing a closing parenthesis:
test="count(//*[substring-after(@ref,':') = $elementName] = 0"
=>
test="count(//*[substring-after(@ref,':') = $elementName]) = 0"

-- 

Joe


Current Thread
Keywords