[oXygen-user] XHTML 2 validation, revisited

Paul Everitt
Fri Jun 8 07:54:41 CDT 2007


I just tried it and it worked.  Thanks a ton, George!  I suspect I  
would have spent quite some time before figuring that out.  Guess I  
need to crank up my RNG zen a bit.  I suppose the XHTML2 people out  
to publish a working schema if they care about adoption. :^)

Regarding the NVDL version...in all honesty, I'd prefer to use that  
one.  However, I need a schema and grammar that can also be validated  
from the Python project I'm doing.  And Python doesn't have an NVDL  
implementation that I know of.

--Paul

On Jun 8, 2007, at 4:39 AM, George Cristian Bina wrote:

> Hi Paul,
>
> Open the http://www.w3.org/People/mimasa/test/schemas/rng/ 
> xhtml2.rng schema in oXygen and switch to logical model view. Then  
> expand Start -- html -- html.content -- body.
> Then you can see that body contains some attributes then one or  
> more from a choice of
> (
>    XHTML elements,
>    a *sequence* of
>    [choice of (input,...), optional(...), group, switch, repeat]
> )
>
> So, if you have input then you must have that followed by group,  
> switch and repeat.
>
> This is caused from the way the Misc.class pattern is defined:
>
> <define name="Misc.class" combine="choice">
>   <ref name="XFORMS.Form.Controls"/>
>   <ref name="XFORMS.Actions"/>
>   <ref name="XFORMS.Group"/>
>   <ref name="XFORMS.Switch"/>
>   <ref name="XFORMS.Repeat"/>
> </define>
>
> As you have an implicit group pattern that combines the ref patterns.
>
> What you probably want is a choice of those pattern, eventually  
> inside a zeroOrMore or an oneOrMore pattern.
>
> <define name="Misc.class" combine="choice">
>   <choice>
>       <ref name="XFORMS.Form.Controls"/>
>       <ref name="XFORMS.Actions"/>
>       <ref name="XFORMS.Group"/>
>       <ref name="XFORMS.Switch"/>
>       <ref name="XFORMS.Repeat"/>
>   </choice>
> </define>
>
> If you change the schema xhtml2.rng schema as above the document  
> will be validated without problems.
>
> An easy way to test is to make the change in the schema, save it  
> locally and add an xml:base="http://www.w3.org/People/mimasa/test/ 
> schemas/rng/xhtml2.rng" in the root element to have the includes  
> properly resolved then use the local schema in your documents.
>
> But what I would recommend will be to take a look also at NVDL, see  
> the samples/nvdl from oXygen for a sample that shows usage of XHTML  
> plus XForms.
>
> I was about to forget: you have the problem with implicit group  
> patterns in Relax NG probably on more patterns, just below the  
> Misc.class I see
>
> <define name="XFORMS.UI.Inline.class" combine="choice">
>   <ref name="Text.class"/>
>   <ref name="Misc.class"/>
> </define>
>
> so I believe all the schema need to be revised with the implicit  
> group patterns in mind.
>
> Best Regards,
> George
> ---------------------------------------------------------------------
> George Cristian Bina - http://aboutxml.blogspot.com/
> <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
> http://www.oxygenxml.com
>
>
> Paul Everitt wrote:
>> 13 months ago I posted here then rng-users for help on XHTML 2  
>> validation using the RNG schemas. I am revisiting the problem and  
>> running into a snap that has me quite perplexed.
>> I'm using the experimental schemas located here:
>>   http://www.w3.org/People/mimasa/test/schemas/rng/xhtml2.rng
>> Everything is fine when I don't use any form controls:
>> <?xml version="1.0" encoding="UTF-8"?>
>> <?oxygen
>> RNGSchema="http://www.w3.org/People/mimasa/test/schemas/rng/ 
>> xhtml2.rng"
>> type="xml"?>
>> <html xmlns="http://www.w3.org/2002/06/xhtml2/">
>> <head>
>> <title>Hello World</title>
>> </head>
>> <body>
>> <p>Hello World</p>
>> </body>
>> </html>
>> This validates in both oXygen 8.2 and xmllint. However, any  
>> attempt to introduce a form element leaves me in an "Unfinished  
>> element" status on the body:
>> <?xml version="1.0" encoding="UTF-8"?>
>> <?oxygen
>> RNGSchema="http://www.w3.org/People/mimasa/test/schemas/rng/ 
>> xhtml2.rng"
>> type="xml"?>
>> <html xmlns="http://www.w3.org/2002/06/xhtml2/"
>> xmlns:q="http://foo.org">
>> <head>
>> <title>Hello World</title>
>> <model>
>> <instance>
>> <q:x/>
>> </instance>
>> </model>
>> </head>
>> <body>
>> <input ref="q:x">
>> <label>x</label>
>> </input>
>> </body>
>> </html>
>> oXygen 8.2 reports "E [oNVDL] unfinished element" on the closing </ 
>> body>. xmllint reports:
>> Untitled4.xml:13: element input: Relax-NG validity
>> error : Element body has extra content: input
>> Wrapping the <input> in a <div> simply moves the error to the  
>> <div>. I spent a couple of hours hacking around in the pile of  
>> schemas, trying to figure out what was missing.
>> I downloaded the schemas from the July 2006 working draft of XHTML 2:
>> http://www.w3.org/TR/xhtml2/xhtml2.html
>> But these don't even work out-of-the-box. I supplied the 2 missing  
>> RNGs (xforms.rng and xforms-nons-11.rng) and wound up with the  
>> same error.
>> I'd be interested to find an XHTML 2 example that includes form  
>> elements *and* validates against some known schema, RNG or otherwise.
>> And yes, I know XHTML2 doesn't work in browsers. This is for the  
>> early stage of an XProc pipeline, with a later stage that converts  
>> to XHTML 1.
>> --Paul
>> _______________________________________________
>> oXygen-user mailing list
>> 
>> http://www.oxygenxml.com/mailman/listinfo/oxygen-user




More information about the oXygen-user mailing list