Subject: RE: [xsl] DTD Element problem From: "Passin, Tom" <tpassin@xxxxxxxxxxxx> Date: Thu, 6 Nov 2003 11:42:48 -0500 |
[ Flemming Jønsson] > > I have some xml files containing source code (or SQL queries) > inside a particular tag. > > In my DTD I wanted to define the element SQL to contain > #CDATA, but this is not allowed. > > <!ELEMENT SQL (#CDATA)> is illegal, <!ELEMENT SQL (#PCDATA)> > is legal. > > In my XML files I have <![CDATA[{SQL_HERE}]> around my SQL > queries - which works fine, when SQL is defined as PCDATA in the DTD. > > Is there another way I can define SQL to be CDATA instead of > PCDATA in the DTD? > It seems a bit redundant to define SQL as PCDATA in the DTD > and then explicitly define the contents of the SQL tag to be > CDATA in the XML file. > You misunderstand what CDATA and PCDATA are, but you have ended up doing the right thing. #PCDATA means that the element can have character content (i.e., character as opposed to element content). That is what you want. A CDATA section is a way to tell the processor that characters that _look_ like markup are really text, not markup. Therefore, there is no need to "declare" a CDATA section in the DTD - even if it were allowed - because CDATA sections ARE character content. By the time that your xml data is seen by the xslt processor, it is just characters anyway - the fact that it was originally in a CDATA section is not known by the xslt processor. You can avoid the use of a CDATA section by escaping any of the special characters that happen to be in there, like "<", but it really does not matter one way or the other so far as later proessing is concerned. Cheers, Tom P XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] DTD Element problem, cknell | Thread | [xsl] Selecting Random elements, David Elsmore |
Re: [xsl] capitalizing the first le, belangour abdessamad | Date | Re: [xsl] How To Call XSL Template , Tom Mitchell Jr. |
Month |