Re: XSL-optimized DTDs (Was: Re: Mixed content: selecting current context w/out child)

Subject: Re: XSL-optimized DTDs (Was: Re: Mixed content: selecting current context w/out child)
From: "John E. Simpson" <simpson@xxxxxxxxxxx>
Date: Sun, 14 Mar 1999 19:41:01 -0500
At 09:43 AM 3/15/99 +1100, Marcus Carr wrote:
>John E. Simpson wrote:
>
>> Yah. In FlixML ver. 3.0 (not yet available on-line), I've done pretty much
>> just that (ATTLISTs omitted for brevity):
>>   <!ELEMENT cast        (leadcast, othercast?) >
>>   <!ELEMENT leadcast    ((male | female | animal)*) >
>>   <!ELEMENT othercast   ((male | female | animal)*) >
>>   <!ELEMENT male        (castmember, role)* >
>>   <!ELEMENT female      (castmember, role)* >
>>   <!ELEMENT animal      (castmember, role, species)* >
>>   <!ELEMENT castmember  (#PCDATA) >
>>   <!ELEMENT role        (#PCDATA) >
>>   <!ELEMENT species     (#PCDATA) >
>
>Just out of interest, what do you do if a castmember has multiple roles
and/or
>crosses gender and/or is genderless? 

Well, I thought about some of that. One possibility (e.g. Alec Guiness in
"Kind Hearts and Coronets") would be just as you said -- one castmember
playing multiple roles. So subordinating <role> to <castmember>, rather
than making them siblings, would be a more fully normalized solution. As it
is now, yeah, the castmember would have to be repeated for each of the roles:
	<castmember>Alec Guiness</castmember><role>Ascoyne d'Ascoyne</role>
	<castmember>Alec Guiness</castmember><role>Henry d'Ascoyne</role>
	<castmember>Alec Guiness</castmember><role>Canon d'Ascoyne</role>
				(etc.)

The crossing-gender and genderless (like, hmm, robots? the title characters
in "Gremlins"?) problems hadn't occurred to me, although I did recognize
that there's no provision for animal genders.... But as I mention at one
point in the building-a-FlixML-document tutorial (at
http://www.flixml.org/flixml_build.html), "Yeah, all right, I could have
broken the animal element up into male and female as well. I had to draw
the line somewhere -- I was just trying to teach XML, not cover the
fraction of a percent of movies with animal cast members of both genders!" :)

>It would seem that the following would be
>legal:
>
><othercast>
>   <male>Bill Bob</male>
>   <male>Phil Bob</male>
>   <male>Tim Bob</male>
></othercast>
>
><othercast>
>   <male>Rob Bob</male>
></othercast>
>
><othercast>
></othercast>

Maybe I'm misreading something (always a possibility), but I think the
first and second example would be illegal because <male> doesn't have
PCDATA content. You're right about the third, though, and I need to plug
that gap (also the possibility that <male>, <female>, and <animal> can be
legally empty). Thanks for the catch.

I love finding out about these kinds of bugs in the DTD (and there are
others, known as well as yet unknown). OTOH I'm reluctant to make it *too*
rigorous; it is, after all, basically just a demonstrator rather than a
"real" application, and to the extent that it incorporates a variety of
structures -- even "slack" ones -- I'll be able to use it to demonstrate a
corresponding variety of circumstances. And on yet another hand, I don't
want to be embarrassed about it. :)

Thanks again, Marcus!

John


==========================================================
John E. Simpson            | The secret of eternal youth
simpson@xxxxxxxxxxx        | is arrested development.
http://www.flixml.org      |  -- Alice Roosevelt Longworth


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread