- From: Sean Hayes <Sean.Hayes@microsoft.com>
- Date: Thu, 16 Apr 2009 12:36:00 +0100
- To: "Glenn A. Adams" <gadams@xfsi.com>, Public TTWG List <public-tt@w3.org>
- Message-ID: <AB3FC8E280628440B366A29DABB6B6E806CE1E464D@EA-EXMSG-C334.europe.corp.microsoft.>
Hmm, I'd hate for a solution to be rejected just because it's too much effort. My expectation was that the specification and schema detail for each feature would be a fairly mechanical rewrite of Appendix E, where we have for the most part already specified what the individual feature attributes would be. So I don't see the individual attributes as being a great deal of additional spec work. It would need to be verified of course, but then I don't think anyone else has actually verified appendix E as it stands; so that work is still outstanding anyway. I'm happy to convert the prose for this section if need be. In either case the features work is a major part of the spec now, and should not be pushed off into an annexe, but should form a normative section in the main body. I don't think we require tests for each feature, (if we do, then we would also require them for all values of requiredFeatures ), in my opinion we would only require tests for the mechanics (profile feature extensions elements) - which I already have. I'm not sure how we can actually test individual profile features, whether presented as individual attributes or as sub parts of an attribute string; since for the most part the expected behavior would be implementation dependant. I've outlined below in this email what I think are the majority of the editorial changes, what else would need specifying? 13 Features This section specifies (1) a set of feature designations, each of which labels one or more syntactic and/or semantic features defined by this specification, and (2) for each designated feature, whether the feature is mandatory or optional for a transformation or presentation processor. Example: <tt xml:lang="" xmlns:ttf="http://www.w3.org/2006/10/ttaf1#feature" xmlns:ttp="http://www.w3.org/2006/10/ttaf1#parameter" xmlns:ms="http://www.microsoft.com/enable/timedtext" xmlns="http://www.w3.org/2006/10/ttaf1"> <head> <profile base="http://www.w3.org/2006/10/ttaf1#profile-dfxp-presentation"> <ttp:features ttf:color="optional" ttf:bidi="required" <ttp:extensions ms:x-narration-audio="required" /> </profile> </head> <body> <div> <p/> </div> </body> </tt> The example above defines the processing requirements of a simple dfxp document. The requirements are based on the dfxp presentation core requirements, indicating this document is intended to be presented using the dfxp semantics; it then augments the requirements to specify that color processing is not required; but that bidi processing is required. It also defines that the document should be processed using a non standard audio processing technique. A features specification is expressed using the following elements: * 13.1.1 profile <http://dev.w3.org/2008/tt/spec/ttaf1-dfxp.html#document-features-vocabulary-profile> * 13.1.2 features<http://dev.w3.org/2008/tt/spec/ttaf1-dfxp.html#document-features-vocabulary-features> * 13.1.3 extensions<http://dev.w3.org/2008/tt/spec/ttaf1-dfxp.html#document-features-vocabulary-extensions> 13.1 Element Vocabulary The 13.1.1 profile<http://dev.w3.org/2008/tt/spec/ttaf1-dfxp.html#document-features-vocabulary-profile> element serves as a generic container element for assigning and grouping features information. Features requirement information for a document instance may be expressed by a profile element in one of two (non mutually exclusive) manners: (1) by specifying a base attribute containing a profile URI defining a known enumeration of starting features (see 5.2) and (2) by supplying one or more feature and extension elements within the element, which apply deltas to the defined base set. Externally defined profile definitions may created by interested parties . Both types of profile are referred to in this document as feature specifications. XML Representation - Element Information Item: profile <profile base<http://www.w3.org/TR/2006/CR-ttaf1-dfxp-20061116/#feature-attribute-base> = URI xml:id<http://dev.w3.org/2008/tt/spec/ttaf1-dfxp.html#content-attribute-id> = ID xml:lang<http://dev.w3.org/2008/tt/spec/ttaf1-dfxp.html#content-attribute-lang> = string xml:space<http://dev.w3.org/2008/tt/spec/ttaf1-dfxp.html#content-attribute-space> = (default|preserve) {any attribute not in default or any TT namespace ...}> Content: Features.class<http://www.w3.org/TR/2006/CR-ttaf1-dfxp-20061116/#element-vocab-group-table>* </profile> A profile element is considered to define a computed feature specification, where the specification is determined using the following ordered rules: 1. If a base attribute is specified on the profile element, then the computed feature specification must be initialized so as to include each feature specification contained in the referenced feature specification of the URI referenced by the base attribute. If no base attribute is defined, then the referenced feature specification is the null set, and all features are considered optional. 2. For each feature attribute on each features element contained in the profile element, if the element defines the value of the attribute as "required" the individual feature is added to the computed feature specification. if the element defines the value of the attribute as "optional" the individual feature is removed from the computed feature specification. The features elements are processed in the lexical order in which they appear in the profile element, such that the lexically last referenced such attribute applies. 3. The set of features contained in the final computed feature specification are to be considered mandatory for processing the document instance. All other features are to be considered optional. A processor which does not fully implement all of the required features should not process the document further. 13.1.2 features The features element is used to define a single feature specification or a set of feature specifications. The features element accepts as its children zero or more metadata elements. XML Representation - Element Information Item: features <features xml:id<http://www.w3.org/TR/2006/CR-ttaf1-dfxp-20061116/#content-attribute-id> = ID xml:lang<http://www.w3.org/TR/2006/CR-ttaf1-dfxp-20061116/#content-attribute-lang> = string xml:space<http://www.w3.org/TR/2006/CR-ttaf1-dfxp-20061116/#content-attribute-space> = (default|preserve) {any attribute in TT Feature namespace ...} Content: Metadata.class<http://www.w3.org/TR/2006/CR-ttaf1-dfxp-20061116/#element-vocab-group-table>* </features> A features element is used to define part of the computed feature specification, where the set is determined using the ordered rules defined in 13.1.1. The features elements may only reference attributes defined in the timed text feature namespace. 13.1.3 extensions The extensions element is used to define a single feature specification or a set of feature specifications. The extensions element accepts as its children zero or more metadata elements. XML Representation - Element Information Item: extensions <extensions xml:id<http://www.w3.org/TR/2006/CR-ttaf1-dfxp-20061116/#content-attribute-id> = ID xml:lang<http://www.w3.org/TR/2006/CR-ttaf1-dfxp-20061116/#content-attribute-lang> = string xml:space<http://www.w3.org/TR/2006/CR-ttaf1-dfxp-20061116/#content-attribute-space> = (default|preserve) {any attribute not in default or any TT namespace ...}> Content: Metadata.class<http://www.w3.org/TR/2006/CR-ttaf1-dfxp-20061116/#element-vocab-group-table>* </extensions> A extensions element is considered to define part of the computed feature specification, where the set is determined using the ordered rules defined in 13.1.1. The extensions elements may only reference feature attributes defined outside of the timed text namespaces. And may be used by authors who need to specify some non standard workflow that must be applied to the document. 13.2 Attribute Vocabulary This section defines the 13.2.1 base<http://www.w3.org/TR/2006/CR-ttaf1-dfxp-20061116/#style-attribute-style> attribute used with both profile definition elements. In addition, this section specifies the following attributes in the TT Feature Namespace for use with feature definition elements: animation backgroundColor backgroundColor-block backgroundColor-inline backgroundColor-region bidi cellResolution clockMode color content core direction display display-block display-inline display-region displayAlign dynamicFlow dynamicFlow-barWipe dynamicFlow-block dynamicFlow-character dynamicFlow-fade dynamicFlow-glyph dynamicFlow-in dynamicFlow-inline dynamicFlow-inter dynamicFlow-intra dynamicFlow-jump dynamicFlow-leftToRight dynamicFlow-line dynamicFlow-out dynamicFlow-pixel dynamicFlow-smooth dynamicFlow-teletext dynamicFlow-topToBottom dynamicFlow-within dynamicFlow-word extent fontFamily fontFamily-generic fontFamily-non-generic fontSize fontSize-anisomorphic fontSize-isomorphic fontStyle fontStyle-italic fontWeight fontWeight-bold frameRate frameRateMultiplier layout length length-cell length-em length-integer length-negative length-percentage length-pixel length-positive length-real lineHeight markerMode metadata nested-div nested-span opacity origin overflow overflow-scroll padding padding-1 padding-2 padding-3 padding-4 pixelAspectRatio presentation profile requiredExtensions requiredFeatures showBackground smpteMode structure styling styling-chained styling-inheritance-content styling-inheritance-region styling-inline styling-referential subFrameRate textAlign textAlign-absolute textAlign-relative textDecoration textDecoration-over textDecoration-through textDecoration-under textOutline textOutline-blur tickRate timeBase-clock timeBase-media timeBase-smpte timeContainer time-clock time-clock-with-frames time-offset time-offset-with-frames time-offset-with-ticks timing transformation unicodeBidi visibility visibility-block visibility-inline visibility-region wrapOption writingMode writingMode-vertical writingMode-horizontal writingMode-horizontal-lr writingMode-horizontal-rl zIndex <text from 5.2> <modified text from Appendix E> E.1.1 #animation Becomes 6.x.y ttf:animation The ttf:animation attribute may be used by an author to express the requirement that the document be processed by a TT AF transformation processor which recognizes and is capable of transforming the following vocabulary defined by 11 Animation<http://dev.w3.org/2008/tt/spec/ttaf1-dfxp.html#animation>: * set<http://dev.w3.org/2008/tt/spec/ttaf1-dfxp.html#animation-vocabulary-set> or in the case of a TT AF presentation processor, that implements presentation semantic support for the same vocabulary enumerated above. Syntax Representation - ttf:animation ttf:animation : <requirement><http://www.w3.org/TR/2006/CR-ttaf1-dfxp-20061116/#style-value-digit> Etc etc.. Additional requirement type: 8.3.N <requirement> A <requirement> expression is used to express whether a feature is optional or required to process the current document instance. Syntax Representation - <requirement> <requirement> : "required" // the feature is mandatory | "optional" // the feature is optional | "{" <value list> "}" <value list> For features that correspond to attribute values that allow selection from a range of fixed constant values, the requirement can specify a subset of that enumeration. Table 4 addition: Features.class features<http://dev.w3.org/2008/tt/spec/ttaf1-dfxp.html#features-vocabulary-features> | extensions<http://dev.w3.org/2008/tt/spec/ttaf1-dfxp.html#features-vocabulary-extensions> The schema would look something like: C.2.2.N Feature Attributes Module <xs:schema targetNamespace="http://www.w3.org/2006/10/ttaf1#feature" xml:lang="en" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ttd="http://www.w3.org/2006/10/ttaf1#datatype" xmlns:ttf="http://www.w3.org/2006/10/ttaf1#feature"> <xs:import namespace="http://www.w3.org/2006/10/ttaf1#datatype" schemaLocation="ttaf1-dfxp-datatypes.xsd"/> <xs:attribute name="animation" type="ttd:requirement"/> <xs:attribute name="backgroundColor" type="ttd:requirement"/> <xs:attribute name="backgroundColor-block" type="ttd:requirement"/> <xs:attribute name="backgroundColor-inline" type="ttd:requirement"/> <xs:attribute name="backgroundColor-region" type="ttd:requirement"/> <xs:attribute name="bidi" type="ttd:requirement"/> <xs:attribute name="cellResolution" type="ttd:requirement"/> <xs:attribute name="clockMode" type="ttd:requirement"/> <xs:attribute name="color" type="ttd:requirement"/> <xs:attribute name="content" type="ttd:requirement"/> <xs:attribute name="core" type="ttd:requirement"/> <xs:attribute name="direction" type="ttd:requirement"/> <xs:attribute name="display" type="ttd:requirement"/> <xs:attribute name="display-block" type="ttd:requirement"/> <xs:attribute name="display-inline" type="ttd:requirement"/> <xs:attribute name="display-region" type="ttd:requirement"/> <xs:attribute name="displayAlign" type="ttd:requirement"/> <xs:attribute name="dynamicFlow" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-barWipe" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-block" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-character" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-fade" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-glyph" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-in" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-inline" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-inter" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-intra" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-jump" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-leftToRight" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-line" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-out" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-pixel" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-smooth" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-teletext" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-topToBottom" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-within" type="ttd:requirement"/> <xs:attribute name="dynamicFlow-word" type="ttd:requirement"/> <xs:attribute name="extent" type="ttd:requirement"/> <xs:attribute name="fontFamily" type="ttd:requirement"/> <xs:attribute name="fontFamily-generic" type="ttd:requirement"/> <xs:attribute name="fontFamily-non-generic" type="ttd:requirement"/> <xs:attribute name="fontSize" type="ttd:requirement"/> <xs:attribute name="fontSize-anisomorphic" type="ttd:requirement"/> <xs:attribute name="fontSize-isomorphic" type="ttd:requirement"/> <xs:attribute name="fontStyle" type="ttd:requirement"/> <xs:attribute name="fontStyle-italic" type="ttd:requirement"/> <xs:attribute name="fontWeight" type="ttd:requirement"/> <xs:attribute name="fontWeight-bold" type="ttd:requirement"/> <xs:attribute name="frameRate" type="ttd:requirement"/> <xs:attribute name="frameRateMultiplier" type="ttd:requirement"/> <xs:attribute name="layout" type="ttd:requirement"/> <xs:attribute name="length" type="ttd:requirement"/> <xs:attribute name="length-cell" type="ttd:requirement"/> <xs:attribute name="length-em" type="ttd:requirement"/> <xs:attribute name="length-integer" type="ttd:requirement"/> <xs:attribute name="length-negative" type="ttd:requirement"/> <xs:attribute name="length-percentage" type="ttd:requirement"/> <xs:attribute name="length-pixel" type="ttd:requirement"/> <xs:attribute name="length-positive" type="ttd:requirement"/> <xs:attribute name="length-real" type="ttd:requirement"/> <xs:attribute name="lineHeight" type="ttd:requirement"/> <xs:attribute name="markerMode" type="ttd:requirement"/> <xs:attribute name="metadata" type="ttd:requirement"/> <xs:attribute name="nested-div" type="ttd:requirement"/> <xs:attribute name="nested-span" type="ttd:requirement"/> <xs:attribute name="opacity" type="ttd:requirement"/> <xs:attribute name="origin" type="ttd:requirement"/> <xs:attribute name="overflow" type="ttd:requirement"/> <xs:attribute name="overflow-scroll" type="ttd:requirement"/> <xs:attribute name="padding" type="ttd:requirement"/> <xs:attribute name="padding-1" type="ttd:requirement"/> <xs:attribute name="padding-2" type="ttd:requirement"/> <xs:attribute name="padding-3" type="ttd:requirement"/> <xs:attribute name="padding-4" type="ttd:requirement"/> <xs:attribute name="pixelAspectRatio" type="ttd:requirement"/> <xs:attribute name="presentation" type="ttd:requirement"/> <xs:attribute name="profile" type="ttd:requirement"/> <xs:attribute name="requiredExtensions" type="ttd:requirement"/> <xs:attribute name="requiredFeatures" type="ttd:requirement"/> <xs:attribute name="showBackground" type="ttd:requirement"/> <xs:attribute name="smpteMode" type="ttd:requirement"/> <xs:attribute name="structure" type="ttd:requirement"/> <xs:attribute name="styling" type="ttd:requirement"/> <xs:attribute name="styling-chained" type="ttd:requirement"/> <xs:attribute name="styling-inheritance-content" type="ttd:requirement"/> <xs:attribute name="styling-inheritance-region" type="ttd:requirement"/> <xs:attribute name="styling-inline" type="ttd:requirement"/> <xs:attribute name="styling-referential" type="ttd:requirement"/> <xs:attribute name="subFrameRate" type="ttd:requirement"/> <xs:attribute name="textAlign" type="ttd:requirement"/> <xs:attribute name="textAlign-absolute" type="ttd:requirement"/> <xs:attribute name="textAlign-relative" type="ttd:requirement"/> <xs:attribute name="textDecoration" type="ttd:requirement"/> <xs:attribute name="textDecoration-over" type="ttd:requirement"/> <xs:attribute name="textDecoration-through" type="ttd:requirement"/> <xs:attribute name="textDecoration-under" type="ttd:requirement"/> <xs:attribute name="textOutline" type="ttd:requirement"/> <xs:attribute name="textOutline-blur" type="ttd:requirement"/> <xs:attribute name="tickRate" type="ttd:requirement"/> <xs:attribute name="timeBase-clock" type="ttd:requirement"/> <xs:attribute name="timeBase-media" type="ttd:requirement"/> <xs:attribute name="timeBase-smpte" type="ttd:requirement"/> <xs:attribute name="timeContainer" type="ttd:requirement"/> <xs:attribute name="time-clock" type="ttd:requirement"/> <xs:attribute name="time-clock-with-frames" type="ttd:requirement"/> <xs:attribute name="time-offset" type="ttd:requirement"/> <xs:attribute name="time-offset-with-frames" type="ttd:requirement"/> <xs:attribute name="time-offset-with-ticks" type="ttd:requirement"/> <xs:attribute name="timing" type="ttd:requirement"/> <xs:attribute name="transformation" type="ttd:requirement"/> <xs:attribute name="unicodeBidi" type="ttd:requirement"/> <xs:attribute name="visibility" type="ttd:requirement"/> <xs:attribute name="visibility-block" type="ttd:requirement"/> <xs:attribute name="visibility-inline" type="ttd:requirement"/> <xs:attribute name="visibility-region" type="ttd:requirement"/> <xs:attribute name="wrapOption" type="ttd:requirement"/> <xs:attribute name="writingMode" type="ttd:requirement"/> <xs:attribute name="writingMode-vertical" type="ttd:requirement"/> <xs:attribute name="writingMode-horizontal" type="ttd:requirement"/> <xs:attribute name="writingMode-horizontal-lr" type="ttd:requirement"/> <xs:attribute name="writingMode-horizontal-rl" type="ttd:requirement"/> <xs:attribute name="zIndex" type="ttd:requirement"/> <xs:attributeGroup name="Styling.attrib.class"> <xs:attribute ref="animation"/> <xs:attribute ref="backgroundColor"/> <xs:attribute ref="backgroundColor-block"/> <xs:attribute ref="backgroundColor-inline"/> <xs:attribute ref="backgroundColor-region"/> <xs:attribute ref="bidi"/> <xs:attribute ref="cellResolution"/> <xs:attribute ref="clockMode"/> <xs:attribute ref="color"/> <xs:attribute ref="content"/> <xs:attribute ref="core"/> <xs:attribute ref="direction"/> <xs:attribute ref="display"/> <xs:attribute ref="display-block"/> <xs:attribute ref="display-inline"/> <xs:attribute ref="display-region"/> <xs:attribute ref="displayAlign"/> <xs:attribute ref="dynamicFlow"/> <xs:attribute ref="dynamicFlow-barWipe"/> <xs:attribute ref="dynamicFlow-block"/> <xs:attribute ref="dynamicFlow-character"/> <xs:attribute ref="dynamicFlow-fade"/> <xs:attribute ref="dynamicFlow-glyph"/> <xs:attribute ref="dynamicFlow-in"/> <xs:attribute ref="dynamicFlow-inline"/> <xs:attribute ref="dynamicFlow-inter"/> <xs:attribute ref="dynamicFlow-intra"/> <xs:attribute ref="dynamicFlow-jump"/> <xs:attribute ref="dynamicFlow-leftToRight"/> <xs:attribute ref="dynamicFlow-line"/> <xs:attribute ref="dynamicFlow-out"/> <xs:attribute ref="dynamicFlow-pixel"/> <xs:attribute ref="dynamicFlow-smooth"/> <xs:attribute ref="dynamicFlow-teletext"/> <xs:attribute ref="dynamicFlow-topToBottom"/> <xs:attribute ref="dynamicFlow-within"/> <xs:attribute ref="dynamicFlow-word"/> <xs:attribute ref="extent"/> <xs:attribute ref="fontFamily"/> <xs:attribute ref="fontFamily-generic"/> <xs:attribute ref="fontFamily-non-generic"/> <xs:attribute ref="fontSize"/> <xs:attribute ref="fontSize-anisomorphic"/> <xs:attribute ref="fontSize-isomorphic"/> <xs:attribute ref="fontStyle"/> <xs:attribute ref="fontStyle-italic"/> <xs:attribute ref="fontWeight"/> <xs:attribute ref="fontWeight-bold"/> <xs:attribute ref="frameRate"/> <xs:attribute ref="frameRateMultiplier"/> <xs:attribute ref="layout"/> <xs:attribute ref="length"/> <xs:attribute ref="length-cell"/> <xs:attribute ref="length-em"/> <xs:attribute ref="length-integer"/> <xs:attribute ref="length-negative"/> <xs:attribute ref="length-percentage"/> <xs:attribute ref="length-pixel"/> <xs:attribute ref="length-positive"/> <xs:attribute ref="length-real"/> <xs:attribute ref="lineHeight"/> <xs:attribute ref="markerMode"/> <xs:attribute ref="metadata"/> <xs:attribute ref="nested-div"/> <xs:attribute ref="nested-span"/> <xs:attribute ref="opacity"/> <xs:attribute ref="origin"/> <xs:attribute ref="overflow"/> <xs:attribute ref="overflow-scroll"/> <xs:attribute ref="padding"/> <xs:attribute ref="padding-1"/> <xs:attribute ref="padding-2"/> <xs:attribute ref="padding-3"/> <xs:attribute ref="padding-4"/> <xs:attribute ref="pixelAspectRatio"/> <xs:attribute ref="presentation"/> <xs:attribute ref="profile"/> <xs:attribute ref="requiredExtensions"/> <xs:attribute ref="requiredFeatures"/> <xs:attribute ref="showBackground"/> <xs:attribute ref="smpteMode"/> <xs:attribute ref="structure"/> <xs:attribute ref="styling"/> <xs:attribute ref="styling-chained"/> <xs:attribute ref="styling-inheritance-content"/> <xs:attribute ref="styling-inheritance-region"/> <xs:attribute ref="styling-inline"/> <xs:attribute ref="styling-referential"/> <xs:attribute ref="subFrameRate"/> <xs:attribute ref="textAlign"/> <xs:attribute ref="textAlign-absolute"/> <xs:attribute ref="textAlign-relative"/> <xs:attribute ref="textDecoration"/> <xs:attribute ref="textDecoration-over"/> <xs:attribute ref="textDecoration-through"/> <xs:attribute ref="textDecoration-under"/> <xs:attribute ref="textOutline"/> <xs:attribute ref="textOutline-blur"/> <xs:attribute ref="tickRate"/> <xs:attribute ref="timeBase-clock"/> <xs:attribute ref="timeBase-media"/> <xs:attribute ref="timeBase-smpte"/> <xs:attribute ref="timeContainer"/> <xs:attribute ref="time-clock"/> <xs:attribute ref="time-clock-with-frames"/> <xs:attribute ref="time-offset"/> <xs:attribute ref="time-offset-with-frames"/> <xs:attribute ref="time-offset-with-ticks"/> <xs:attribute ref="timing"/> <xs:attribute ref="transformation"/> <xs:attribute ref="unicodeBidi"/> <xs:attribute ref="visibility"/> <xs:attribute ref="visibility-block"/> <xs:attribute ref="visibility-inline"/> <xs:attribute ref="visibility-region"/> <xs:attribute ref="wrapOption"/> <xs:attribute ref="writingMode"/> <xs:attribute ref="writingMode-vertical"/> <xs:attribute ref="writingMode-horizontal"/> <xs:attribute ref="writingMode-horizontal-lr"/> <xs:attribute ref="writingMode-horizontal-rl"/> <xs:attribute ref="zIndex</xs:attributeGroup>"/> </xs:schema> With the additional datatype: <xs:simpleType name="requirement"> <xs:restriction base="xs:token"> <xs:enumeration value="required"/> <xs:enumeration value="optional"/> </xs:restriction> </xs:simpleType>
Received on Thursday, 16 April 2009 11:35:37 UTC