Allowing specific elements from another namespace...

S

Simon Brooke

I have a document type which I'm developing and working with, which is
currently defined in a DTD, mainly because I still haven't really
learned to use schemas. In this document type I need to specify that
some specific elements may have children which are XHTML %Flow;
elements. It isn't valid for these elements to contain arbitrary
XHTML, and it isn't valid for other elements in my language to have
any XHTML children.

I presume I can't do this in a DTD (except by including the XHTML DTD
into mine, which would mean that I would end up with the whole of
XHTML in my namespace, which isn't what I want). But how would I go
about doing it in a schema?
 
M

Martin Honnen

Simon said:
I have a document type which I'm developing and working with, which is
currently defined in a DTD, mainly because I still haven't really
learned to use schemas. In this document type I need to specify that
some specific elements may have children which are XHTML %Flow;
elements. It isn't valid for these elements to contain arbitrary
XHTML, and it isn't valid for other elements in my language to have
any XHTML children.

I presume I can't do this in a DTD (except by including the XHTML DTD
into mine, which would mean that I would end up with the whole of
XHTML in my namespace, which isn't what I want). But how would I go
about doing it in a schema?

The W3C XML schema language has an xs:any element where you can specify
a namespace so you can allow any element in the XHTML namespace. You
can't specify a certain type however so I don't know how you could
restrict the element children to be of type flow. It might be best to
import a schema for XHTML and then allow an XHTML div element as the
child e.g.
<xs:element ref="xhtml:div"/>
that way you can then have the other elements inside the div element.
 
J

Joseph J. Kesselman

I presume I can't do this in a DTD

DTDs are not namespace aware. You could allow specific elements with a
particular prefix, and try to set up required/default declarations for
that prefix to be the intended namespace... but in general if you're
using namespaces (and these days you should be), you should move to XML
Schema and handle them properly.

In schemas, allowing specific elements in another namespace should be
straightforward: you should be able to bind a prefix to that namespace
and use the appropriate prefixed QNames in your schema's description of
legal contents just as you would reference elements within the same
namespace. There should be examples of this on the web in various schema
tutorials; I haven't gone hunting for one recently so I don't have a
good pointer to give you other than the Schema recommendation (which is
not easy reading).
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top