Print

Print


David Sewell wrote:
> I've just been attempting to create an ODD file that will produce a P5
> schema that will allow html:table (i.e., 'table' in the XHTML namespace)
> anywhere that a TEI-namespace table is permitted. But I'm not quite
> clear on how to add an element from another namespace. I tried something
> along
> the lines of
> 
>   <elementSpec module="figures" ident="html:table" mode="add">
> 
> (having defined the 'html' prefix and included a RelaxNG version of
> the XHTML schema), but Roma doesn't seem to like prefixed element names.
> What am I missing here?

I am afraid its not as simple as it might be. What you have to do is
locate a Relax NG grammar for XHTML (let's call it xhtml.rng) and then
massage TEI patterns by hand. Thus:

      <moduleRef url="http://www.whatever.org/xhtml.rng">
      	<content>
	  <rng:define name="model.inter" combine="choice">
	    <rng:ref name="html.table"/>
	  </rng:define>
	</content>
      </moduleRef>

so
 a) <moduleRef>'s @url loads an external file of Relax NG code
 b) <moduleRef> has an optional <content> child whose contents are
    injected into the final schema.
 c) you have to add to one of the TEI class patterns. we modify class.inter.

What's wrong with this? Something serious - the pattern which identifies
the HTML table element in xhtml.rng is actually "table", which is
identical to the name in TEI. So in the example above I have used
"html.table", which would mean changing the XHTML RNG file. Names of
things in Relax NG are NOT name-spaced, unfortunately.

If this isn't making sense, please shout!
-- 
Sebastian Rahtz

Information Manager, Oxford University Computing Services
13 Banbury Road, Oxford OX2 6NN. Phone +44 1865 283431

OSS Watch: JISC Open Source Advisory Service
http://www.oss-watch.ac.uk