OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help



   Re: DTD/Schemas with repeated structure

[ Lists Home | Date Index | Thread Index ]
  • From: Mark Wutka <mark@wutka.com>
  • To: xml-dev@lists.xml.org
  • Date: Thu, 24 Aug 2000 18:07:01 -0400 (EDT)

Okay, I know I'm gonna burn in hell for this, but here goes.. >:-)

Use an external DTD and make the URL for the DTD run a Java Server Page,
like this:

    String[] e = request.getParameterValues("elem");

    for (int i=0; i < e.length; i++)
<%="<!ELEMENT "+e[i]+" ("+e[i]+"Name, "+e[i]+"Type)>"%>
    <%="<!ELEMENT "+e[i]+"Name (#PCDATA)>"%>
        <%="<!ATTLIST "+e[i]+"Name nametype (latin|common) \"common\">"%>
    <%="<!ELEMENT "+e[i]+"Type (#PCDATA)>"%>

The output of the JSP is a DTD in the form you just described. You need to
have a local DTD?  No problem!  Just do this in your DTD:

<!ENTITY fun SYSTEM "http://localhost:8080/dtdfun.jsp?elem=Mammal&elem=Bird&elem=Fish">


Sorry, it's been a long day and I'm obviously quite punchy. Hopefully
someone has practical solution.

On Fri, 25 Aug 2000, Justin Lipton wrote:

> Hi,
> I was wondering if anyone has come across this problem.
> We are currently using a DTD that has the following structure.
> Ignore the actual names used here as they are purely for illustrative
> purposes but assume that there is no choice but to use such a structure:
> <!ELEMENT Mammal (MammalName, MammalType)>
> 	<!ELEMENT MammalName (#PCDATA)>
> 		<!ATTLIST MammalName (latin|common) "common">
> 	<!ELEMENT MammalType (#PCDATA)>
> <!ELEMENT Fish (FishName, FishType)>
> 		<!ATTLIST FishName (latin|common) "common">
> 	<!ELEMENT FishType (#PCDATA)>
> <!ELEMENT Bird (BirdName, BirdType)>
> 		<!ATTLIST BirdName (latin|common) "common">
> 	<!ELEMENT BirdType (#PCDATA)>
> Image dozens of elements like this!
> Is there a way (either with a Schema or a DTD) to generalise this type of
> structure such that:
> <!ELEMENT * (*Name, *Type)>
> 		<!ATTLIST *Name (latin|common) "common">
> 	<!ELEMENT *Type (#PCDATA)>
> Cheers,
> Justin.


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS