XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Stephen DalySubject: Using DTD Entities and XSD
Author: Stephen Daly
Date: 25 Jan 2007 01:38 PM
Here is a link to a discussion on how to use Entity definitions with XML-Schema.
http://xsd.stylusstudio.com/2001Nov/post08021.htm#

The problem is that DTD general entities have value and XSD doesn't have an equivalent construct (according to that discussion). In the above discussion, it is recommended to use DTD (for entities) AND XSD (for validation). This would be fine if I could turn off DTD validation and only use it for defining Entities (naturally, I don't want to maintain two validation schemas). The way that I know how to do this is to declare my root element with "ANY" in the DTD shema, e.g. <!ELEMENT MyRoot ANY>. This is accepted by Internet Explorer. But as my earlier posting (which nobody has replied to yet) reports, the ANY designation seems to be ignored by the validation function in Stylus Studio, resulting in validation errors. Unless there is something I'm missing, this seems to spoil the work-around idea suggested in the above link

Postnext
Ivan PedruzziSubject: Using DTD Entities and XSD
Author: Ivan Pedruzzi
Date: 25 Jan 2007 02:40 PM

Hi Stephen,

Did you try to use a different validator?
http://www.stylusstudio.com/xml_parsers.html

Ivan Pedruzzi
Stylus Studio Team

Postnext
Alberto MassariSubject: Using DTD Entities and XSD
Author: Alberto Massari
Date: 26 Jan 2007 04:17 AM
Hi Stephen,
using ANY won't help you much, as it only applies to the element content (not to the attributes) and in any case the actual child elements must be declared in the DTD (ANY simply relax the constraints on the name, order and cardinality of the child elements). But if you want to just have a DTD in order to define entities, and have an XMLSchema to perform validation, you can do like in this small example I have attached.

Hope this helps,
Alberto


Documentany.xml
The XML file

Unknownany.dtd
The DTD defining the entity

Unknownany.xsd
The XMLSchema defining the structure

Postnext
Stephen DalySubject: Using DTD Entities and XSD
Author: Stephen Daly
Date: 26 Jan 2007 12:37 PM
Originally Posted: 26 Jan 2007 12:20 PM
Hi Alberto and Ivan, I really appreciate your taking time to help. I have found that Ivan's advice helps: I get errors when using xerces but not when using msxml 6.0. Alberto, I found that your example also fails and succeeds to validate as above. Also, Alberto, I'm confused by your comment "actual child elements must be declared in the DTD" because your DTD file doesn't have them

<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY urka "aaa">

No "Application" or "Child" elements defined and this is what xerces complains about when i ran your example:

Xerces Java 2 Validation Starting.
file:///c:/Temp/XML/any.xml:3,108: (Error) Element type "Application" must be declared.
file:///c:/Temp/XML/any.xml:4,9: (Error) Element type "child" must be declared.
Xerces Java 2 Validation completed with errors.



Thanks again for your help
Steve

Postnext
Alberto MassariSubject: Using DTD Entities and XSD
Author: Alberto Massari
Date: 26 Jan 2007 12:40 PM
Hi Stephen,
I can verify that the any.xml file is valid according to both Xerces-C++ (the built-in validator), Saxon and XSV, while Xerces-J, and MSXML seem to ignore the XMLSchema if a is present. Is this what you wanted to report?

To clarify my comment: when you perform DTD validation (for instance, by defining <!ELEMENT Application ANY> ) you are saying that Application can have any valid child, but you will get an error if such a child is not listed in the DTD using a <!ELEMENT child ANY> declaration.

In any case, you should first settle for the tool that you will be using to perform validation and/or XSLT processing in the deployment scenario, and design the DTD/Schema that makes it work.

As for StylusXslt.exe: this is the command line that embed the 'built-in' XSLT processor; if you need to use a MSXML-based tool, you should use the msxsl.exe executable.

Hope this helps,
Alberto

Postnext
Stephen DalySubject: Using DTD Entities and XSD
Author: Stephen Daly
Date: 26 Jan 2007 12:50 PM
Hi Alberto, xerces-j is what i have available to me in the IDE and that is what flaged the errors I copied above. xerces-j seems to require a DTD to have a complete schema if you refer to a dtd file. MSXML and whatever stylusXslt.exe uses, allow you to not include any schema (eg, only Entity declarations) in your .dtd file. So, I'm ok as it seems StylusXslt.exe is flexible and I can choose a parser that works for me in the IDE.

Steve

Posttop
Stephen DalySubject: Using DTD Entities and XSD
Author: Stephen Daly
Date: 26 Jan 2007 04:37 PM
Originally Posted: 26 Jan 2007 04:38 PM
Hi Alberto, xerces-j is what i have available to me in the IDE and that is what flaged the errors I copied above. xerces-j seems to require a DTD to have a complete schema if you refer to a dtd file. MSXML and whatever stylusXslt.exe uses, allow you to not include any schema (eg, only Entity declarations) in your .dtd file. So, I'm ok as it seems StylusXslt.exe is flexible and I can choose a parser that works for me in the IDE.

Steve

 
Topic Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.