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
[email protected]
http://www.oxygenxml.com/mailman/listinfo/oxygen-user
_______________________________________________
oXygen-user mailing list
[email protected]
http://www.oxygenxml.com/mailman/listinfo/oxygen-user