caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: oliver <oliver@first.in-berlin.de>
To: caml-list@inria.fr
Subject: Re: [Caml-list] ocamlnet: Netheml: simple-dtd: how does this work?
Date: Mon, 7 Mar 2011 21:18:21 +0100	[thread overview]
Message-ID: <20110307201821.GA1639@siouxsie> (raw)
In-Reply-To: <1299510858.30035.95.camel@thinkpad>

On Mon, Mar 07, 2011 at 04:14:18PM +0100, Gerd Stolpmann wrote:
> Am Montag, den 07.03.2011, 15:44 +0100 schrieb oliver:
> > On Mon, Mar 07, 2011 at 02:40:37PM +0100, Gerd Stolpmann wrote:
> > > Am Montag, den 07.03.2011, 13:57 +0100 schrieb oliver:
> > > > On Mon, Mar 07, 2011 at 01:27:55PM +0100, Gerd Stolpmann wrote:
> > > > > Am Sonntag, den 06.03.2011, 23:52 +0100 schrieb oliver:
> > > > > > Hello,
> > > > > > 
> > > > > > tried around using the simple-dtd argument
> > > > > > for Nethtme.parse.
> > > > > > 
> > > > > > It changes the behaviour compared to
> > > > > > the default behaviour, but I could not find out
> > > > > > how this works.
> > > > > > 
> > > > > > Someone here who can explain me this
> > > > > > argument and describe, how it can be used?
> > > > > 
> > > > > Maybe the HTML specification would be a good reference here:
> > > > > http://www.w3.org/TR/1999/REC-html401-19991224. You will see there that
> > > > > most HTML elements are either an inline element, a block element, or
> > > > > both ("flow" element). The grammar of HTML is described in terms of
> > > > > these classes. For instance, a P tag (paragraph) is a block element and
> > > > > contains block elements whereas B (bold) is an inline element and
> > > > > contains inline elements. From this follows that you cannot put a P
> > > > > inside a B: <B><P>something</P></B> is illegal.
> > > > > 
> > > > > The parser needs this information to resolve such input, i.e. do
> > > > > something with bad HTML. As HTML allows tag minimization (many end tags
> > > > > can be omitted), the parser can read this as: <B></B><P>something</P>
> > > > > (and the </B> in the input is ignored).
> > > > > 
> > > > > If all start and all end tags are written out, changing the
> > > > > simplified_dtd does not make any difference.
> > > > > 
> > > > > There is no normative text that says how to read bad HTML. Because of
> > > > > this, it is - to a large degree - an interpretation of HTML what you put
> > > > > into simplified_dtd.
> > > > > 
> > > > > > The description IMHO is not sufficient to explain
> > > > > > this feature.
> > > > > 
> > > > > I'd say your formal knowledge about HTML is insufficient.
> > > > [...]
> > > > 
> > > > If formal HTML spec is sufficient to know the behaviour of the module,
> > > > there would no need to have the dtd-argument, which seems, follwoinjg your
> > > > explanations, to change the behavior in a way that it does NOT follow
> > > > the formal specifications.
> > > 
> > > There is no standard regarding that (except that HTML is also SGML, and
> > > there are some rules for that in SGML). You could also reject bad HTML.
> > > But this has not become common practice (unlike for XML, for instance).
> > > 
> > > So, it depends on your HTML documents how you want to fix bad HTML.
> > > That's the reason why you can configure it.
> > [...]
> > 
> > But it's not mentioned how the dtd-Argument works.
> > 
> > Does it change the behaviour only for those tags that
> > are mentioned in the dtd-argument?
> > What about the other args? Will they stay as before (default)?
> 
> I think this is pretty clear: if you set the dtd arg, you pass a
> completely new dtd in, overriding any default.
[...]

Thanks for the answer, that was what I wanted to know.


> This is how optional
> arguments work in Ocaml.

No, this is how you have implemented it.

An optional argument also could be used to just overwrite those entries of the
default dtd that are passed in.

Like in a record, where just a changed part of it needs to be mentioned and the
rest stays, or in an association list, where newly added items will be found
because they will be found first, which means only newly added items are changed.

[...]
> Btw, you could have easily answered that yourself by looking at the
> source. I mean just for the case that you do not see the obvious.

Yes, I could have looked into the sources, maybe next time I will do it,
even I prefer docs that are clear enough to avoid the need to look into the sources
of a library.


Ciao,
   Oliver

  reply	other threads:[~2011-03-07 20:18 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-06 22:52 oliver
2011-03-07 12:27 ` Gerd Stolpmann
2011-03-07 12:57   ` oliver
2011-03-07 13:40     ` Gerd Stolpmann
2011-03-07 14:44       ` oliver
2011-03-07 14:53         ` oliver
2011-03-07 15:14         ` Gerd Stolpmann
2011-03-07 20:18           ` oliver [this message]
2011-03-07 15:40   ` Yoann Padioleau
2011-03-07 16:24     ` Gerd Stolpmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110307201821.GA1639@siouxsie \
    --to=oliver@first.in-berlin.de \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).