yep you are right.
 
Thx a lot!


From: Prashant [mailto:[EMAIL PROTECTED]
Sent: Friday, September 22, 2006 14:41
To: [email protected]
Subject: Re: Trying to validate XML files using several XSD

Well, it is a good question.

I realize i referred to the "System id" some what loosely. In a DTD the System Id usually points to the http location where DTD is available.

You want to choose a string that is going will uniquely identify the Schema a XML instance is based on. So natural candidate would be the targetNamespace.

Another candidate can be the http location hint for schema suggested by the XML instance.

E.g: Consider the web.xml:

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

System Id can be : http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd

However it is not mandatory that the all XMLs leave schemaLocation hint.

-Prashant

Decoker, Lydie (Lydie) wrote:
Yes Prashant. It does help a lot.

One more question: hou is the system ID set? Is it via the XML?

Lydie. 

-----Original Message-----
From: Prashant [mailto:[EMAIL PROTECTED]] 
Sent: Friday, September 22, 2006 10:39
To: [email protected]
Subject: Re: Trying to validate XML files using several XSD

Decoker, Lydie (Lydie) wrote:
  
Hello!

I have corrected my target namespace errors in my diffents xsd files.
Now when I try to validate my XML file, I got errors like:
schema_reference.4: Failed to read schema document 'RIRName.xsd', 
because 1) could not find the document; 2) the document could not be 
read; 3) the root element of the document is not <xsd:schema>.

If I use an EntityResolver, this error will not occur again. What I
    
did:
  
	public InputSource resolveEntity(String publicId, String
systemId) throws SAXException, IOException {
		if (systemId.endsWith("Order_L_0_96.xsd")) {
			return new

    
InputSource(System.getProperty("schemaLocation").concat(File.separator).
  
concat("Order_L_0_96.xsd"));
		} else if (systemId.endsWith("WISkeletons.xsd")) {
			return new

    
InputSource(System.getProperty("schemaLocation").concat(File.separator).
  
concat("WISkeletons.xsd"));
		}
		return null;
	}

Now I would prefer to avoid to hard-code such an information. Is the 
catalog a good solution?
  
    

If hard-coding the Schema name does not please your aesthetics, you
could very well maintain the mappings between the xsd to local URI like
this:

#Properties file that maintains mapping between xsd, local URI.
Order_L_0_96.xsd=schemas/Order_L_0_96.xsd
WISkeletons.xsd=schemas/WISkeletons.xsd

You then put 'schemas' in the classpath, then your implementation of
EntityResolver will get the bytes by using
Classloader.getResourceAsStream().

This is infact what Catalog[1] does for you. You have to externalize the
mappings between the system Id to local URI to an XML file.

Hope this helps
-Prashant

[1]:http://www.oasis-open.org/committees/entity/spec-2001-08-06.html#d0e
533
  
Lydie.
-----Original Message-----
From: Prashant [mailto:[EMAIL PROTECTED]]
Sent: Thursday, September 21, 2006 16:50
To: [email protected]
Subject: Re: Trying to validate XML files using several XSD

Are you talking about OASIS Catalog ? 
http://www.oasis-open.org/committees/entity/

I think Catalog is just a standardized way of writing an
    
EntityResolver.
  
OASIS needs you to produce a standard XML that maps the public Ids to 
local URIs. By using this method you simply would use library supplied
    

  
implementation of EntityResolve like OASISEntityResolver that 
understands the Catalog XML.

Because Catalog is a standardized way, it will come in handy if you 
were to use tools like <xslt> task of ANT.

Hope this helps.

-Prashant


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

  
    


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

  

--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to