[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xerces-c-dev
Subject:    [jira] Created: (XERCESC-1516) identity constraint volation not caught when xpath contains default n
From:       "Andrew Fang (JIRA)" <xerces-c-dev () xml ! apache ! org>
Date:       2005-10-14 20:03:44
Message-ID: 1903271789.1129320224796.JavaMail.jira () ajax ! apache ! org
[Download RAW message or body]

identity constraint volation not caught when xpath contains default namespace
-----------------------------------------------------------------------------

         Key: XERCESC-1516
         URL: http://issues.apache.org/jira/browse/XERCESC-1516
     Project: Xerces-C++
        Type: Bug
  Components: Validating Parser (Schema) (Xerces 1.5 or up only)  
    Versions: 2.6.0    
 Environment: Windows XP
    Reporter: Andrew Fang


The following schema contains an identity constraint on the uniqueness of ISBN \
number. However, no error is reported when duplicated entries for ISBN exist. The \
problem seem to be that XPath parser does not parse default namespace correctly. If a \
prefix is added (xmlns:x="....") and use the prefix in xpath expression (e.g. \
<xsd:selector xpath="x:Book"/> ...), the violation is found.

The following is a possible fix for the problem:

in XercesXpath.cpp ln 510 and 585, change
		if (scopeContext && !aToken == -1) {
		    prefix = stringPool->getValueForId(aToken);
  		    uri = scopeContext->getNamespaceForPrefix(prefix);
		}
to
		if (scopeContext) {
		  if(aToken == -1) { // no prefix, must be default namespace
		    prefix = XMLUni::fgZeroLenString;
		  } else {
		    prefix = stringPool->getValueForId(aToken);
		  }
		  uri = scopeContext->getNamespaceForPrefix(prefix);
		}




------- Schema ---------------

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
		targetNamespace="http://www.publishing.org"
                xmlns="http://www.publishing.org"
		elementFormDefault="qualified">
	<xsd:element name="BookCatalogue">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="Book"  minOccurs="1" maxOccurs="unbounded">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="Title" type="xsd:string" minOccurs="1" maxOccurs="1"/>
							<xsd:element name="Author" type="xsd:string" minOccurs="1" maxOccurs="1"/>
							<xsd:element name="ISBN" type="xsd:string" minOccurs="1" maxOccurs="1"/>
							<xsd:element name="Publisher" type="xsd:string" minOccurs="1" maxOccurs="1"/>
							<xsd:element name="Date" type="xsd:string" minOccurs="1" maxOccurs="1"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
		<xsd:unique name="ISBNnumber">
			<xsd:selector	xpath="Book"/>
			<xsd:field	xpath="ISBN"/>
		</xsd:unique>
	</xsd:element>
</xsd:schema>

--------- xml instance -----------
<?xml version="1.0" encoding="UTF-8"?>
<BookCatalogue
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.publishing.org"
xsi:schemaLocation="http://www.publishing.org idc001.nogen.xsd">
<Book>
<Title>My Life and Times</Title>
<Author>Paul McCartney</Author>
<ISBN>43892</ISBN>
<Publisher>McMillin Publishing</Publisher>
<Date>1998</Date>
</Book>
<Book>
<Title>My Life and Times</Title>
<Author>Paul McCartney</Author>
<ISBN>43892</ISBN>
<Publisher>McMillin Publishing</Publisher>
<Date>1998</Date>
</Book>
</BookCatalogue>


-- 
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: c-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: c-dev-help@xerces.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic