List Info

Thread: RE: Validating a value against a SchemaType object




RE: Validating a value against a SchemaType object
country flaguser name
United States
2007-05-07 16:49:46
Hi,

This issue is a sticking-point on our project, since it's
one of the main reasons we chose to go with XMLBeans (the
fact that we could validate against a type in isolation --
not an entire schema file).  

Without going into great detail, our project involves a
graphical editor where each user-inputted value is governed
by a type from a schema file (but where not enough data is
available at validation time to validate on a document
level).

If no one is sure how to do this, can anyone recommend a few
places to poke around in the XMLBeans code to get this
working?  If necessary we could update the library itself to
support this, with some direction for a starting point.

Thanks again,
Vance

> -------- Original Message --------
> Subject: RE: Validating a value against a SchemaType
object
> From: Vance Vagell <vancevancevagell.com>
> Date: Thu, May 03, 2007 8:48 pm
> To: userxmlbeans.apache.org
> 
> Hi Jacob,
> 
> Thanks for the tip.  I took a look at
InstanceValidator, and noticed
> that the key difference was that it uses the same
SchemaTypeLoader
> instance it used to load the SchemaTypes to also load
the XML to be
> validated.  I tried that, no dice.  However, I did a
little more
> debugging:
> 
> * The error value I get back when validation fails is:
cvc-elt.1
> * XmlErrorCodes describes this error as
"ELEM_LOCALLY_VALID$NO_TYPE",
> "cvc-elt.1: See clause 1 of XMLSchema Structures
1.0: Element Locally
> Valid (Element)"
> * I took a look at the suggested part of the schema
spec, and that
> clause reads "1 The declaration must not be
absent."
> * I took a look at all the XmlBeans code that includes
the words
> "invalid type", and found that the most
likely source of this is this
> part of QNameHelper:
> 
>         if (sType.isNoType() || sType.getOuterType() ==
null)
>         {
>             return "invalid type";
>         }
> 
> * Using a debugger, I was able to confirm that the
SchemaType I'm
> validating against DOES return null for getOuterType()
(not sure what
> this signifies -- the Javadocs for this method are very
terse).
> 
> So long story short, let me restate my goal, and
hopefully someone has
> another lifejacket they can throw me as I float around
in this sea of
> schemas and XML:
> 
> - I have a value, as a string.  Such as
"car".
> - I have a SchemaType object (a simple type), that was
loaded from a
> schema file, that says that valid values are
"car" or "truck".
> - I want to validate that "car" is a valid
value, given the SchemaType
> object.
> - I create an XmlObject like this:
> 
> XmlObject xmlObject =
schemaTypeLoader.parse("<whatever>" + value
+
> "</whatever>", null, null); // Note
that the SchemaType specified here
> is null, I don't have or want a type that defines
"whatever"
> 
> - I select the "whatever" child, because I am
not actually interested
> in the tag, just the (simple) value.
> 
> xmlObject = xmlObject.selectChildren(new
QName("whatever"))[0];
> 
> - I change the type of the object to the type I'm
interested in
> validating against:
> 
> xmlObject = xmlObject.changeType(schemaType);
> 
> However, xmlObject.validate() always returns false, and
if I use an
> error listener I find out the information I described
earlier in this
> email.
> 
> I've spent quite a few hours looking into this, and
would sincerely
> appreciate any advice others may have as to how I can
perform this
> validation.  Note that the schemas involved have not
been compiled
> into Java objects, as this is a fully dynamic
application, where the
> schemas are loaded -- the user types in a value -- and
then the
> SchemaType objects are referenced to check its
validity.
> 
> Thanks so much!
> 
> - Vance

------------------------------------------------------------
---------
To unsubscribe, e-mail: user-unsubscribexmlbeans.apache.org
For additional commands, e-mail: user-helpxmlbeans.apache.org


Re: Validating a value against a SchemaType object
user name
2007-05-08 11:51:37
Hi Vance,
I guess I'm a little confused as to what you are trying to
do. It
sounds like you are trying to validate user input with
xmlbeans
without a schema or values since you don't care about the
elements or
other data.
Why not use some kind of form validation? - since xml/xsd is
not
important to your problem
What about creating an simpleType with valid enumeration
values and
validating against that?

For your scenario:
- I have a value, as a string.  Such as "car".
- I have a SchemaType object (a simple type), that was
loaded from a
schema file, that says that valid values are "car"
or "truck".
- I want to validate that "car" is a valid value,
given the SchemaType object.

it seems like the enumeration might do the trick for you
with a little
effort. Have you tried this route?
-Jacob Danner


On 5/7/07, Vance Vagell <vancevancevagell.com> wrote:
> Hi,
>
> This issue is a sticking-point on our project, since
it's one of the main reasons we chose to go with XMLBeans
(the fact that we could validate against a type in isolation
-- not an entire schema file).
>
> Without going into great detail, our project involves a
graphical editor where each user-inputted value is governed
by a type from a schema file (but where not enough data is
available at validation time to validate on a document
level).
>
> If no one is sure how to do this, can anyone recommend
a few places to poke around in the XMLBeans code to get this
working?  If necessary we could update the library itself to
support this, with some direction for a starting point.
>
> Thanks again,
> Vance
>
> > -------- Original Message --------
> > Subject: RE: Validating a value against a
SchemaType object
> > From: Vance Vagell <vancevancevagell.com>
> > Date: Thu, May 03, 2007 8:48 pm
> > To: userxmlbeans.apache.org
> >
> > Hi Jacob,
> >
> > Thanks for the tip.  I took a look at
InstanceValidator, and noticed
> > that the key difference was that it uses the same
SchemaTypeLoader
> > instance it used to load the SchemaTypes to also
load the XML to be
> > validated.  I tried that, no dice.  However, I did
a little more
> > debugging:
> >
> > * The error value I get back when validation fails
is: cvc-elt.1
> > * XmlErrorCodes describes this error as
"ELEM_LOCALLY_VALID$NO_TYPE",
> > "cvc-elt.1: See clause 1 of XMLSchema
Structures 1.0: Element Locally
> > Valid (Element)"
> > * I took a look at the suggested part of the
schema spec, and that
> > clause reads "1 The declaration must not be
absent."
> > * I took a look at all the XmlBeans code that
includes the words
> > "invalid type", and found that the most
likely source of this is this
> > part of QNameHelper:
> >
> >         if (sType.isNoType() ||
sType.getOuterType() == null)
> >         {
> >             return "invalid type";
> >         }
> >
> > * Using a debugger, I was able to confirm that the
SchemaType I'm
> > validating against DOES return null for
getOuterType() (not sure what
> > this signifies -- the Javadocs for this method are
very terse).
> >
> > So long story short, let me restate my goal, and
hopefully someone has
> > another lifejacket they can throw me as I float
around in this sea of
> > schemas and XML:
> >
> > - I have a value, as a string.  Such as
"car".
> > - I have a SchemaType object (a simple type), that
was loaded from a
> > schema file, that says that valid values are
"car" or "truck".
> > - I want to validate that "car" is a
valid value, given the SchemaType
> > object.
> > - I create an XmlObject like this:
> >
> > XmlObject xmlObject =
schemaTypeLoader.parse("<whatever>" + value
+
> > "</whatever>", null, null); //
Note that the SchemaType specified here
> > is null, I don't have or want a type that defines
"whatever"
> >
> > - I select the "whatever" child, because
I am not actually interested
> > in the tag, just the (simple) value.
> >
> > xmlObject = xmlObject.selectChildren(new
QName("whatever"))[0];
> >
> > - I change the type of the object to the type I'm
interested in
> > validating against:
> >
> > xmlObject = xmlObject.changeType(schemaType);
> >
> > However, xmlObject.validate() always returns
false, and if I use an
> > error listener I find out the information I
described earlier in this
> > email.
> >
> > I've spent quite a few hours looking into this,
and would sincerely
> > appreciate any advice others may have as to how I
can perform this
> > validation.  Note that the schemas involved have
not been compiled
> > into Java objects, as this is a fully dynamic
application, where the
> > schemas are loaded -- the user types in a value --
and then the
> > SchemaType objects are referenced to check its
validity.
> >
> > Thanks so much!
> >
> > - Vance
>
>
------------------------------------------------------------
---------
> To unsubscribe, e-mail: user-unsubscribexmlbeans.apache.org
> For additional commands, e-mail: user-helpxmlbeans.apache.org
>
>

------------------------------------------------------------
---------
To unsubscribe, e-mail: user-unsubscribexmlbeans.apache.org
For additional commands, e-mail: user-helpxmlbeans.apache.org


[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )