[
Lists Home |
Date Index |
Thread Index
]
- From: tpassin@home.com
- To: "'Xml-Dev (E-mail 2)'" <xml-dev@lists.xml.org>
- Date: Sun, 27 Aug 2000 23:38:31 -0400
John F. Schlesinger found an error in my suggested stylesheet - this was for
generating a DTD with a highly repetitive structure -
Looks like I misremembered where the disable-output-escaping attribute can
go. XT liked it anyway, though. Just move the attribute to the
xsl:value-of statements that create the declarations and everything should
be OK. Sorry to confuse you.
Tom
> Tom,
> I tried your stylesheet and got a message (from the 'conforming' MS
parser)
> "Attribute 'disable-output-escaping' is invalid on 'xsl:output'."
>
> So I looked up the specification at http://www.w3.org/TR/xslt and found:
>
> "An xsl:value-of or xsl:text element may have a disable-output-escaping
> attribute; the allowed values are yes or no; the default is no; if the
value
> is yes, then a text node generated by instantiating the xsl:value-of or
> xsl:text element should be output without any escaping."
>
> The specification for xsl:output doesn't mention the
disable-output-escaping
> attribute. Am I doing something wrong?
>
> Yours,
> John F Schlesinger
> SysCore Solutions
> 212 619 5200 x 219
> 917 886 5895 Mobile
>
> -----Original Message-----
> From: tpassin@home.com [mailto:tpassin@home.com]
> Sent: Thursday, August 24, 2000 7:16 PM
> To: Xml-Dev (E-mail 2)
> Subject: Re: DTD/Schemas with repeated structure
>
>
> Justin Lipton asked about generating a simple, repetitive DTD structure
> automagically (see his post at the end).
>
> Simple - stick with xml and use an xslt stylesheet!. It's about as easy
as
> programming it, possibly easier. Of course, you do have to create the xml
> file...
>
> Here's the input xml file:
>
> <things>
> <thing>Mammal</thing>
> <thing>Fish</thing>
> <thing>Bird</thing>
> </things>
>
> Here's the stylesheet (the mailer will break the lines at awkward places
so
> I am also attaching it):
>
> <?xml version="1.0"?>
>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:output method='text' disable-output-escaping='yes'/>
> <xsl:template match="/things"><xsl:apply-templates/></xsl:template>
>
> <xsl:template match='thing'>
> <xsl:variable name='name' select='text()'/>
> <!ELEMENT <xsl:value-of select='$name'/> (<xsl:value-of
> select='$name'/>Name, <xsl:value-of select='$name'/>Type)>
> <!ATTLIST <xsl:value-of select='$name'/>Name (latin|common)
"common">
> <!ELEMENT <xsl:value-of select='$name'/>Type (#PCDATA)>
> </xsl:template>
>
> </xsl:stylesheet>
>
> Here's the output, just what you asked for:
>
> D:>xt things.xml things.xsl
>
>
> <!ELEMENT Mammal (MammalName, MammalType)>
> <!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)>
>
> Cheers,
>
> Tom Passin
>
>
> ==============================================================
> > 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)>
> >
>
>
|