Hello, when using XmlQName (and its related functionalities), I encountered
some weird behavior

First of all, the xml document (and schema) for test comes from an OASIS
spec:
http://docs.oasis-open.org/bpel4people/ws-humantask-1.1-spec-cd-06.html

schema files:
http://docs.oasis-open.org/bpel4people/ws-humantask.xsd
http://docs.oasis-open.org/bpel4people/ws-humantask-context.xsd
http://docs.oasis-open.org/bpel4people/ws-humantask-policy.xsd
http://docs.oasis-open.org/bpel4people/ws-humantask-types.xsd

xml document:
http://docs.oasis-open.org/bpel4people/ws-humantask-1.1-spec-cd-06.pdf (page
196)

Encountered Problem:

I've made three different tests; within all tests, "xmlDoc" refers to the
Document instance of the sample xml document
============================================================================================================
The first test:

Element
task=(Element)(XPathFactory.newInstance().newXPath().evaluate("//*...@name=\"ApproveClaim\"]",xmlDoc,
XPathConstants.NODE));
xmlObject=XmlObject.Factory.parse(task);
org.oasisOpen.docs.ns.bpel4People.wsHumantask.x200803.impl.TaskDocumentImpl
taskImpl=(TaskDocumentImpl) xmlObject;
System.out.println(taskImpl.getTask().getInterface().getPortType());

The result is: Invalid QName value: Can't resolve prefix 'cl'
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The second test:

Element
task=(Element)(XPathFactory.newInstance().newXPath().evaluate("//*...@name=\"ApproveClaim\"]",xmlDoc,
XPathConstants.NODE));
xmlObject=XmlObject.Factory.parse(task);
org.oasisOpen.docs.ns.bpel4People.wsHumantask.x200803.impl.TaskDocumentImpl
taskImpl=(TaskDocumentImpl) xmlObject;
System.out.println(taskImpl.getTask().getInterface().getDomNode().lookupNamespaceURI("cl"));

The result is: dom level 3 not implemented
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The third test:

XmlQName q=XmlQName.Factory.parse("<xml-fragment xmlns:cl=\"
http://www.example.com/claims/\";>cl:sample</xml-fragment>");
System.out.println(q.getStringValue());
System.out.println(q.getQNameValue());

The result is:
cl:sample
{http://www.example.com/claims/}sample
============================================================================================================

Note that the result of the third test is correct while test1 and test2
failed.

Since according to the schema,
"taskImpl.getTask().getInterface().getPortType()" should return the value of
an attribute that has a QName type,
I assumed that taskImpl.getTask().getInterface().getPortType() also
leverages the functionality provided by XmlQName.

However, the result above appears inconsistent, is there any suggestions or
comments? Thanks!



-- 
XML to User Interface Binding: http://www.xuib.org/

Reply via email to