@@ -334,109 +334,127 @@ public void startElement()
334
334
processSectioning ();
335
335
336
336
String name = e .getName ();
337
- if (name .equals ("html" ))
338
- {
339
- vocabs = VocabUtil .parsePrefixDeclaration (
340
- e .getAttributeNS (EpubConstants .EpubTypeNamespaceUri , "prefix" ), RESERVED_VOCABS ,
341
- KNOWN_VOCAB_URIS , DEFAULT_VOCAB_URIS , report , location ());
342
- }
343
- else if (EpubConstants .HtmlNamespaceUri .equals (e .getNamespace ()) && name .equals ("meta" ))
344
- {
345
- processMeta ();
346
- }
347
- else if (name .equals ("form" ))
348
- {
349
- requiredProperties .add (ITEM_PROPERTIES .SCRIPTED );
350
- }
351
- else if (name .equals ("link" ))
352
- {
353
- processLink ();
354
- }
355
- else if (name .equals ("math" ))
337
+ if (EpubConstants .HtmlNamespaceUri .equals (e .getNamespace ()))
356
338
{
357
- requiredProperties .add (ITEM_PROPERTIES .MATHML );
358
- inMathML = true ;
359
- hasAltorAnnotation = (null != e .getAttribute ("alttext" ));
360
- String altimg = e .getAttribute ("altimg" );
361
- if (altimg != null )
339
+ if (name .equals ("html" ))
340
+ {
341
+ vocabs = VocabUtil .parsePrefixDeclaration (
342
+ e .getAttributeNS (EpubConstants .EpubTypeNamespaceUri , "prefix" ), RESERVED_VOCABS ,
343
+ KNOWN_VOCAB_URIS , DEFAULT_VOCAB_URIS , report , location ());
344
+ }
345
+ else if (name .equals ("meta" ))
346
+ {
347
+ processMeta ();
348
+ }
349
+ else if (name .equals ("form" ))
362
350
{
363
- super .checkImage (null , "altimg" );
351
+ requiredProperties .add (ITEM_PROPERTIES .SCRIPTED );
352
+ }
353
+ else if (name .equals ("link" ))
354
+ {
355
+ processLink ();
364
356
}
365
357
366
- }
367
- else if (name .equals ("svg" ))
368
- {
369
- processSVG ();
370
- }
371
- else if (EpubConstants .EpubTypeNamespaceUri .equals (e .getNamespace ()) && name .equals ("switch" ))
372
- {
373
- requiredProperties .add (ITEM_PROPERTIES .SWITCH );
374
- }
375
- else if (name .equals ("audio" ))
376
- {
377
- startMediaElement ();
378
- }
379
- else if (name .equals ("video" ))
380
- {
381
- processVideo ();
382
- startMediaElement ();
383
- }
384
- else if (name .equals ("figure" ))
385
- {
386
- processFigure ();
387
- }
388
- else if (name .equals ("table" ))
389
- {
390
- processTable ();
391
- }
392
- else if (name .equals ("track" ))
393
- {
394
- startTrack ();
395
- }
396
- else if (name .equals ("a" ))
397
- {
398
- anchorNeedsText = true ;
399
- processAnchor (e );
400
- }
401
- else if (name .equals ("annotation-xml" ))
402
- {
403
- hasAltorAnnotation = true ;
404
- }
405
- else if (name .equals ("input" ))
406
- {
407
- startInput ();
408
- }
409
- else if (name .equals ("picture" ))
410
- {
411
- inPicture = true ;
412
- }
413
- else if (name .equals ("source" ))
414
- {
415
- if ("picture" .equals (e .getParent ().getName ()))
358
+ else if (name .equals ("audio" ))
416
359
{
417
- checkImage ( null , null );
360
+ startMediaElement ( );
418
361
}
419
- else // audio or video source
362
+ else if ( name . equals ( " video" ))
420
363
{
421
- startMediaSource ();
364
+ processVideo ();
365
+ startMediaElement ();
366
+ }
367
+ else if (name .equals ("figure" ))
368
+ {
369
+ processFigure ();
370
+ }
371
+ else if (name .equals ("table" ))
372
+ {
373
+ processTable ();
374
+ }
375
+ else if (name .equals ("track" ))
376
+ {
377
+ startTrack ();
378
+ }
379
+ else if (name .equals ("a" ))
380
+ {
381
+ anchorNeedsText = true ;
382
+ processAnchor (e );
383
+ }
384
+ else if (name .equals ("input" ))
385
+ {
386
+ startInput ();
387
+ }
388
+ else if (name .equals ("picture" ))
389
+ {
390
+ inPicture = true ;
391
+ }
392
+ else if (name .equals ("source" ))
393
+ {
394
+ if ("picture" .equals (e .getParent ().getName ()))
395
+ {
396
+ checkImage (null , null );
397
+ }
398
+ else // audio or video source
399
+ {
400
+ startMediaSource ();
401
+ }
402
+ }
403
+ else if (name .equals ("embed" ))
404
+ {
405
+ startEmbed ();
406
+ }
407
+ else if (name .equals ("blockquote" ) || name .equals ("q" ) || name .equals ("ins" )
408
+ || name .equals ("del" ))
409
+ {
410
+ checkCiteAttribute ();
422
411
}
423
412
}
424
- else if ("http://www.w3.org/2000/svg" .equals (e .getNamespace ()) && name .equals ("title" ))
425
- {
426
- hasLabel = true ;
427
- }
428
- else if ("http://www.w3.org/2000/svg" .equals (e .getNamespace ()) && name .equals ("text" ))
413
+ else if ("http://www.w3.org/1998/Math/MathML" .equals (e .getNamespace ()))
429
414
{
430
- hasLabel = true ;
415
+ if (name .equals ("math" ))
416
+ {
417
+ requiredProperties .add (ITEM_PROPERTIES .MATHML );
418
+ inMathML = true ;
419
+ hasAltorAnnotation = (null != e .getAttribute ("alttext" ));
420
+ String altimg = e .getAttribute ("altimg" );
421
+ if (altimg != null )
422
+ {
423
+ super .checkImage (null , "altimg" );
424
+ }
425
+
426
+ }
427
+ else if (name .equals ("annotation-xml" ))
428
+ {
429
+ hasAltorAnnotation = true ;
430
+ }
431
431
}
432
- else if (name . equals ("embed" ))
432
+ else if ("http://www.w3.org/2000/svg" . equals (e . getNamespace () ))
433
433
{
434
- startEmbed ();
434
+ if (name .equals ("svg" ))
435
+ {
436
+ processSVG ();
437
+ }
438
+ else if (name .equals ("a" ))
439
+ {
440
+ anchorNeedsText = true ;
441
+ processAnchor (e );
442
+ }
443
+ else if (name .equals ("title" ))
444
+ {
445
+ hasLabel = true ;
446
+ }
447
+ else if (name .equals ("text" ))
448
+ {
449
+ hasLabel = true ;
450
+ }
435
451
}
436
- else if (name .equals ("blockquote" ) || name .equals ("q" ) || name .equals ("ins" )
437
- || name .equals ("del" ))
452
+ else if (EpubConstants .EpubTypeNamespaceUri .equals (e .getNamespace ()))
438
453
{
439
- checkCiteAttribute ();
454
+ if (name .equals ("switch" ))
455
+ {
456
+ requiredProperties .add (ITEM_PROPERTIES .SWITCH );
457
+ }
440
458
}
441
459
442
460
processInlineScripts ();
@@ -595,10 +613,12 @@ protected void endMediaElement()
595
613
protected void startMediaSource ()
596
614
{
597
615
XMLElement elem = currentElement ();
598
- assert "source" .equals (elem .getName ())
599
- && ("audio" .equals (elem .getParent ().getName ())
600
- || "video" .equals (elem .getParent ().getName ()))
601
- && elem .getParent ().getAttribute ("src" ) == null ;
616
+ assert "source" .equals (elem .getName ());
617
+ if (!("audio" .equals (elem .getParent ().getName ())
618
+ || "video" .equals (elem .getParent ().getName ())))
619
+ {
620
+ return ; // schema error was reported
621
+ }
602
622
603
623
// check the `src` attribute
604
624
URL url = checkResourceURL (elem .getAttribute ("src" ));
0 commit comments