Thanks Frank. So the simple/mixed content is accessed via the Sequence
API rather than by a special property. This makes sense to me now.

Here's a test case that passes against Tuscany for the example XML. This
actually seems to be spec-compliant. Would you agree? If so, I'll file a
JIRA to get this added to the CTS.

    public void testComplexElementWithSimpleContent() {
        String xml = "<root xmlns=\"http://test/\";><name
lang=\"en_US\">Adam</name></root>";
        XMLDocument doc = XMLHelper.INSTANCE.load( xml );
        DataObject root = doc.getRootObject();
        Property nameProperty = root.getProperty( "name" );
        assertEquals( "commonj.sdo", nameProperty.getType().getURI() );
        assertEquals( "DataObject", nameProperty.getType().getName() );
        DataObject dobj = root.getDataObject( "name.0" );
        assertEquals( "en_US", dobj.getString( "lang" ) );
        assertEquals( "Adam", dobj.getSequence().getValue(0) );
    }

Thanks,

Andy.

-----Original Message-----
From: Frank Budinsky [mailto:[EMAIL PROTECTED] 
Sent: 25 April 2007 15:00
To: tuscany-dev@ws.apache.org
Subject: Re: How can I process this XML with Tuscany?

Hi Andy,

In Tuscany, I believe it currently works like this:

The root object is an open, sequenced, mixed type. The name property is
type String (I believe) but it isMany=true, that's why you get a List (
org.eclipse.emf.ecore.util.FeatureMapUtil$FeatureEList) back from get().

You should be able to get the name by calling:

String name = (String)root.getList("name").get(0);

The simple content would appear as mixed text:

String textContent = root.getSequence().getValue(0);

I'm not sure if this is quite right according to the spec.

I'm not sure that the "value" property is the the right approach in this
case, since we would need to parse the entire document to be sure that
all instances have simple content. The Tuscany approach works the same
in the more general case like this:

 <root xmlns="http://test/";>
   <name lang="en_US">Adam</name>
   <name lang="en_US">Adam<junk>abc<junk>Smith</name>
 </root>

Frank.


"Andy Grove" <[EMAIL PROTECTED]> wrote on 04/25/2007 07:06:13 AM:

> This is partly a Tuscany implementation question, and partly a CTS / 
> specification question.
> 
> I have the following XML document and there is no XSD defined.
> 
> <root xmlns="http://test/";><name lang="en_US">Adam</name></root>
> 
> If I use XMLHelper to load the document and then run this code ...
> 
>         Property nameProp = root.getInstanceProperty( "name" );
>         Object name = root.get( nameProp );
> 
> I get an "org.eclipse.emf.ecore.util.FeatureMapUtil$FeatureEList" 
> object returned, which does not appear to implement any SDO
interfaces.
> 
> Does Tuscany provide a way to get the simple content of the "name"
> element as well as the "lang" attribute?
> 
> From reading the 2.1 specification, my understanding is that "name"
> should be a DataObject with a "lang" property representing the 
> attribute and a special "value" property representing the simple 
> content. Will Tuscany be supporting this 2.1 feature?
> 
> Thanks,
> 
> Andy.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


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


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

Reply via email to