% $Id: XMLSchemaAttrs.lsl,v 1.3 2000/01/17 21:33:41 connolly Exp $
%
References
- XML Schema Part 1: Structures
internal draft: Id: structures.xml,v 1.13.1.15 1999/10/26 16:23:30 ht Exp
% should use FiniteMap/PointwiseImage, c.f. XMLNames
XMLSchemaAttrs: trait
includes
XMLInfoSet,
XMLSchemaBasics,
Set(Component, FiniteSet[AttrDecl] for Set[E])
AttrDecl tuple of
name: Name,
type: SimpleTypeDefinition,
min: ZeroOrOne,
max: ZeroOrOne,
vc: ValueConstraint
ZeroOrOne enumeration of 0, 1
ValueConstraint union of
null: Null,
default: List[Char],
fixed: List[Char]
AttributeItemOrNull union of
null: Null,
value: AttributeItem
introduces
schema_valid_attrs: FiniteSet[AttributeItem], FiniteSet[AttrDecl], FiniteSet[Component] ® Bool
lookup_attr: List[Char], TargetNS, FiniteSet[AttributeItem] ® AttributeItemOrNull
asserts
"
ads: FiniteSet[AttrDecl],
comp: Component
(comp Î ads) Þ (tag(comp.dex) = attrDecl)
"
ad: AttrDecl
ad.min=1 Þ ad.max=1;
ad.max=0 Þ ad.min=0
"
name: List[Char],
ais: FiniteSet[AttributeItem],
aion: AttributeItemOrNull,
tns: TargetNS,
ai: AttributeItem,
uris: FiniteSet[URIwf],
uri: URIwf
%@@ HELP DAN -- the lookup here is hopelessly bogus -- how
% do I get to the AttributeItem's actual namespace, if any?
(lookup_attr(name,tns,ais) = aion) =
($ ai (tag(aion)=value Ù aion.value=ai Ù (ai Î ais)
Ù (asString(localPart(name(ai)))=name)
Ù ((prefix(name(ai))=empty Ù tag(tns)=null)
Ú ((URI(ai)=uris) Ù (size(uris)=1)
Ù (uri Î uris))))
Ú (tag(aion)=null))
"
attrs: FiniteSet[AttributeItem],
ads: FiniteSet[AttrDecl],
ccs: FiniteSet[Component],
req: FiniteSet[AttrDecl],
opt: FiniteSet[AttrDecl],
absent: FiniteSet[AttrDecl],
ad: Component
schema_valid_attrs(attrs,ads,ccs) =
% required, optional and absent partition the declarations
((req \subset ads) Ù
(opt \subset ads) Ù
(absent \subset ads) Ù
(((req \U opt) \U absent) = ads) Ù
((ad Î absent) Û (tag(ad.dex)=attrDecl Ù
ad.dex.attrDecl.max = 0)) Ù
((ad Î req) Û (tag(ad.dex)=attrDecl Ù
ad.dex.attrDecl.min = 1)))
[Index]
[source]
HTML generated using lsl2html.