m Jc@sydZdZdZdZdklZdklZdkl Z l Z dk Z hdd <d d <d d <dd<dd<dd<dd<dd<dd<dd<dd<dd<d d!<d"d#<d$d%<d&d'<d(d)<d*d+<d,d-<d.d/<d0d1<d2d3<d4d5<d6d7<d8d9<d:d;<d<d=<d>d?<d@dA<dBdC<dDdE<dFdG<dHdI<dJdK<dLdM<dNdO<dPdQ<dRdS<dTdU<dVdW<dXdY<dZd[<d\d]<d^d_<d`da<dbdc<ddde<dfdg<dhdi<djdk<dldk<dmdn<dodp<dqdr<dsdr<dtdu<dvdw<dxdy<dzd{<d|d}<d~d<dd<dd<dd<dd<dd<dd<dd<dd<dd and Mark Pilgrim s$Revision: 1049 $s,Copyright (c) 2002 Sam Ruby and Mark Pilgrim(sContentHandler(sLocator(sNonCanonicalURIsNotUTF8Ns,http://www.bloglines.com/about/specs/fac-1.0taccessshttp://webns.net/mvcb/tadmins,http://purl.org/rss/1.0/modules/aggregation/tags)http://purl.org/rss/1.0/modules/annotate/tannotateshttp://www.w3.org/2007/apptapps!http://media.tangent.org/rss/1.0/taudios-http://backend.userland.com/blogChannelModulet blogChannelshttp://web.resource.org/cc/tccs.http://www.microsoft.com/schemas/rss/core/2005tcfs4http://backend.userland.com/creativeCommonsRssModuletcreativeCommonss'http://purl.org/rss/1.0/modules/companytcompanys(http://purl.org/rss/1.0/modules/content/tcontents1http://conversationsnetwork.org/rssNamespace-1.0/tconversationsNetworks&http://my.theinfo.org/changed/1.0/rss/tcps http://purl.org/dc/elements/1.1/tdcshttp://purl.org/dc/terms/tdctermss&http://purl.org/rss/1.0/modules/email/temails&http://purl.org/rss/1.0/modules/event/tevs'http://purl.org/syndication/history/1.0tfhs(http://www.w3.org/2003/01/geo/wgs84_pos#tgeoshttp://geourl.org/rss/module/tgeourlshttp://www.georss.org/georsstgeorssshttp://www.opengis.net/gmltgmlshttp://postneo.com/icbmticbms&http://purl.org/rss/1.0/modules/image/timagesurn:atom-extension:indexingtindexings*http://www.itunes.com/dtds/podcast-1.0.dtdtituness*http://rssnamespace.org/feedburner/ext/1.0t feedburnershttp://xmlns.com/foaf/0.1/tfoafs%http://purl.org/rss/1.0/modules/link/tlshttp://search.yahoo.com/mrss/tmedias"http://www.w3.org/1998/Math/MathMLtmathmls'http://a9.com/-/spec/opensearchrss/1.0/t opensearch10s$http://a9.com/-/spec/opensearch/1.1/t opensearchshttp://www.opml.org/spec2topmls+http://www.w3.org/1999/02/22-rdf-syntax-ns#trdfs%http://www.w3.org/2000/01/rdf-schema#trdfss*http://purl.org/rss/1.0/modules/reference/trefs*http://purl.org/rss/1.0/modules/richequiv/treqvs'http://purl.org/rss/1.0/modules/rss091#trss091s'http://purl.org/rss/1.0/modules/search/tsearchs&http://purl.org/rss/1.0/modules/slash/tslashs.http://purl.org/rss/1.0/modules/servicestatus/tsss-http://hacks.benhammersley.com/rss/streaming/tstrs-http://purl.org/rss/1.0/modules/subscription/tsubs!http://feedsync.org/2007/feedsynctsxshttp://www.w3.org/2000/svgtsvgs,http://purl.org/rss/1.0/modules/syndication/tsys)http://purl.org/rss/1.0/modules/taxonomy/ttaxos*http://purl.org/rss/1.0/modules/threading/tthrs&http://purl.org/syndication/thread/1.0s5http://madskills.com/public/xml/rss/module/trackback/t trackbacks$http://wellformedweb.org/CommentAPI/twfws%http://purl.org/rss/1.0/modules/wiki/twikis+http://www.usemod.com/cgi-bin/mb.pl?ModWikis)http://schemas.xmlsoap.org/soap/envelope/tsoapshttp://www.w3.org/2005/Atomtatomshttp://www.w3.org/1999/xhtmltxhtmls&http://my.netscape.com/rdf/simple/0.9/trss090shttp://purl.org/rss/1.0/trss1shttp://purl.org/net/rss1.1#trss11shttp://base.google.com/ns/1.0tgs$http://www.w3.org/XML/1998/namespacetxmlshttp://openid.net/xmlns/1.0topenidshttp://earth.google.com/kml/2.0tkml20shttp://earth.google.com/kml/2.1tkml21shttp://www.opengis.net/kml/2.2tkml22shttp://www.w3.org/1999/xlinktxlinksxri://$xrd*($v*2.0)txrds xri://$xrdstxrdscCs2y tid|iiSWn |SnXdS(Ns.*\w(tretmatchtnstgrouptlower(RF((t=/web/script/rubys/feedvalidator.org/src/feedvalidator/base.pyt near_missYs u$http://www.w3.org/XML/1998/namespaceubaseuidulanguspacet SAXDispatchercBstZdZdZdZddZdZdZdZd Z d Z d Z d Z d Z ddZdZeZeZdZdZRS(NicCsdkl}ti|d|_d|_g|_d|_y|i d|_ Wn||_ nX||_ ||_ |||gg|_ g|_g|_dS(N(srootiitidna(troottContentHandlert__init__tselft lastKnownLinetlastKnownColumnt loggedEventstfeedTypetbasetencodetxmlBasetselfURIstencodingt handler_stacktdefaultNamespacest rssCharData(RPRURXRYRM((RIROps          cCs ||_ti||idS(N(tlocatorRPRNtsetDocumentLocator(RPR]((RIR^s icCs ||_dS(N(tfirstOccurrenceOnlyRP(RPR_((RItsetFirstOccurrenceOnlyscCsx(t|idD]} || i|scs |jS(N(Rtean(R(R(RIRsi(sUseOfExtensionAttrt attributetelement(sUnexpectedAttributeitparent(RPR]t getLineNumberRQtgetColumnNumberRRtnametqnameRfRZRgtstartElementNStattrsRitgetNamestpresenttfiltert unexpectedtgetExpectedAttrNamesRtuRJtnearly_namespacesR~tfeedtypet TYPE_RSS2RqtUseOfExtensionAttrRytUnexpectedAttribute( RPRRRRRRRRgRRR((RRIRs4    "  )  c sR| o| odk}|iSny4d}ioi|nd_WnnX|djoJ|djo=dkl}l }i|hi|hn|djo1|djo$dkl}i|hnEdkl }i i _ i i_i|hd kl}|S( Ncs3dkl}i|hdt|<dS(N(sSAXErrort exception(RqtSAXErrorRPRyR+R(RR(RP(RIRys is,-//Netscape Communications//DTD RSS 0.91//ENs3http://my.netscape.com/publish/formats/rss-0.91.dtd(s ValidDoctypes DeprecatedDTDs$http://www.rssboard.org/rss-0.91.dtd(s ValidDoctype(sContainsSystemEntity(sStringIO(tpublicIdtsystemIdt cStringIOtStringIORyRPt xmlvalidatorRqt ValidDoctypet DeprecatedDTDtContainsSystemEntityR]RRQRRR( RPRRRRyRRRR((RPRIt resolveEntitys.       cCsdkl}g}|iD]!}|i|jo ||qq~o&dkl}||jodSqlndkl }|i |hd|<dS(N(s ValidDoctype(sname2codepoint(sUndefinedNamedEntityRw( RqRRtRPRStet __class__thtmlentitydefstname2codepointRtUndefinedNamedEntityRy(RPRRtRRRR((RIt skippedEntitys 9   cCsS|ii|_|ii|_x(t|idD]}|i |q8WdS(Ni( RPR]RRQRRRRfRZRgt characterststring(RPRRg((RIRs cCsl|ii|_|ii|_|\}}x+t|i dD]}|i ||qDW|i d=dS(Ni( RPR]RRQRRRRRRfRZRgt endElementNS(RPRRRg((RIRs cCst|doAxmt|D],}|i|||d|_|i qWn0|i|||d|_|i |g}|i i |dS(Nt__iter__Ra( thasattrthandlersRfRgRRRRRwt prevalidateRPRZtappend(RPRRRRRg((RItpushs     c Csd}|iido|idot|idtp-di|ididd|idscCs ||_dS(N(RTRP(RPRT((RIt setFeedTypeAs(ii(t__name__t __module__R_ROR^R`RRRRRRRRRyRmt fatalErrortwarningR~R(((RIRKls$    *      %  (s TYPE_RSS2t validatorBasecBstZdZdZdZdZdZdZdZdZ d Z d Z d Z d Z d ZdZddZdZdZdZdZdZdZRS(NcCsPti|d|_d|_g|_d|_d|_t |_ h|_ dS(NRai( RNRORPRwRRtchildrentisValidRtFalseRRe(RP((RIROYs       cCs||_||_||_|i|_|iii|_|iii|_ |i |_ |oh|i doX|i d|_ dkl}|id|dkl}||i |i |_ n |i |_ |S(Nu$http://www.w3.org/XML/1998/namespaceubase(srfc3987(surljoin(u$http://www.w3.org/XML/1998/namespaceubase(u$http://www.w3.org/XML/1998/namespaceubase(u$http://www.w3.org/XML/1998/namespaceubase(RRPRRt dispatcherR]RRRtcoltxmlLangRtgetValueRWRRtvalidate_attributeturlparseturljoin(RPRRRRR((RIRcs          cCs;|dp |dSnti|d|dd|dS(NiiR(RRnRp(RPR((RIt simplenamexs cCsH|ii|o|i|Sn#|io|ii|SndSdS(N(RPReRRbRRR(RPRb((RIR|s  cCs|t|tp |}nt|tod|f}n|i|i|h||i i ||_ |i dS(N( RRRRR+RRRPRRRRwR(RPRR((RIRs cCsg|io'|ii|o|i||n3dkl}|i|hd|i |<dS(N(sMissingAttributetattr( RPRRRRRRqtMissingAttributeRyR(RPRRR((RItvalidate_required_attributes cCs5|io'|ii|o|i||ndS(N(RPRRRRR(RPRR((RItvalidate_optional_attributescCsddS(N(R(RP((RIRscCs dkl}|||||S(N(sany(RtanyRPRRR(RPRRRR((RItunknown_starttags c Cs|id*oJ|id+|_|io*dkl}||i|id|qZndkl }|i }| o\|oU|t joHdkl}|i|hd|i<d|<d d <d }n||iijo d}nt|}ti|ont|}d|d |}}|d jo>|i o3|ii o%t|do|itqzq~nxh|iD]Z\} }d|joA| o9dkl}|i|hd|i<d|<qqW|djo-dkl }|i|hdd<nx|i!D]\}} xy| D]q}dt%|jo djnp |djo:dkl&}|i|hd|<d|d<qCqCWq0W|o,|i'|||} d|}||_)nyr||_)|i*do3t+|d|i,dd i-dd} n#t+|d|i,dd } Wnct.j oW|i/ddjoBdkl}|i|hd|i<d|<|} q|i*doWd kl0}|i|hddi1|ii-d d!<d|<|} qy(d"k2l3}|}d#kl4} l5}|i | |gjo"|i*d$o|d%}qn|i/d djo>|ii/d djo%d&|iijod'|}qnt+|d|i,dd } d(kl6} |i| hddi1|ii-d d!<d|<Wqt.j oZd)kl7}|i|hddi1|ii-d d!<d|<|} qXnX|i8| |||i9i:|i)dS(,Nu$http://www.w3.org/XML/1998/namespaceulang(siso639_validatesxml:lang(seater(sUndeterminableVocabularyRRRes""tnullRRt setItunesR(sMissingNamespaceshttp://purl.org/atom/ns#(sObsoleteNamespacetfeediiu�(s BadCharactersitunknown_tdc_tdo_t-t.itxhtml_(sMisplacedXHTMLContenti(s Questionable(sTYPE_APP_CATEGORIESsTYPE_APP_SERVICEtapp_ishttp://www.w3.org/2005/Atomtatom_(sQuestionableUsage(sUndefinedElement(u$http://www.w3.org/XML/1998/namespaceulang(u$http://www.w3.org/XML/1998/namespaceulang(;RRRRPRRtiso639_validateRyRteaterR~RRRRqtUndeterminableVocabularyRR[RRJtnm_qnameRRbRRRRtTruetkeysReRtMissingNamespacetObsoleteNamespaceRuRvRtctordt BadCharactersRRgtchildt startswithtgetattrtreplaceRjRRztMisplacedXHTMLContentRt extensiont QuestionabletTYPE_APP_CATEGORIEStTYPE_APP_SERVICEtQuestionableUsagetUndefinedElementRRR(RPRRRRRbRRRReRgRRRRRRRvRRRRRRR((RIRs  !   1    &  0    1 5   3& (  =  /% A =cCs|ii|_dS(N(RPRwtstrip(RP((RItnormalizeWhitespacescCsh|i|i|ioF|io<dkl}|i|hd|ii<d|<ndS(N(s ValidElementRR( RPR RRRRt ValidElementRyR(RPRRR ((RIRs    cCs?dkl}|i|hd|i<d|ii<dS(N(sUnexpectedTextRR(RtUnexpectedTextRPRyRR(RPR ((RIttextOKs c Cs|io|ind}}d}x|D]}dt|jo djnodt|jo djno|yn|i di dd k l }|i |hd |ii<d |i<d |td |d fWqqXqn|}dt|jo djnp |djoKd k l }|i |hd |ii<d |i<d ||fn|d }t|djod}|d }q2q2W|i||_dS(Nit iiiis iso-8859-1sutf-8(s BadCharactersRRRiiu�i i (i i (RR RPR RRtpcRRRVtdecodeRRRyRRtmaxRw(RPRRRRRR((RIRs.  $$ K 1 > icCsG|iidp|i|id