XHTML Inclusion impossible

Issues related with the oNVDL implementation of NVDL.
cefn
Posts: 15
Joined: Thu Jul 12, 2007 6:20 pm
Location: Ipswich, UK

XHTML Inclusion impossible

Post by cefn »

If you employ the external declaration of element contents, as outlined in the RelaxNG tutorial...
http://relaxng.org/compact-tutorial-20030326.html
...then it causes an unspecified oNDL syntax error.

Indeed there is apparently no way to specify that an element defined via a RelaxNG compact syntax should include XHTML content. So any ideas would be welcomed.

This is my original RelaxNG file, which references the html-basic schema in place inside a Jing distribution.

default namespace = "http://cefn.com/blog/"
namespace rng = "http://relaxng.org/ns/structure/1.0"
namespace xhtml = "http://www.w3.org/1999/xhtml"
datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"

grammar {

start = source

source = element source {
(post | page | source)* |
attribute uri {xsd:anyURI}
}

post = element post {
labelling, journalling, external "../lib/java/jing/jing-20030619/doc/xhtml/xhtml-basic.rng"
}

page = element page {
labelling, journalling, external "../lib/java/jing/jing-20030619/doc/xhtml/xhtml-basic.rng"
}

file = element file {
labelling, attaching
}

labelling = attribute name { xsd:IDREF}?, attribute title { xsd:string}, attribute description { xsd:string}?

journalling = attribute created { xsd:date}, attribute published { xsd:date}?

attaching = attribute bytes { xsd:base64Binary }, attribute mimetype { xsd:string }

}
george
Site Admin
Posts: 2095
Joined: Thu Jan 09, 2003 2:58 pm

Post by george »

Hi,

You have a compact schema and you are trying to make an external reference to another grammar, but those files contain Relax NG schemas in XML form. You cannot mix Relax NG compact with XML. For instance if you place the below schema in a file in the same folder as the XHTML schema then it should be valid:

Code: Select all


<?xml version="1.0" encoding="UTF-8"?>
<grammar ns="http://cefn.com/blog/" xmlns="http://relaxng.org/ns/structure/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<start>
<ref name="source"/>
</start>
<define name="source">
<element name="source">
<choice>
<zeroOrMore>
<choice>
<ref name="post"/>
<ref name="page"/>
<ref name="source"/>
</choice>
</zeroOrMore>
<attribute name="uri">
<data type="anyURI"/>
</attribute>
</choice>
</element>
</define>
<define name="post">
<element name="post">
<ref name="labelling"/>
<ref name="journalling"/>
<externalRef href="xhtml-basic.rng"/>
</element>
</define>

<define name="page">
<element name="page">
<ref name="labelling"/>
<ref name="journalling"/>
<externalRef href="xhtml-basic.rng"/>
</element>
</define>
<define name="file">
<element name="file">
<ref name="labelling"/>
<ref name="attaching"/>
</element>
</define>
<define name="labelling">
<optional>
<attribute name="name">
<data type="IDREF"/>
</attribute>
</optional>
<attribute name="title">
<data type="string"/>
</attribute>
<optional>
<attribute name="description">
<data type="string"/>
</attribute>
</optional>
</define>
<define name="journalling">
<attribute name="created">
<data type="date"/>
</attribute>
<optional>
<attribute name="published">
<data type="date"/>
</attribute>
</optional>
</define>
<define name="attaching">
<attribute name="bytes">
<data type="base64Binary"/>
</attribute>
<attribute name="mimetype">
<data type="string"/>
</attribute>
</define>
</grammar>
Best Regards,
George
George Cristian Bina
cefn
Posts: 15
Joined: Thu Jul 12, 2007 6:20 pm
Location: Ipswich, UK

No Compatc Syntax

Post by cefn »

So it looks like I can't use the compact syntax at all. Or is there a way to maintain this information in the compact syntax, but export through trang somehow to produce an XML file which Oxygen will put up with.

I've been putting all this work in so I could use the compact syntax, you see - it was fully specified in XSD before.
cefn
Posts: 15
Joined: Thu Jul 12, 2007 6:20 pm
Location: Ipswich, UK

OK found a fix

Post by cefn »

Did it the other way round using trang translation from compact to xml then back again.

Exported the compact syntax to XML, then added the declaration as you suggested in the XML example, then re-exported to compact.

Then it generated all the compact syntax equivalents of the original imports - the full set of xhtml rng schemata from jing in compact form.

Here's the ant build I used for the two steps...

<target name="rngcompact2xml">
<java jar="lib/java/trang/trang.jar" fork="true">
<arg file="forms/blog.rnc"/>
<arg file="forms/blog.rng"/>
</java>
</target>

<target name="rngxml2compact">
<java jar="lib/java/trang/trang.jar" fork="true">
<arg file="forms/blog.rng"/>
<arg file="forms/blog.rnc"/>
</java>
</target>

...plus an edit in between to add the following element in place of the original element declaration for xhtml elements...

<externalRef href="../lib/java/jing/jing-20030619/doc/xhtml/xhtml.rng"/>
Post Reply