diff options
author | buraq <buraq@epfl.ch> | 2005-05-19 16:44:30 +0000 |
---|---|---|
committer | buraq <buraq@epfl.ch> | 2005-05-19 16:44:30 +0000 |
commit | 329705355e946923a94296352845a50d2680a9e5 (patch) | |
tree | fdd5c410ff7e9e922c286b2a51948783fecd9668 | |
parent | 2c5078a2ee7ac2c95b54f1c7442d7d1324cbafb8 (diff) | |
download | scala-329705355e946923a94296352845a50d2680a9e5.tar.gz scala-329705355e946923a94296352845a50d2680a9e5.tar.bz2 scala-329705355e946923a94296352845a50d2680a9e5.zip |
removed
-rw-r--r-- | sources/scala/xml/dtd/Validation.scala | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/sources/scala/xml/dtd/Validation.scala b/sources/scala/xml/dtd/Validation.scala deleted file mode 100644 index 8d4f41dbcc..0000000000 --- a/sources/scala/xml/dtd/Validation.scala +++ /dev/null @@ -1,139 +0,0 @@ -package scala.xml.dtd ; - -import scala.collection.mutable; -import scala.collection.Set; -import scala.collection.Map; -import ContentModel._ ; - -class ElementValidator(namespace$$: String, elemSpec: RegExp) { - final val namespace = namespace$$.intern(); - - var autom:Autom = _; - - trait Autom { - def run(s:Seq[Node]):Unit; - } - - object TrivialAutom extends Autom { - def run(s:Seq[Node]):Unit = {}; - } - - object EmptyAutom extends Autom { - /** "not even entity references, PIs, etc" */ - def run(s:Seq[Node]):Unit = - if( s.length != 0 ) - throw MakeValidationException.fromNonEmptyElement(); - - } - - object TextAutom extends Autom { - /** only text nodes, entity references, PIs, comments, etc" */ - def run(s:Seq[Node]):Unit = { - val it = s.elements; - while( it.hasNext ) { - val n = it.next; - if( n.typeTag$ >= 0 ) - throw MakeValidationException.fromUndefinedElement( n.label ); - } - } - } - - class MixedModeAutom(set:scala.collection.Set[String]) extends Autom { - def run(s:Seq[Node]):Unit = { - val it = s.elements; - while( it.hasNext ) { - val n = it.next; - //if(( n.namespace == namespace )&& !set.contains( n.label )) // todo - throw MakeValidationException.fromUndefinedElement( n.label ); - } - } - } - - autom = elemSpec match { - case ANY_ => TrivialAutom; - case Eps => EmptyAutom; - case PCDATA_ | Sequ( PCDATA_ ) => TextAutom - case Star(z:Alt) if(( z.rs.length == 1 )&& (z.rs(0) match { - case PCDATA_ => true - case _ => false - })) => new MixedModeAutom(getLabels( elemSpec )); - case _ => TrivialAutom; - } - def validate( nodes:Seq[Node] ):Unit = autom.run( nodes ); -} - -/** only CDATA attributes, ignores attributes that have different namespace -* @param: attrSpec -*/ -class AttributeValidator( namespace$$:String, attrSpec1: Seq[dtd.AttrDecl]) { - final val namespace = namespace$$.intern(); - final val attrSpec = new mutable.HashMap[String,AttrDecl](); - //var attribsTemplate:MetaData = Null; - - for( val adecl <- attrSpec1 ) { - attrSpec.update( adecl.name, adecl ) - } - - var req = 0; - val map = new mutable.HashMap[String,String](); - - // populate with special "<R" and default - for( val key <- attrSpec.keys ) { - attrSpec( key ).default match { - case dtd.REQUIRED => - map.update( key, "<R" ); - req = req + 1; - case dtd.DEFAULT( _, attValue ) => - map.update( key, attValue ); - //attribsTemplate = - //new UnprefixedAttribute(key, attValue, attribsTemplate); - //add( attribsTemplate, Attribute(namespace, key, attValue)); - case dtd.IMPLIED => - } - } - - /* - def add(as:List[Attribute], x:Attribute):List[Attribute] = { - if( x.namespace.length() == 0 ) - scala.xml.Attribute( namespace, x.key, x.value )::as; - else - x::as; - }; - */ - - def validate( attributes:MetaData ): MetaData = { - var actualReq = 0; - var nattribs: MetaData = Null; - for( val b <- attributes ) { - if( b.key == "xmlns" ) - {} // this should not get even here - else /*if( b.namespace != namespace ) // this was to allow foreigns once - nattribs = b.copy(nattribs); - else */ attrSpec.get( b.key ) match { - case Some( AttrDecl( key, tpe, df )) => df match { - case DEFAULT( true, attValue ) => - if( b.value != attValue ) - MakeValidationException.fromFixedAttribute( key, attValue, b.value ); - else - nattribs = b.copy(nattribs); - case REQUIRED => - actualReq = actualReq + 1; - nattribs = b.copy(nattribs); - case _ => - nattribs = b.copy(nattribs); - } - case _ => - MakeValidationException.fromUndefinedAttribute( b.key ) - } - } - if( req - actualReq > 0 ) { - var allKeys = new mutable.HashSet[String](); - for( val AttrDecl( key, _, REQUIRED ) <- attrSpec.values ) - allKeys += key; - for( val a <- nattribs ) - allKeys -= a.key; - MakeValidationException.fromMissingAttribute( allKeys ) - } - nattribs - } -} |