RE: external entities

Hi, Junfeng, 

Sorry! I made an  incorrect statement yesterday  (Thank Eva's reply for letting me realize that ) ;-)

As Eva said, ext is an internal entity defined in an external subset.That is, your second statement is correct. 

Your first statement 

"In my understanding, since ext.dtd is an external subset and a special kind of external entity, then ext is by default, an external entity." 

doesn't hold water because

"X is defined in an external subset --/--> X is an external entity". 

More precisely, whether internal or external an entity is does not depend on whether it's defined internal or external to the XML document. 

The single criterion to distinguish them is to see whether EntityValue is used in 

[73]    EntityDef    ::=    EntityValue| (ExternalID NDataDecl?) 
[74]    PEDef    ::=    EntityValue | ExternalID 

 or not.

So derives the answer to your last question. 

Have a look at <!ENTITY ext "blah">, "blah" is there which matches EntityValue. So ext is an internal entity.




Hope this helps.


Best Regards,
Han Xu 
  

-----Original Message-----
From: xml-editor-request@w3.org [mailto:xml-editor-request@w3.org] On Behalf Of Eve L. Maler
Sent: Thursday, July 07, 2005 10:04 PM
To: Junfeng Dong
Cc: xml-editor@w3.org
Subject: Re: external entities


ext is an internal entity that happens to be defined in an external subset.  This is, in fact, the typical case for internal entity definitions since internal subsets are relatively rare in the wild. 
   (See, for example, the DocBook DTD, which provides a "dbgenent.mod" external entity as a placeholder precisely for containing internal entities: 
http://www.oasis-open.org/docbook/xml/5.0a1/)  Just because your internal entity is called "ext" doesn't make it external in any way.

Hope this helps,

	Eve

Junfeng Dong wrote:
> Dear Sir or Madam,
> 
>  
> 
> I have a question for the definition of external entities. Suppose 
> there is an xml document given as follow:
> 
>  
> 
> <!DOCTYPE root SYSTEM "ext.dtd" [
> 
> ]>
> 
> <root a="&ext;"/>
> 
>  
> 
>  
> 
> The content of file ext.dtd is:
> 
>  
> 
> <!ELEMENT root ANY>
> 
> <!ATTLIST root a NMTOKEN #IMPLIED>
> 
> <!ENTITY ext "blah">
> 
>  
> 
> Is entity ext counted as an internal entity or an external entity? In 
> xml specification, "The document type declaration can point to an 
> external subset (a special kind of external entity
> <http://www.xml.com/axml/target.html#dt-extent#dt-extent>) containing 
> markup declarations," In my understanding, since ext.dtd is an 
> external subset and a special kind of external entity, then ext is by 
> default, an external entity. However, by the definition of internal 
> entity ("If the entity definition is an |EntityValue 
> <http://www.xml.com/axml/target.html#NT-EntityValue#NT-EntityValue>|,
> the defined entity is called an *internal entity*. There is no 
> separate physical storage object, and the content of the entity is 
> given in the declaration."), entity ext is an internal entity.
> 
>  
> 
> I am confused here. Since if ext is an external entity, then the 
> document isn't well-formed.
> 
>  
> 
> Thanks in advance.
> 
>  
> 
> Junfeng
> 

-- 
Eve Maler                                         +1 425 947 4522
Technology Director                           eve.maler @ sun.com
CTO Business Alliances group                Sun Microsystems, Inc.

Received on Friday, 8 July 2005 02:09:20 UTC