- From: Tobias Reif <tobiasreif@pinkjuice.com>
- Date: Sun, 7 Dec 2003 19:22:17 +0100
- To: Chris Lilley <chris@w3.org>
- Cc: Tobias Reif <tobiasreif@pinkjuice.com>, www-svg@w3.org, mimasa@w3.org
On Sun 2003-12-07 Chris Lilley wrote:
> TR> [...] And there's an increasing number of editors which
> TR> support context-aware entry help driven by RNGs (for those who want or
> TR> need entry help).
>
> Any recommendations for editors that seem to work well?
Unfortunately I can't recommend any specific editor supporting this,
there probably are good ones but I didn't try any.
My XML editor
http://www.pinkjuice.com/howto/vimxml/
doesn't offer entry help (since Vim is extensible it could be
implemented though) and I don't miss that functionality.
Vim when set up as described in the above howto is a great XML editor
which I can really recommend, but if you want RNG-driven entry help
(now, without having to implement it first :), then you could try some
of those:
* nXML
http://www.thaiopensource.com/download/
http://www.xmlhack.com/read.php?item=2061
http://groups.yahoo.com/group/emacs-nxml-mode/
* oXygen
http://www.xmlhack.com/read.php?item=2072
http://www.oxygenxml.com/ :
"Content completion driven by Relax NG Schemas. When editing
documents associated with a Relax NG schema the editor will offer
content completion proposals for elements and attributes."
Google found more:
* http://www.xmloperator.net/
"Any RELAX NG schema or DTD can be used for guiding editing."
* Don't know if http://www.topologi.com supports this.
> TR> tobi ~/del $ xmllint --noout --relaxng
> TR> ~/bulk/xml/schemas/svg/1_1/rng/svg11.rng vimxml.svg
> TR> file:///home/tobi/bulk/xml/schemas/svg/1_1/dtd/svg11-flat.dtd:2278:
>
> You are validating the dtd against the rng?
No, the above commandline asks xmllint to validate the SVG against the
RNG. But since http://www.pinkjuice.com/howto/vimxml/pics/vimxml.svg
references a DTD xmllint loads it (the local copy listed in the OASIS
catalog) and reports any problems it encounters. If I add --nonet ("Do
not use the Internet to fetch DTD's or entities") and remove the DTD
from my catalog the warning regarding the DTD content will disappear;
xmllint doesn't load the DTD then.
BTW:
xmllint validates the SVG against the RNG as requested, and doesn't
validate it against the DTD referenced in the doctype declaration:
tobi ~/data/run/xval/tests $ xmllint --nonet --noout --relaxng \
~/bulk/xml/schemas/svg/1_1/rng/svg11.rng 1_1_with_doct_decl.svg
I/O error : Attempt to load network entity
http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd
1_1_with_doct_decl.svg:6: element ellipse: Relax-NG validity error :
Expecting an element desc, got nothing
1_1_with_doct_decl.svg:6: element ellipse: Relax-NG validity error :
Invalid attribute x for element ellipse
1_1_with_doct_decl.svg:6: element ellipse: Relax-NG validity error :
Expecting element polyline, got ellipse
1_1_with_doct_decl.svg:6: element ellipse: Relax-NG validity error :
Element svg has extra content: ellipse
1_1_with_doct_decl.svg fails to validate
tobi ~/data/run/xval/tests $
The invalid attribute x on element ellipse is flagged as RNG error not
as DTD error, as expected/intended. (The other two messages mentioning
desc and polyline are strange but disappear when the invalid attribute
is removed)
> TR> validity warning : Attribute space of element style: already
> TR> defined
> TR> type %ContentType.datatype; #REQUIRED
> TR> ^
> TR> vimxml.svg:32: element font-face: Relax-NG validity error :
> TR> Expecting an element desc, got nothing
>
> Now that one has to be a bug. desc is part of SVG.Description.class
> and its clearly enclosed in a zeroOrMore implying zero of them is
> fine....
I should try to reproduce it with small snippets and report it, I hope
to find the time (I suspect it won't be trivial to reproduce it with
small snippets, and I don't feel confident referring to the RNG before
it's more mature ...).
> TR> Can you recommend any RNG validators other than Jing and xmllint?
>
> There is also a multischema validator, converts everything into rng
> internally by Sun
> http://wwws.sun.com/software/xml/developers/multischema/
Thanks for the tip (actually a reminder :).
> TR> The DTD would not have to be downloaded if there was a real system
> TR> identifier since it could be used by catalog tools.
>
> The DTD does not have to be downloaded anyway, since its the external
> DTD subset and thus optional.
Yes, but some parsers understandably are be afraid they could miss
document content and potentially important information contained in
the DTD.
What I meant was that if the XML parser of the RNG validator chooses
to load the DTD then things may go smoother if there's a system ID
since it can be listed in an OASIS catalog.
> TR> You could omit the DTD doctype declaration, and if you had it in there
> TR> for validation you could use RNG instead
>
> You can use the RNG anyway, if you prefer, no?
Yes, I just wanted to say that the DTD doctype declaration could
perhaps be omitted, and if it is to remain it would simplify stuff for
some if it would feature a real system identifier instead of a
relative path.
No offense, just one possible POV:
An RNG is being written in order to progress towards namespace-aware
schemas, but the RNG itself references a schema (a DTD) which isn't :)
(And if that DTD happens to set attributes then two RNG validators
will use two potentially different RNGs, but this is probably not the
case and just a minor general point.)
> I think that the xsi:schemaLocation does exactly that - suggests but
> does not require.
I think so too, and I'd like to see a standardised equivalent for use
with RNG (or better with any schema language).
> Mind you, in theory, so does a DOCTYPE
I know :) ... but if parser x follows the suggestion and parser y
doesn't then they might see different infosets/documents; this would
not be the case with RNG.
> TR> [...] an XHTML
> TR> document with no doctype declaration or an XHTML fragment (both in the
> TR> XHTML 1 namespace) doesn't specify if it's written in XHTML 1.0
> TR> Strict, Transitional, or in XHTML 1.1.
>
> Ah, okay. Sounds like an architectural principle lurking in there
> somewhere.
TAG to the rescue :)
> TR> And then there is the issue of fully independent and automatic
> TR> validation: [...] no way of knowing which schema I should or
> TR> could use
>
> You might be able to get that information by dereferencing the
> namespace URI, seeing if there is a RDDL document there, and
> looking for a link to your preferred schema type.
Good idea, but the "might" is the problem: I fear that often this will
fail due to RDDL not being very popular. A simple mechanism such as
xsi:schemaLocation might become more popular ...
> TR> [...] Although I prefer the way the SVG WG chose: have one NS URI
> TR> for all versions, then specify versions and profiles with attributes.
>
> Yes I think thats better too, so a viewer does not need to have a
> collection of near-identical namespaces that it recognises.
Yes, and it's also a semantical/philosophical matter: an SVG 1.0 and
an SVG 1.2 document both are written in the same language (namely
SVG), thus it makes sense that they share the same namespace. A tool
knowing SVG 1.0 will also know that the other document is SVG,
although it doesn't know SVG 1.2 yet.
Tobi
--
http://www.pinkjuice.com/
Received on Sunday, 7 December 2003 13:20:00 UTC