XHTML Inclusion impossible

Issues related with the oNVDL implementation of NVDL.
cefn
Posts: 15
Location: Ipswich, UK

XHTML Inclusion impossible

Thu Jul 12, 2007 6:39 pm

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: 2099

Thu Jul 12, 2007 10:05 pm

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
Location: Ipswich, UK

No Compatc Syntax

Fri Jul 13, 2007 1:16 am

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
Location: Ipswich, UK

OK found a fix

Fri Jul 13, 2007 1:34 am

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"/>

Return to “oNVDL Related Issues”

Who is online

Users browsing this forum: No registered users and 0 guests