- From: Felix Sasaki <fsasaki@w3.org>
- Date: Wed, 06 Jul 2005 14:41:48 +0900
- To: "public-i18n-geo@w3.org" <public-i18n-geo@w3.org>
The table at the end of the last mail got screwed up, I hope you still will understand it :) Cheers, Felix On Wed, 06 Jul 2005 14:39:54 +0900, Felix Sasaki <fsasaki@w3.org> wrote: > > Hi Richard, hi all, > > This is a summary of the issue "NCRs and schema languages", which has > some overlap with the FAW "entities and NCRs". It describes ways of > encapsulating NRCs, and entities are ONE possibility. Which way is > useful and possible, depends on the schema language. This summary might > become an input to the FAQ about entites and NCRs, if Richard and others > think it is useful. > > Cheers, Felix. > > The following discussion on entities for numeric character references > (NCRs) and other, alternative ways of encapsulating numeric character > references concentrates on four schema languages: XML DTDs, XML Schema, > RELAX NG and Schematron. > > All schema languages allow to use entities for NCRs in XML documents. > They differ with respect to the declaration of entities. As for XML > DTDs, entities can be defined A) in the declaration subset of the XML > document, or B) in the external DTD ("NCR" is used as a placeholder for > a numeric character reference): > > A) > <!DOCTYPE mydoc [ > <!ENTITY mychar "NCR"> > ]> > > or > > B) > <!DOCTYPE mydoc SYSTEM "mydtd.dtd"> > > "mydtd.dtd" contains The entitiy declaration <!ENTITY mychar "NCR">. > > XML Schema, RELAX NG and Schematron allow to declare entities like A). > They do not allow to declare entities like B), i.e. as part of the > external schema. Strictly speaking, entity declaration and expansion are > out of scope for XML Schema, RELAX NG and Schematron. All these schema > languages rely on an XML processor which expands the entities before the > validation against the schema starts. Non-validating XML processors are > required to check only the document and no external declarations. Hence, > it depends on the implementation of the XML processor, whether external > entity declarations can be resolved or not. > XML Schema provides a different solution to encapsulate numeric > character references: The numeric character reference can be defined as > a default value for an element: > > <xsd:element name="mychar" type="xsd:token" fixed="NCR"/> > > In an XML document, the element then can be used like this > > <mydoc> ... <mychar/>...</mydoc> > > RELAX NG and XML DTDs do not allow to define default values for element > content. Also, Schematron does not support this solution. But XML DTDs, > XML Schema and RELAX NG allow to declare default values for attributes. > Hence, for XML DTDs the following alternative way of attaching a name to > a numeric character reference is possible: > > <!ELEMENT mychar EMPTY> > <!ATTLIST mychar ncr NMTOKEN "..." #FIXED> > > or in RELAX NG: > <element name="mychar"> > <attribute name="ncr" a:defaultValue="NCR"/> > <empty/> > </element> > > or in XML Schema: > <xsd:attribute name="mychar" type="xsd:token" fixed="NCR"/> > > As for XML DTDs, there seems to be no real need to choose this method, > since they allow to declare entities in the external DTD. > > The following table summarizes the ways of declaring entities and > alternative methods to encapsulate numeric character references in > different schema languages. > > Declaration Subset External Subset Element default > value Attribute default value > XML DTDs + + - + > XML Schema + xml parser dep. + + > RELAX NG + xml parser dep. - + > Schematron + xml parser dep. - - >
Received on Wednesday, 6 July 2005 05:41:54 UTC