[ 
http://issues.apache.org/jira/browse/XERCESJ-1165?page=comments#action_12412378 
] 

Jonathan Mezach commented on XERCESJ-1165:
------------------------------------------

I see. I didn't notice this because for some reason, my debugger (Eclipse) 
doesn't show me any local variables. But anyway, I am in fact using the 
validator in Java 5, but isn't that in fact Xerces. As far as I can tell, the 
Xerces implementation is used when validating. Unfortunately I'm not able to 
check it right now.

> Problem resolving namespace prefix for QName, suspected bug in 
> NamespaceSupport
> -------------------------------------------------------------------------------
>
>          Key: XERCESJ-1165
>          URL: http://issues.apache.org/jira/browse/XERCESJ-1165
>      Project: Xerces2-J
>         Type: Bug

>   Components: XML Schema API
>     Versions: 2.8.0
>  Environment: Windows XP SP2, JRE 1.5.0_06
>     Reporter: Jonathan Mezach

>
> I think I found a bug in the NamespaceSupport class which is part of 
> Xerces2-J. I'm working on a project which involves elements which have a 
> QName as type. Let me just write some XML to clarify:
> <xbrli:xbrl xmlns:iso4217="http://www.xbrl.org/2003/iso4217";>
>  <xbrli:unit id="EUR">
>   <xbrli:measure>iso4217:EUR</xbrli:measure>
>  </xbrli:unit>
> </xbrli:xbrl>
> I'm trying to validate this using JAXP with the Xerces implementation. The 
> schema for the measure element is as follows:
> <xsd:element name="measure" type="QName"/>
> Now, when the validation is run an exception is thrown which reads as follows:
> UndeclaredPrefix: Cannot resolve 'iso4217:EUR' as a QName: the prefix 
> 'iso4217' is not declared.
> This is quite strange because the namespace prefix is clearly declared at the 
> top level element. So I decided to have a debug through the code and found 
> that the problem is in the NamespaceSupport class. At the bottom of the 
> getActualValue method of the QNameDV class the method getURI is called on the 
> ValidationContext that was passed to it. This eventually calls the 
> getURI(String) method on the NamespaceSupport class. The code here reads as 
> follows:
> 1.       // find prefix in current context
> 2.        for (int i = fNamespaceSize; i > 0; i -= 2) {
> 3.            if (fNamespace[i - 2] == prefix) {
> 4.                return fNamespace[i - 1];
> 5.            }
> 6.        }
> 7.
> 8.        // prefix not found
> 9.        return null;
> The fNamespace instance variable is a String array and the prefix argument is 
> a String as well. This leads me to conclude that line 3 of the above code 
> should have been written as follows:
> if (fNamespace[i -2].equals(prefix)) {
> String comparison in Java is done using the equals method rather than the 
> equals operator as far as I know.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to