Pete Robbins wrote:
I've checked a fix for this into the branch. I'll apply it to head later.

Cheers,

On 22/11/2007, Pete Robbins <[EMAIL PROTECTED]> wrote:
I'll need to look into this. I can't find any restrictions in the spec
for characters in property names so I'm assuming NCName. So I think
your patch looks good.

The usual place where hyphens in names become a problem is when
mapping to programming language label but that is something that code
gen should take care of.

This will be an issue in the HEAD as well as the branch.

Cheers,

On 16/11/2007, Caroline Maynard <[EMAIL PROTECTED]> wrote:
A PHP user is facing a problem using a schema which uses the - (hyphen)
character in element names, as second or subsequent character. We thinks
this is valid XML, according to
http://www.w3.org/TR/REC-xml/#NT-NameChar, where the grammar is:

[4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar
| Extender
[5] Name ::= (Letter | '_' | ':') (NameChar)*

What's actually happening is that he's getting an SDO_PropertyNotFound
exception when he tries to set the property. Within the PHP
implementation, this is resolving to

  dop->set<Type>('element-name', value)

which ends up at:

void DataObjectImpl::setSDOValue(const SDOString& path,
                                    const SDOValue& sval,
                                    const SDOString& dataType)

Practically the first thing that method does is to call stripPath(),
which removes the hyphen from the element name - resulting in the
exception later on.

I tried this patch:
### Eclipse Workspace Patch 1.0
#P pecl-sdo-FULMAR
Index: commonj/sdo/DataObjectImpl.cpp
===================================================================
RCS file: /repository/pecl/sdo/commonj/sdo/DataObjectImpl.cpp,v
retrieving revision 1.20
diff -u -r1.20 DataObjectImpl.cpp
--- commonj/sdo/DataObjectImpl.cpp      24 Aug 2007 15:20:21 -0000      1.20
+++ commonj/sdo/DataObjectImpl.cpp      16 Nov 2007 19:10:23 -0000
@@ -951,7 +951,7 @@
     //////////////////////////////////////////////////////////////////////

     const char* DataObjectImpl::templateString =
-    "
/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890=[]._#";
+    "
/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890=[]._#-";

     char* DataObjectImpl::stripPath(const char* path)
     {

which appears to fix the problem. But I expect you'll tell me there is
more to it than that. I know there are existing issues about valid
characters in XPaths. But it seems a shame to prevent this simple
scenario from working because of Xpath.

Thank you!


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

Reply via email to