git.iko.soy/typeable/pandoc
on master help sign in
Merge branch 'epubend' of https://github.com/mpickering/pandoc into mpickering-epubend

Conflicts: pandoc.cabal

commit4630cff2a6c116f1d474f459e6e759f5ce7f2003 authorJohn MacFarlane <jgm@berkeley.edu> dateMon 4 Aug 2014, 07:36 (12 years ago) parent81335dfcd9a5d9
13 files changed+1462−44
README+8−5 pandoc.cabal+7−5 pandoc.hs+1 src/Text/Pandoc.hs+3 src/Text/Pandoc/Compat/Except.hs+11−1 src/Text/Pandoc/Options.hs+1 src/Text/Pandoc/Readers/EPUB.hs+273 src/Text/Pandoc/Readers/HTML.hs+216−32 tests/Tests/Old.hs+6−1 tests/features.epub tests/features.native+482 tests/formatting.epub tests/formatting.native+454
README+8−5
@@ -14,7 +14,7 @@ Pandoc is a [Haskell] library for converting from one markup format to
1414another, and a command-line tool that uses this library. It can read
1515[markdown] and (subsets of) [Textile], [reStructuredText], [HTML],
1616[LaTeX], [MediaWiki markup], [Haddock markup], [OPML], [Emacs
17−Org-mode], [DocBook], [txt2tags] and [Word docx]; and it can write plain text,
17+Org-mode], [DocBook], [txt2tags], [EPUB] and [Word docx]; and it can write plain text,
1818[markdown], [reStructuredText], [XHTML], [HTML 5], [LaTeX] (including
1919[beamer] slide shows), [ConTeXt], [RTF], [OPML], [DocBook],
2020[OpenDocument], [ODT], [Word docx], [GNU Texinfo], [MediaWiki markup],
@@ -56,7 +56,8 @@ pandoc will fetch the content using HTTP:
5656 pandoc -f html -t markdown http://www.fsf.org
5757
5858If multiple input files are given, `pandoc` will concatenate them all (with
59−blank lines between them) before parsing.
59+blank lines between them) before parsing. This feature is disabled for
60+ binary input formats such as `EPUB` and `docx`.
6061
6162The format of the input and output can be specified explicitly using
6263command-line options. The input format can be specified using the
@@ -144,9 +145,10 @@ General options
144145 `markdown_phpextra` (PHP Markdown Extra extended markdown),
145146 `markdown_github` (github extended markdown),
146147 `textile` (Textile), `rst` (reStructuredText), `html` (HTML),
147− `docbook` (DocBook), `t2t` (txt2tags), `opml` (OPML), `org` (Emacs
148− Org-mode), `mediawiki` (MediaWiki markup), `haddock` (Haddock markup),
149− or `latex` (LaTeX). If `+lhs` is appended to `markdown`, `rst`,
148+ `docbook` (DocBook), `t2t` (txt2tags), `docx` (docx), `epub` (EPUB),
149+ `opml` (OPML), `org` (Emacs Org-mode), `mediawiki` (MediaWiki markup),
150+ `haddock` (Haddock markup), or `latex` (LaTeX). If `+lhs` is appended
151+ to `markdown`, `rst`,
150152 `latex`, or `html`, the input will be treated as literate Haskell
151153 source: see [Literate Haskell support](#literate-haskell-support),
152154 below. Markdown syntax extensions can be individually enabled or
@@ -3110,3 +3112,4 @@ Rosenthal.
31103112[RFC5646]: http://tools.ietf.org/html/rfc5646
31113113[InDesign ICML]: https://www.adobe.com/content/dam/Adobe/en/devnet/indesign/cs55-docs/IDML/idml-specification.pdf
31123114[txt2tags]: http://txt2tags.org/
3115+[EPUB]: http://idpf.org/epub
pandoc.cabal+7−5
@@ -227,11 +227,11 @@ Library
227227 old-locale >= 1 && < 1.1,
228228 time >= 1.2 && < 1.5,
229229 HTTP >= 4000.0.5 && < 4000.3,
230− texmath >= 0.6.6.3 && < 0.7,
230+ texmath >= 0.7 && < 0.8,
231231 xml >= 1.3.12 && < 1.4,
232232 random >= 1 && < 1.1,
233233 extensible-exceptions >= 0.1 && < 0.2,
234− pandoc-types >= 1.12.3.3 && < 1.13,
234+ pandoc-types >= 1.12.4 && < 1.13,
235235 aeson >= 0.7 && < 0.9,
236236 tagsoup >= 0.13.1 && < 0.14,
237237 base64-bytestring >= 0.1 && < 1.1,
@@ -248,7 +248,8 @@ Library
248248 binary >= 0.5 && < 0.8,
249249 SHA >= 1.6 && < 1.7,
250250 haddock-library >= 1.1 && < 1.2,
251− old-time
251+ old-time,
252+ deepseq-generics >= 0.1 && < 0.2
252253 if flag(https)
253254 Build-Depends: http-client >= 0.3.2 && < 0.4,
254255 http-client-tls >= 0.2 && < 0.3,
@@ -287,6 +288,7 @@ Library
287288 Text.Pandoc.Readers.Native,
288289 Text.Pandoc.Readers.Haddock,
289290 Text.Pandoc.Readers.Docx,
291+ Text.Pandoc.Readers.EPUB,
290292 Text.Pandoc.Writers.Native,
291293 Text.Pandoc.Writers.Docbook,
292294 Text.Pandoc.Writers.OPML,
@@ -340,7 +342,7 @@ Library
340342
341343Executable pandoc
342344 Build-Depends: pandoc,
343− pandoc-types >= 1.12.3.3 && < 1.13,
345+ pandoc-types >= 1.12.4 && < 1.13,
344346 base >= 4.2 && <5,
345347 directory >= 1 && < 1.3,
346348 filepath >= 1.1 && < 1.4,
@@ -385,7 +387,7 @@ Test-Suite test-pandoc
385387 Build-Depends: base >= 4.2 && < 5,
386388 syb >= 0.1 && < 0.5,
387389 pandoc,
388− pandoc-types >= 1.12.3.3 && < 1.13,
390+ pandoc-types >= 1.12.4 && < 1.13,
389391 bytestring >= 0.9 && < 0.11,
390392 text >= 0.11 && < 1.2,
391393 directory >= 1 && < 1.3,
pandoc.hs+1
@@ -896,6 +896,7 @@ defaultReaderName fallback (x:xs) =
896896 ".json" -> "json"
897897 ".docx" -> "docx"
898898 ".t2t" -> "t2t"
899+ ".epub" -> "epub"
899900 _ -> defaultReaderName fallback xs
900901
901902-- Returns True if extension of first source is .lhs
src/Text/Pandoc.hs+3
@@ -79,6 +79,7 @@ module Text.Pandoc
7979 , readJSON
8080 , readTxt2Tags
8181 , readTxt2TagsNoMacros
82+ , readEPUB
8283 -- * Writers: converting /from/ Pandoc format
8384 , Writer (..)
8485 , writeNative
@@ -134,6 +135,7 @@ import Text.Pandoc.Readers.Native
134135import Text.Pandoc.Readers.Haddock
135136import Text.Pandoc.Readers.Docx
136137import Text.Pandoc.Readers.Txt2Tags
138+import Text.Pandoc.Readers.EPUB
137139import Text.Pandoc.Writers.Native
138140import Text.Pandoc.Writers.Markdown
139141import Text.Pandoc.Writers.RST
@@ -233,6 +235,7 @@ readers = [ ("native" , StringReader $ \_ s -> return $ readNative s)
233235 ,("haddock" , mkStringReader readHaddock)
234236 ,("docx" , mkBSReader readDocx)
235237 ,("t2t" , mkStringReader readTxt2TagsNoMacros)
238+ ,("epub" , mkBSReader readEPUB)
236239 ]
237240
238241data Writer = PureStringWriter (WriterOptions -> Pandoc -> String)
src/Text/Pandoc/Compat/Except.hs+11−1
@@ -1,7 +1,10 @@
11{-# LANGUAGE CPP #-}
22module Text.Pandoc.Compat.Except ( ExceptT
3+ , Except
34 , Error(..)
45 , runExceptT
6+ , runExcept
7+ , MonadError
58 , throwError
69 , catchError )
710 where
@@ -18,10 +21,17 @@ class Error a where
1821
1922#else
2023import Control.Monad.Error
24+import Control.Monad.Identity (Identity, runIdentity)
25+
2126type ExceptT = ErrorT
2227
23−runExceptT :: ExceptT e m a -> m (Either e a)
28+type Except s a = ErrorT s Identity a
29+
30+runExceptT :: ExceptT e m a -> m (Either e a)
2431runExceptT = runErrorT
32+
33+runExcept :: ExceptT e Identity a -> Either e a
34+runExcept = runIdentity . runExceptT
2535#endif
2636
2737
src/Text/Pandoc/Options.hs+1
@@ -106,6 +106,7 @@ data Extension =
106106 | Ext_mmd_header_identifiers -- ^ Multimarkdown style header identifiers [myid]
107107 | Ext_implicit_header_references -- ^ Implicit reference links for headers
108108 | Ext_line_blocks -- ^ RST style line blocks
109+ | Ext_epub_html_exts -- ^ Recognise the EPUB extended version of HTML
109110 deriving (Show, Read, Enum, Eq, Ord, Bounded)
110111
111112pandocExtensions :: Set Extension
src/Text/Pandoc/Readers/EPUB.hsnew file+273
@@ -0,0 +1,273 @@
1+{-# LANGUAGE
2+ ViewPatterns
3+ , StandaloneDeriving
4+ , TupleSections
5+ , FlexibleContexts #-}
6+
7+module Text.Pandoc.Readers.EPUB
8+ (readEPUB)
9+ where
10+
11+import Text.XML.Light
12+import Text.Pandoc.Definition hiding (Attr)
13+import Text.Pandoc.Walk (walk, query)
14+import Text.Pandoc.Generic(bottomUp)
15+import Text.Pandoc.Readers.HTML (readHtml)
16+import Text.Pandoc.Options ( ReaderOptions(..), readerExtensions, Extension(..)
17+ , readerTrace)
18+import Text.Pandoc.Shared (escapeURI)
19+import Text.Pandoc.MediaBag (MediaBag, insertMedia)
20+import Text.Pandoc.Compat.Except (MonadError, throwError, runExcept, Except)
21+import qualified Text.Pandoc.Builder as B
22+import Codec.Archive.Zip ( Archive (..), toArchive, fromEntry
23+ , findEntryByPath, Entry)
24+import qualified Data.ByteString.Lazy as BL (ByteString)
25+import System.FilePath (takeFileName, (</>), dropFileName, normalise)
26+import qualified Text.Pandoc.UTF8 as UTF8 (toStringLazy)
27+import Control.Applicative ((<$>))
28+import Control.Monad (guard, liftM, when)
29+import Data.Monoid (mempty, (<>))
30+import Data.List (isPrefixOf, isInfixOf)
31+import Data.Maybe (mapMaybe, fromMaybe)
32+import qualified Data.Map as M (Map, lookup, fromList, elems)
33+import qualified Data.Set as S (insert)
34+import Control.DeepSeq.Generics (deepseq, NFData)
35+
36+import Debug.Trace (trace)
37+
38+type MIME = String
39+
40+type Items = M.Map String (FilePath, MIME)
41+
42+readEPUB :: ReaderOptions -> BL.ByteString -> (Pandoc, MediaBag)
43+readEPUB opts bytes = runEPUB (archiveToEPUB opts $ toArchive bytes)
44+
45+runEPUB :: Except String a -> a
46+runEPUB = either error id . runExcept
47+
48+-- Note that internal reference are aggresively normalised so that all ids
49+-- are of the form "filename#id"
50+--
51+-- For now all paths are stripped from images
52+archiveToEPUB :: (MonadError String m) => ReaderOptions -> Archive -> m (Pandoc, MediaBag)
53+archiveToEPUB os archive = do
54+ (root, content) <- getManifest archive
55+ meta <- parseMeta content
56+ (cover, items) <- parseManifest content
57+ let coverDoc = fromMaybe mempty (imageToPandoc . takeFileName <$> cover)
58+ spine <- parseSpine items content
59+ let escapedSpine = map (escapeURI . takeFileName . fst) spine
60+ Pandoc _ bs <-
61+ foldM' (\a b -> ((a <>) . bottomUp (prependHash escapedSpine))
62+ `liftM` parseSpineElem root b) mempty spine
63+ let ast = coverDoc <> (Pandoc meta bs)
64+ let mediaBag = fetchImages (M.elems items) root archive ast
65+ return $ (ast, mediaBag)
66+ where
67+ rs = readerExtensions os
68+ os' = os {readerExtensions = foldr S.insert rs [Ext_epub_html_exts, Ext_raw_html]}
69+ os'' = os' {readerParseRaw = True}
70+ parseSpineElem :: MonadError String m => FilePath -> (FilePath, MIME) -> m Pandoc
71+ parseSpineElem r (path, mime) = do
72+ when (readerTrace os) (traceM path)
73+ doc <- mimeToReader mime (normalise (r </> path))
74+ let docSpan = B.doc $ B.para $ B.spanWith (takeFileName path, [], []) mempty
75+ return $ docSpan <> fixInternalReferences (takeFileName path) doc
76+ mimeToReader :: MonadError String m => MIME -> FilePath -> m Pandoc
77+ mimeToReader "application/xhtml+xml" path = do
78+ fname <- findEntryByPathE path archive
79+ return $ readHtml os'' . UTF8.toStringLazy $ fromEntry fname
80+ mimeToReader s path
81+ | s `elem` imageMimes = return $ imageToPandoc path
82+ | otherwise = return $ mempty
83+
84+fetchImages :: [(FilePath, MIME)]
85+ -> FilePath
86+ -> Archive
87+ -> Pandoc
88+ -> MediaBag
89+fetchImages mimes root a (query iq -> links) =
90+ foldr (uncurry3 insertMedia) mempty
91+ (mapMaybe getEntry links)
92+ where
93+ getEntry l = let mediaPos = normalise (root </> l) in
94+ (l , lookup mediaPos mimes, ) . fromEntry
95+ <$> findEntryByPath mediaPos a
96+
97+iq :: Inline -> [FilePath]
98+iq (Image _ (url, _)) = [url]
99+iq _ = []
100+
101+
102+imageToPandoc :: FilePath -> Pandoc
103+imageToPandoc s = B.doc . B.para $ B.image s "" mempty
104+
105+imageMimes :: [String]
106+imageMimes = ["image/gif", "image/jpeg", "image/png"]
107+
108+type CoverImage = FilePath
109+
110+parseManifest :: (MonadError String m) => Element -> m (Maybe CoverImage, Items)
111+parseManifest content = do
112+ manifest <- findElementE (dfName "manifest") content
113+ let items = findChildren (dfName "item") manifest
114+ r <- mapM parseItem items
115+ let cover = findAttr (emptyName "href") =<< filterChild findCover manifest
116+ return (cover, (M.fromList r))
117+ where
118+ findCover e = maybe False (isInfixOf "cover-image")
119+ (findAttr (emptyName "properties") e)
120+ parseItem e = do
121+ uid <- findAttrE (emptyName "id") e
122+ href <- findAttrE (emptyName "href") e
123+ mime <- findAttrE (emptyName "media-type") e
124+ return (uid, (href, mime))
125+
126+parseSpine :: MonadError String m => Items -> Element -> m [(FilePath, MIME)]
127+parseSpine is e = do
128+ spine <- findElementE (dfName "spine") e
129+ let itemRefs = findChildren (dfName "itemref") spine
130+ mapM (mkE "parseSpine" . (flip M.lookup is)) $ mapMaybe parseItemRef itemRefs
131+ where
132+ parseItemRef ref = do
133+ let linear = maybe True (== "yes") (findAttr (emptyName "linear") ref)
134+ guard linear
135+ findAttr (emptyName "idref") ref
136+
137+parseMeta :: MonadError String m => Element -> m Meta
138+parseMeta content = do
139+ meta <- findElementE (dfName "metadata") content
140+ let dcspace (QName _ (Just "http://purl.org/dc/elements/1.1/") (Just "dc")) = True
141+ dcspace _ = False
142+ let dcs = filterChildrenName dcspace meta
143+ let r = foldr parseMetaItem nullMeta dcs
144+ return r
145+
146+-- http://www.idpf.org/epub/30/spec/epub30-publications.html#sec-metadata-elem
147+parseMetaItem :: Element -> Meta -> Meta
148+parseMetaItem e@(stripNamespace . elName -> field) meta =
149+ B.setMeta (renameMeta field) (B.str $ strContent e) meta
150+
151+renameMeta :: String -> String
152+renameMeta "creator" = "author"
153+renameMeta s = s
154+
155+getManifest :: MonadError String m => Archive -> m (String, Element)
156+getManifest archive = do
157+ metaEntry <- findEntryByPathE ("META-INF" </> "container.xml") archive
158+ docElem <- (parseXMLDocE . UTF8.toStringLazy . fromEntry) metaEntry
159+ let namespaces = mapMaybe attrToNSPair (elAttribs docElem)
160+ ns <- mkE "xmlns not in namespaces" (lookup "xmlns" namespaces)
161+ as <- liftM ((map attrToPair) . elAttribs)
162+ (findElementE (QName "rootfile" (Just ns) Nothing) docElem)
163+ root <- mkE "Root not found" (lookup "full-path" as)
164+ let rootdir = dropFileName root
165+ --mime <- lookup "media-type" as
166+ manifest <- findEntryByPathE root archive
167+ liftM ((,) rootdir) (parseXMLDocE . UTF8.toStringLazy . fromEntry $ manifest)
168+
169+-- Fixup
170+
171+fixInternalReferences :: String -> Pandoc -> Pandoc
172+fixInternalReferences s =
173+ (walk normalisePath) . (walk $ fixBlockIRs s') . (walk $ fixInlineIRs s')
174+ where
175+ s' = escapeURI s
176+
177+fixInlineIRs :: String -> Inline -> Inline
178+fixInlineIRs s (Span as v) =
179+ Span (fixAttrs s as) v
180+fixInlineIRs s (Code as code) =
181+ Code (fixAttrs s as) code
182+fixInlineIRs s (Link t ('#':url, tit)) =
183+ Link t (addHash s url, tit)
184+fixInlineIRs _ v = v
185+
186+normalisePath :: Inline -> Inline
187+normalisePath (Link t (url, tit)) =
188+ let (path, uid) = span (/= '#') url in
189+ Link t (takeFileName path ++ uid, tit)
190+normalisePath s = s
191+
192+prependHash :: [String] -> Inline -> Inline
193+prependHash ps l@(Link is (url, tit))
194+ | or [s `isPrefixOf` url | s <- ps] =
195+ Link is ('#':url, tit)
196+ | otherwise = l
197+prependHash _ i = i
198+
199+fixBlockIRs :: String -> Block -> Block
200+fixBlockIRs s (Div as b) =
201+ Div (fixAttrs s as) b
202+fixBlockIRs s (Header i as b) =
203+ Header i (fixAttrs s as) b
204+fixBlockIRs s (CodeBlock as code) =
205+ CodeBlock (fixAttrs s as) code
206+fixBlockIRs _ b = b
207+
208+fixAttrs :: FilePath -> B.Attr -> B.Attr
209+fixAttrs s (ident, cs, kvs) = (addHash s ident, filter (not . null) cs, removeEPUBAttrs kvs)
210+
211+addHash :: String -> String -> String
212+addHash _ "" = ""
213+addHash s ident = s ++ "#" ++ ident
214+
215+removeEPUBAttrs :: [(String, String)] -> [(String, String)]
216+removeEPUBAttrs kvs = filter (not . isEPUBAttr) kvs
217+
218+isEPUBAttr :: (String, String) -> Bool
219+isEPUBAttr (k, _) = "epub:" `isPrefixOf` k
220+
221+-- Library
222+
223+-- Strict version of foldM
224+foldM' :: (Monad m, NFData a) => (a -> b -> m a) -> a -> [b] -> m a
225+foldM' _ z [] = return z
226+foldM' f z (x:xs) = do
227+ z' <- f z x
228+ z' `deepseq` foldM' f z' xs
229+
230+traceM :: Monad m => String -> m ()
231+traceM = flip trace (return ())
232+
233+uncurry3 :: (a -> b -> c -> d) -> (a, b, c) -> d
234+uncurry3 f (a, b, c) = f a b c
235+
236+-- Utility
237+
238+stripNamespace :: QName -> String
239+stripNamespace (QName v _ _) = v
240+
241+attrToNSPair :: Attr -> Maybe (String, String)
242+attrToNSPair (Attr (QName "xmlns" _ _) val) = Just ("xmlns", val)
243+attrToNSPair _ = Nothing
244+
245+attrToPair :: Attr -> (String, String)
246+attrToPair (Attr (QName name _ _) val) = (name, val)
247+
248+defaultNameSpace :: Maybe String
249+defaultNameSpace = Just "http://www.idpf.org/2007/opf"
250+
251+dfName :: String -> QName
252+dfName s = QName s defaultNameSpace Nothing
253+
254+emptyName :: String -> QName
255+emptyName s = QName s Nothing Nothing
256+
257+-- Convert Maybe interface to Either
258+
259+findAttrE :: MonadError String m => QName -> Element -> m String
260+findAttrE q e = mkE "findAttr" $ findAttr q e
261+
262+findEntryByPathE :: MonadError String m => FilePath -> Archive -> m Entry
263+findEntryByPathE path a = mkE ("No entry on path: " ++ path) $ findEntryByPath path a
264+
265+parseXMLDocE :: MonadError String m => String -> m Element
266+parseXMLDocE doc = mkE "Unable to parse XML doc" $ parseXMLDoc doc
267+
268+findElementE :: MonadError String m => QName -> Element -> m Element
269+findElementE e x = mkE ("Unable to find element: " ++ show e) $ findElement e x
270+
271+mkE :: MonadError String m => String -> Maybe a -> m a
272+mkE s = maybe (throwError s) return
273+
src/Text/Pandoc/Readers/HTML.hs+216−32
@@ -41,48 +41,64 @@ import Text.HTML.TagSoup
4141import Text.HTML.TagSoup.Match
4242import Text.Pandoc.Definition
4343import qualified Text.Pandoc.Builder as B
44−import Text.Pandoc.Builder (HasMeta (..), Blocks, Inlines, trimInlines)
45−import Text.Pandoc.Shared
46−import Text.Pandoc.Options
47−import Text.Pandoc.Parsing
48−import Data.Maybe ( fromMaybe, isJust )
49−import Data.List ( intercalate )
44+import Text.Pandoc.Builder (Blocks, Inlines, trimInlines, HasMeta(..))
45+import Text.Pandoc.Shared ( extractSpaces, renderTags'
46+ , escapeURI, safeRead )
47+import Text.Pandoc.Options (ReaderOptions(readerParseRaw, readerTrace)
48+ , Extension (Ext_epub_html_exts))
49+import Text.Pandoc.Parsing hiding ((<|>))
50+import Text.Pandoc.Walk
51+import Data.Maybe ( fromMaybe, isJust)
52+import Data.List ( intercalate, isInfixOf )
5053import Data.Char ( isDigit )
51−import Control.Monad ( liftM, guard, when, mzero )
52−import Control.Applicative ( (<$>), (<$), (<*) )
53−import Data.Monoid
54+import Control.Monad ( liftM, guard, when, mzero, void, unless )
55+import Control.Arrow ((***))
56+import Control.Applicative ( (<$>), (<$), (<*), (*>), (<|>))
57+import Data.Monoid (mconcat, Monoid, mempty, (<>), First (..))
5458import Text.Printf (printf)
5559import Debug.Trace (trace)
56−import Data.Default (Default (..))
57−import Control.Monad.Reader (Reader, runReader, asks, local, ask)
60+import Text.TeXMath (readMathML, writeTeXMath)
61+import Data.Default (Default (..), def)
62+import Control.Monad.Reader (Reader,ask, asks, local, runReader)
5863
59−isSpace :: Char -> Bool
60−isSpace ' ' = True
61−isSpace '\t' = True
62−isSpace '\n' = True
63−isSpace _ = False
6464
6565-- | Convert HTML-formatted string to 'Pandoc' document.
6666readHtml :: ReaderOptions -- ^ Reader options
6767 -> String -- ^ String to parse (assumes @'\n'@ line endings)
6868 -> Pandoc
6969readHtml opts inp =
70− case flip runReader def $ runParserT parseDoc (HTMLState def{ stateOptions = opts } ) "source" tags of
70+ case flip runReader def $ runParserT parseDoc (HTMLState def{ stateOptions = opts } []) "source" tags of
7171 Left err' -> error $ "\nError at " ++ show err'
7272 Right result -> result
73− where tags = canonicalizeTags $
73+ where tags = stripPrefixes . canonicalizeTags $
7474 parseTagsOptions parseOptions{ optTagPosition = True } inp
7575 parseDoc = do
7676 blocks <- (fixPlains False) . mconcat <$> manyTill block eof
7777 meta <- stateMeta . parserState <$> getState
78− return $ Pandoc meta (B.toList blocks)
78+ bs' <- replaceNotes (B.toList blocks)
79+ return $ Pandoc meta bs'
80+
81+replaceNotes :: [Block] -> TagParser [Block]
82+replaceNotes = walkM replaceNotes'
83+
84+replaceNotes' :: Inline -> TagParser Inline
85+replaceNotes' (RawInline (Format "noteref") ref) = maybe (Str "") (Note . B.toList) . lookup ref <$> getNotes
86+ where
87+ getNotes = noteTable <$> getState
88+replaceNotes' x = return x
7989
8090data HTMLState =
8191 HTMLState
82− { parserState :: ParserState
92+ { parserState :: ParserState,
93+ noteTable :: [(String, Blocks)]
8394 }
8495
85−data HTMLLocal = HTMLLocal { quoteContext :: QuoteContext }
96+data HTMLLocal = HTMLLocal { quoteContext :: QuoteContext
97+ , inChapter :: Bool -- ^ Set if in chapter section
98+ }
99+
100+setInChapter :: HTMLParser s a -> HTMLParser s a
101+setInChapter = local (\s -> s {inChapter = True})
86102
87103type HTMLParser s = ParserT s HTMLState (Reader HTMLLocal)
88104
@@ -110,7 +126,11 @@ block = do
110126 tr <- getOption readerTrace
111127 pos <- getPosition
112128 res <- choice
113− [ pPara
129+ [ eSwitch
130+ , eSection
131+ , mempty <$ eFootnote
132+ , mempty <$ eTOC
133+ , pPara
114134 , pHeader
115135 , pBlockQuote
116136 , pCodeBlock
@@ -127,6 +147,64 @@ block = do
127147 (take 60 $ show $ B.toList res)) (return ())
128148 return res
129149
150+namespaces :: [(String, TagParser Blocks)]
151+namespaces = [(mathMLNamespace, B.para <$> pMath True)]
152+
153+mathMLNamespace :: String
154+mathMLNamespace = "http://www.w3.org/1998/Math/MathML"
155+
156+eSwitch :: TagParser Blocks
157+eSwitch = try $ do
158+ guardEnabled Ext_epub_html_exts
159+ pSatisfy (~== TagOpen "switch" [])
160+ cases <- getFirst . mconcat <$>
161+ manyTill (First <$> (eCase <* skipMany pBlank) )
162+ (lookAhead $ try $ pSatisfy (~== TagOpen "default" []))
163+ skipMany pBlank
164+ fallback <- pInTags "default" ( skipMany pBlank *> block <* skipMany pBlank )
165+ skipMany pBlank
166+ pSatisfy (~== TagClose "switch")
167+ return (fromMaybe fallback cases)
168+
169+eCase :: TagParser (Maybe Blocks)
170+eCase = do
171+ skipMany pBlank
172+ TagOpen _ attr <- lookAhead $ pSatisfy $ (~== TagOpen "case" [])
173+ case (flip lookup namespaces) =<< lookup "required-namespace" attr of
174+ Just p -> Just <$> (pInTags "case" (skipMany pBlank *> p <* skipMany pBlank))
175+ Nothing -> Nothing <$ manyTill pAnyTag (pSatisfy (~== TagClose "case"))
176+
177+eFootnote :: TagParser ()
178+eFootnote = try $ do
179+ let notes = ["footnote", "rearnote"]
180+ guardEnabled Ext_epub_html_exts
181+ (TagOpen tag attr) <- lookAhead $ pAnyTag
182+ guard (maybe False (flip elem notes) (lookup "type" attr))
183+ let ident = fromMaybe "" (lookup "id" attr)
184+ content <- pInTags tag block
185+ addNote ident content
186+
187+addNote :: String -> Blocks -> TagParser ()
188+addNote uid cont = updateState (\s -> s {noteTable = (uid, cont) : (noteTable s)})
189+
190+eNoteref :: TagParser Inlines
191+eNoteref = try $ do
192+ guardEnabled Ext_epub_html_exts
193+ TagOpen tag attr <- lookAhead $ pAnyTag
194+ guard (maybe False (== "noteref") (lookup "type" attr))
195+ let ident = maybe "" (dropWhile (== '#')) (lookup "href" attr)
196+ guard (not (null ident))
197+ pInTags tag block
198+ return $ B.rawInline "noteref" ident
199+
200+-- Strip TOC if there is one, better to generate again
201+eTOC :: TagParser ()
202+eTOC = try $ do
203+ guardEnabled Ext_epub_html_exts
204+ (TagOpen tag attr) <- lookAhead $ pAnyTag
205+ guard (maybe False (== "toc") (lookup "type" attr))
206+ void (pInTags tag block)
207+
130208pList :: TagParser Blocks
131209pList = pBulletList <|> pOrderedList <|> pDefinitionList
132210
@@ -139,9 +217,15 @@ pBulletList = try $ do
139217 -- note: if they have an <ol> or <ul> not in scope of a <li>,
140218 -- treat it as a list item, though it's not valid xhtml...
141219 skipMany nonItem
142− items <- manyTill (pInTags "li" block <* skipMany nonItem) (pCloses "ul")
220+ items <- manyTill (pListItem nonItem) (pCloses "ul")
143221 return $ B.bulletList $ map (fixPlains True) items
144222
223+pListItem :: TagParser a -> TagParser Blocks
224+pListItem nonItem = do
225+ TagOpen _ attr <- lookAhead $ pSatisfy (~== TagOpen "li" [])
226+ let liDiv = maybe mempty (\x -> B.divWith (x, [], []) mempty) (lookup "id" attr)
227+ (liDiv <>) <$> pInTags "li" block <* skipMany nonItem
228+
145229pOrderedList :: TagParser Blocks
146230pOrderedList = try $ do
147231 TagOpen _ attribs <- pSatisfy (~== TagOpen "ol" [])
@@ -167,7 +251,7 @@ pOrderedList = try $ do
167251 -- note: if they have an <ol> or <ul> not in scope of a <li>,
168252 -- treat it as a list item, though it's not valid xhtml...
169253 skipMany nonItem
170− items <- manyTill (pInTags "li" block <* skipMany nonItem) (pCloses "ol")
254+ items <- manyTill (pListItem nonItem) (pCloses "ol")
171255 return $ B.orderedListWith (start, style, DefaultDelim) $ map (fixPlains True) items
172256
173257pDefinitionList :: TagParser Blocks
@@ -230,13 +314,35 @@ pHtmlBlock t = try $ do
230314 contents <- manyTill pAnyTag (pSatisfy (~== TagClose t))
231315 return $ renderTags' $ [open] ++ contents ++ [TagClose t]
232316
317+-- Sets chapter context
318+eSection :: TagParser Blocks
319+eSection = try $ do
320+ let matchChapter as = maybe False (isInfixOf "chapter") (lookup "type" as)
321+ let sectTag = tagOpen (`elem` sectioningContent) matchChapter
322+ TagOpen tag _ <- lookAhead $ pSatisfy sectTag
323+ setInChapter (pInTags tag block)
324+
325+headerLevel :: String -> TagParser Int
326+headerLevel tagtype = do
327+ let level = read (drop 1 tagtype)
328+ (try $ do
329+ guardEnabled Ext_epub_html_exts
330+ asks inChapter >>= guard
331+ return (level - 1))
332+ <|>
333+ return level
334+
335+
336+
337+
338+
233339pHeader :: TagParser Blocks
234340pHeader = try $ do
235341 TagOpen tagtype attr <- pSatisfy $
236342 tagOpen (`elem` ["h1","h2","h3","h4","h5","h6"])
237343 (const True)
238344 let bodyTitle = TagOpen tagtype attr ~== TagOpen "h1" [("class","title")]
239− let level = read (drop 1 tagtype)
345+ level <- headerLevel tagtype
240346 contents <- trimInlines . mconcat <$> manyTill inline (pCloses tagtype <|> eof)
241347 let ident = fromMaybe "" $ lookup "id" attr
242348 let classes = maybe [] words $ lookup "class" attr
@@ -336,7 +442,8 @@ pCodeBlock = try $ do
336442
337443inline :: TagParser Inlines
338444inline = choice
339− [ pTagText
445+ [ eNoteref
446+ , pTagText
340447 , pQ
341448 , pEmph
342449 , pStrong
@@ -348,6 +455,7 @@ inline = choice
348455 , pImage
349456 , pCode
350457 , pSpan
458+ , pMath False
351459 , pRawHtmlInline
352460 ]
353461
@@ -416,12 +524,24 @@ pLineBreak = do
416524 return B.linebreak
417525
418526pLink :: TagParser Inlines
419−pLink = try $ do
527+pLink = pRelLink <|> pAnchor
528+
529+pAnchor :: TagParser Inlines
530+pAnchor = try $ do
531+ tag <- pSatisfy (tagOpenLit "a" (isJust . lookup "id"))
532+ return $ B.spanWith (fromAttrib "id" tag , [], []) mempty
533+
534+pRelLink :: TagParser Inlines
535+pRelLink = try $ do
420536 tag <- pSatisfy (tagOpenLit "a" (isJust . lookup "href"))
421537 let url = fromAttrib "href" tag
422538 let title = fromAttrib "title" tag
539+ let uid = fromAttrib "id" tag
540+ let spanC = case uid of
541+ [] -> id
542+ s -> B.spanWith (s, [], [])
423543 lab <- trimInlines . mconcat <$> manyTill inline (pCloses "a")
424− return $ B.link (escapeURI url) title lab
544+ return $ spanC $ B.link (escapeURI url) title lab
425545
426546pImage :: TagParser Inlines
427547pImage = do
@@ -451,6 +571,22 @@ pRawHtmlInline = do
451571 then return $ B.rawInline "html" $ renderTags' [result]
452572 else return mempty
453573
574+mathMLToTeXMath :: String -> Either String String
575+mathMLToTeXMath s = writeTeXMath <$> readMathML s
576+
577+pMath :: Bool -> TagParser Inlines
578+pMath inCase = try $ do
579+ open@(TagOpen _ attr) <- pSatisfy $ tagOpen (=="math") (const True)
580+ unless (inCase) (guard (maybe False (== mathMLNamespace) (lookup "xmlns" attr)))
581+ contents <- manyTill pAnyTag (pSatisfy (~== TagClose "math"))
582+ let math = mathMLToTeXMath $
583+ (renderTags $ [open] ++ contents ++ [TagClose "math"])
584+ let constructor =
585+ maybe B.math (\x -> if (x == "inline") then B.math else B.displayMath)
586+ (lookup "display" attr)
587+ return $ either (const mempty)
588+ (\x -> if null x then mempty else constructor x) math
589+
454590pInlinesInTags :: String -> (Inlines -> Inlines)
455591 -> TagParser Inlines
456592pInlinesInTags tagtype f = extractSpaces f <$> pInTags tagtype inline
@@ -620,8 +756,11 @@ blockDocBookTags = ["calloutlist", "bibliolist", "glosslist", "itemizedlist",
620756 "classsynopsis", "blockquote", "epigraph", "msgset",
621757 "sidebar", "title"]
622758
759+epubTags :: [String]
760+epubTags = ["case", "switch", "default"]
761+
623762blockTags :: [String]
624−blockTags = blockHtmlTags ++ blockDocBookTags
763+blockTags = blockHtmlTags ++ blockDocBookTags ++ epubTags
625764
626765isInlineTag :: Tag String -> Bool
627766isInlineTag t = tagOpen isInlineTagName (const True) t ||
@@ -720,9 +859,32 @@ htmlTag f = try $ do
720859mkAttr :: [(String, String)] -> Attr
721860mkAttr attr = (attribsId, attribsClasses, attribsKV)
722861 where attribsId = fromMaybe "" $ lookup "id" attr
723− attribsClasses = words $ fromMaybe "" $ lookup "class" attr
862+ attribsClasses = (words $ fromMaybe "" $ lookup "class" attr) ++ epubTypes
724863 attribsKV = filter (\(k,_) -> k /= "class" && k /= "id") attr
864+ epubTypes = words $ fromMaybe "" $ lookup "epub:type" attr
725865
866+-- Strip namespace prefixes
867+stripPrefixes :: [Tag String] -> [Tag String]
868+stripPrefixes = map stripPrefix
869+
870+stripPrefix :: Tag String -> Tag String
871+stripPrefix (TagOpen s as) =
872+ TagOpen (stripPrefix' s) (map (stripPrefix' *** id) as)
873+stripPrefix (TagClose s) = TagClose (stripPrefix' s)
874+stripPrefix x = x
875+
876+stripPrefix' :: String -> String
877+stripPrefix' s =
878+ case span (/= ':') s of
879+ (_, "") -> s
880+ (_, (_:ts)) -> ts
881+
882+isSpace :: Char -> Bool
883+isSpace ' ' = True
884+isSpace '\t' = True
885+isSpace '\n' = True
886+isSpace '\r' = True
887+isSpace _ = False
726888
727889-- Instances
728890
@@ -736,17 +898,39 @@ instance HasReaderOptions HTMLState where
736898 extractReaderOptions = extractReaderOptions . parserState
737899
738900instance Default HTMLState where
739− def = HTMLState def
901+ def = HTMLState def []
740902
741903instance HasMeta HTMLState where
742904 setMeta s b st = st {parserState = setMeta s b $ parserState st}
743905 deleteMeta s st = st {parserState = deleteMeta s $ parserState st}
744906
745907instance Default HTMLLocal where
746− def = HTMLLocal NoQuote
908+ def = HTMLLocal NoQuote False
747909
748910instance HasLastStrPosition HTMLState where
749911 setLastStrPos s st = st {parserState = setLastStrPos s (parserState st)}
750912 getLastStrPos = getLastStrPos . parserState
751913
752914
915+-- EPUB Specific
916+--
917+--
918+sectioningContent :: [String]
919+sectioningContent = ["article", "aside", "nav", "section"]
920+
921+{-
922+groupingContent :: [String]
923+groupingContent = ["p", "hr", "pre", "blockquote", "ol"
924+ , "ul", "li", "dl", "dt", "dt", "dd"
925+ , "figure", "figcaption", "div", "main"]
926+
927+
928+
929+types :: [(String, ([String], Int))]
930+types = -- Document divisions
931+ map (\s -> (s, (["section", "body"], 0)))
932+ ["volume", "part", "chapter", "division"]
933+ ++ -- Document section and components
934+ [
935+ ("abstract", ([], 0))]
936+-}
tests/Tests/Old.hs+6−1
@@ -144,7 +144,12 @@ tests = [ testGroup "markdown"
144144 ]
145145 , testGroup "txt2tags"
146146 [ test "reader" ["-r", "t2t", "-w", "native"]
147− "txt2tags.t2t" "txt2tags.native"
147+ "txt2tags.t2t" "txt2tags.native" ]
148+ , testGroup "epub" [
149+ test "features" ["-r", "epub", "-w", "native"]
150+ "features.epub" "features.native"
151+ , test "formatting" ["-r", "epub", "-w", "native"]
152+ "formatting.epub" "formatting.native"
148153 ]
149154 , testGroup "other writers" $ map (\f -> testGroup f $ writerTests f)
150155 [ "opendocument" , "context" , "texinfo", "icml"
tests/features.epubnew file

Binary file not shown.

tests/features.nativenew file+482
@@ -0,0 +1,482 @@
1+[Para [Span ("front.xhtml",[],[]) []]
2+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"utf-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
3+,RawBlock (Format "html") "<section>"
4+,Header 1 ("",[],[]) [Str "Reflowable",Space,Str "EPUB",Space,Str "3",Space,Str "Conformance",Space,Str "Test",Space,Str "Document:",Space,Str "0100"]
5+,RawBlock (Format "html") "<section>"
6+,Header 2 ("",[],[]) [Str "Status",Space,Str "of",Space,Str "this",Space,Str "Document"]
7+,Para [Str "This",Space,Str "publication",Space,Str "is",Space,Str "currently",Space,Str "considered",Space,Span ("",["status"],[]) [Str "[UNDER",Space,Str "DEVELOPMENT]"],Space,Str "by",Space,Str "the",Space,Str "IDPF."]
8+,Para [Str "This",Space,Str "publication",Space,Str "is",Space,Str "part",Space,Str "of",Space,Str "version",Space,Span ("",["version"],[]) [Str "X.X"],Space,Str "of",Space,Str "the",Space,Str "EPUB",Space,Str "3.0",Space,Str "Compliance",Space,Str "Test",Space,Str "Suite",Space,Str "released",Space,Str "on",Space,RawInline (Format "html") "<time class=\"release\">",Str "TBD",RawInline (Format "html") "</time>",Str "."]
9+,Para [Str "Before",Space,Str "using",Space,Str "this",Space,Str "publication",Space,Str "to",Space,Str "evaluate",Space,Str "reading",Space,Str "systems,",Space,Str "testers",Space,Str "are",Space,Str "strongly",Space,Str "encouraged",Space,Str "to",Space,Str "verify",Space,Str "that",Space,Str "they",Space,Str "have",Space,Str "the",Space,Str "latest",Space,Str "release",Space,Str "by",Space,Str "checking",Space,Str "the",Space,Str "current",Space,Str "release",Space,Str "version",Space,Str "and",Space,Str "date",Space,Str "of",Space,Str "the",Space,Str "test",Space,Str "suite",Space,Str "at",Space,Link [Str "TBD"] ("","")]
10+,Para [Str "This",Space,Str "publication",Space,Str "is",Space,Str "one",Space,Str "of",Space,Str "several",Space,Str "that",Space,Str "currently",Space,Str "comprise",Space,Str "the",Space,Str "EPUB",Space,Str "3",Space,Str "conformance",Space,Str "test",Space,Str "suite",Space,Str "for",Space,Str "reflowable",Space,Str "content.",Space,Str "The",Space,Str "complete",Space,Str "test",Space,Str "suite",Space,Str "includes",Space,Str "all",Space,Str "of",Space,Str "the",Space,Str "following",Space,Str "publications:"]
11+,OrderedList (1,DefaultStyle,DefaultDelim)
12+ [[Plain [Str "."]]]
13+,RawBlock (Format "html") "</section>"
14+,RawBlock (Format "html") "<section>"
15+,Header 2 ("",[],[]) [Str "About",Space,Str "this",Space,Str "Document"]
16+,Para [Str "This",Space,Str "document",Space,Str "focuses",Space,Str "on",Space,Str "human-evaluated",Space,Str "binary",Space,Str "(pass/fail)",Space,Str "tests",Space,Str "in",Space,Str "a",Space,Str "reflowable",Space,Str "context.",Space,Str "Tests",Space,Str "for",Space,Str "fixed-layout",Space,Str "content",Space,Str "and",Space,Str "other",Space,Str "individual",Space,Str "tests",Space,Str "that",Space,Str "require",Space,Str "a",Space,Str "dedicated",Space,Str "epub",Space,Str "file",Space,Str "are",Space,Str "available",Space,Str "in",Space,Str "additional",Space,Str "sibling",Space,Str "documents;",Space,Str "refer",Space,Str "to",Space,Str "the",Space,Link [Str "test",Space,Str "suite",Space,Str "wiki"] ("Overview",""),Space,Str "(",Code ("",[],[]) "https://github.com/mgylling/epub-testsuite/wiki/Overview",Str ")",Space,Str "for",Space,Str "additional",Space,Str "information."]
17+,RawBlock (Format "html") "</section>"
18+,RawBlock (Format "html") "<section>"
19+,Header 2 ("",[],[]) [Str "Conventions"]
20+,Para [Str "The",Space,Str "following",Space,Str "conventions",Space,Str "are",Space,Str "used",Space,Str "throughout",Space,Str "the",Space,Str "document:"]
21+,DefinitionList
22+ [([Str "1.",Space,Str "Locating",Space,Str "a",Space,Str "test"],
23+ [[Div ("",["ctest"],[]) [Para [Str "Tests",Space,Str "for",Space,Emph [Str "required"],Space,Str "Reading",Space,Str "System",Space,Str "functionality",Space,Str "are",Space,Str "preceded",Space,Str "by",Space,Str "the",Space,Str "label:",Space,Span ("",["nature"],[("style","display: inline; font-size: 100%")]) [Str "[REQUIRED]"]]]
24+ ,Div ("",["otest"],[]) [Para [Str "Tests",Space,Str "for",Space,Emph [Str "optional"],Space,Str "Reading",Space,Str "System",Space,Str "functionality",Space,Str "are",Space,Str "preceded",Space,Str "by",Space,Str "the",Space,Str "label:",Space,Span ("",["nature"],[("style","display: inline; font-size: 100%")]) [Str "[OPTIONAL]"]]]]])
25+ ,([Str "2.",Space,Str "Performing",Space,Str "the",Space,Str "test"],
26+ [[Plain [Str "Each",Space,Str "test",Space,Str "includes",Space,Str "a",Space,Str "description",Space,Str "of",Space,Str "its",Space,Str "purpose",Space,Str "followed",Space,Str "by",Space,Str "the",Space,Str "actual",Space,Strong [Str "test",Space,Str "statement,",Space,Str "which",Space,Str "can",Space,Str "always",Space,Str "be",Space,Str "evaluated",Space,Str "to",Space,Str "true",Space,Str "or",Space,Str "false"],Str ".",Space,Str "These",Space,Str "statements",Space,Str "typically",Space,Str "have",Space,Str "the",Space,Str "form:",Space,Str "\"If",Space,Str "[some",Space,Str "condition],",Space,Str "the",Space,Str "test",Space,Str "passes\"."]]])
27+ ,([Str "3.",Space,Str "Scoring",Space,Str "in",Space,Str "the",Space,Str "results",Space,Str "form"],
28+ [[Plain [Str "@@@TODO",Space,Str "provide",Space,Str "info",Space,Str "on",Space,Str "where",Space,Str "to",Space,Str "get",Space,Str "the",Space,Str "results",Space,Str "form"]]])]
29+,RawBlock (Format "html") "</section>"
30+,RawBlock (Format "html") "</section>"
31+,Para [Span ("content-xhtml-001.xhtml",[],[]) []]
32+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"utf-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
33+,Header 1 ("",[],[]) [Str "Content",Space,Str "Documents:",Space,Str "XHTML"]
34+,Para [Str "This",Space,Str "section",Space,Str "contains",Space,Str "tests",Space,Str "for",Space,Str "static",Space,Str "XHTML",Space,Str "content."]
35+,Para [Span ("content-xhtml-002.xhtml",[],[]) []]
36+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
37+,RawBlock (Format "html") "<section id=\"iframe-010\" class=\"ctest\">"
38+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "iframe-010"],Space,Str "Inline",Space,Str "Frames"]
39+,Para [Str "Tests",Space,Str "whether",Space,Str "embedding",Space,Str "content",Space,Str "via",Space,Str "an",Space,Code ("",[],[]) "iframe",Space,Str "is",Space,Str "supported."]
40+,Para [RawInline (Format "html") "<iframe src=\"content-xhtml-002-inset.xhtml\" width=\"300\" height=\"45\">",RawInline (Format "html") "</iframe>"]
41+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "paragraph",Space,Str "reads",Space,Str "\"PASS\",",Space,Str "the",Space,Str "test",Space,Str "passes."]
42+,RawBlock (Format "html") "</section>"
43+,Para [Span ("content-images-001.xhtml",[],[]) []]
44+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
45+,RawBlock (Format "html") "<section>"
46+,Header 2 ("content-images-001.xhtml#multimedia",[],[]) [Str "Multimedia"]
47+,RawBlock (Format "html") "<section>"
48+,Header 3 ("content-images-001.xhtml#images",[],[]) [Str "Images"]
49+,RawBlock (Format "html") "<section id=\"img-010\" class=\"ctest\">"
50+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "img-010"],Space,Str "GIF"]
51+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Str "GIF",Space,Str "image",Space,Str "format",Space,Str "is",Space,Str "supported."]
52+,Para [Image [Str "gif",Space,Str "test"] ("check.gif","")]
53+,Para [Str "If",Space,Str "a",Space,Str "checkmark",Space,Str "precedes",Space,Str "this",Space,Str "paragaph,",Space,Str "the",Space,Str "test",Space,Str "passes."]
54+,RawBlock (Format "html") "</section>"
55+,RawBlock (Format "html") "<section id=\"img-020\" class=\"ctest\">"
56+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "img-020"],Space,Str "PNG"]
57+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Str "PNG",Space,Str "image",Space,Str "format",Space,Str "is",Space,Str "supported."]
58+,Para [Image [Str "png",Space,Str "test"] ("check.png","")]
59+,Para [Str "If",Space,Str "a",Space,Str "checkmark",Space,Str "precedes",Space,Str "this",Space,Str "paragaph,",Space,Str "the",Space,Str "test",Space,Str "passes."]
60+,RawBlock (Format "html") "</section>"
61+,RawBlock (Format "html") "<section id=\"img-030\" class=\"ctest\">"
62+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "img-030"],Space,Str "JPEG"]
63+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Str "JPEG",Space,Str "image",Space,Str "format",Space,Str "is",Space,Str "supported."]
64+,Para [Image [Str "jpeg",Space,Str "test"] ("check.jpg","")]
65+,Para [Str "If",Space,Str "a",Space,Str "checkmark",Space,Str "precedes",Space,Str "this",Space,Str "paragaph,",Space,Str "the",Space,Str "test",Space,Str "passes."]
66+,RawBlock (Format "html") "</section>"
67+,RawBlock (Format "html") "</section>"
68+,RawBlock (Format "html") "</section>"
69+,Para [Span ("content-multimedia-001.xhtml",[],[]) []]
70+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
71+,RawBlock (Format "html") "<section>"
72+,RawBlock (Format "html") "<section>"
73+,Header 3 ("content-multimedia-001.xhtml#audio",[],[]) [Str "Audio"]
74+,RawBlock (Format "html") "<section id=\"audio-010\" class=\"ctest\">"
75+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "audio-010"],Space,Str "The",Space,Code ("",[],[]) "audio",Space,Str "element:",Space,Str "MP3"]
76+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Str "HTML5",Space,Code ("",[],[]) "audio",Space,Str "element",Space,Str "is",Space,Str "supported",Space,Str "using",Space,Code ("",[],[]) "MP3",Space,Str "audio."]
77+,Para [RawInline (Format "html") "<audio controls src=\"../audio/allison64.mp3\">",Space,Str "If",Space,Str "this",Space,Str "text",Space,Str "is",Space,Str "rendered,",Space,Str "the",Space,Str "audio",Space,Str "element",Space,Str "is",Space,Str "not",Space,Str "supported",Space,Str "and",Space,Str "the",Space,Str "test",Space,Str "fails.",Space,RawInline (Format "html") "</audio>"]
78+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "audio",Space,Str "clip",Space,Str "can",Space,Str "be",Space,Str "played",Space,Str "(a",Space,Str "woman's",Space,Str "voice",Space,Str "will",Space,Str "be",Space,Str "heard,",Space,Str "beginning",Space,Str "\"a",Space,Str "crime",Space,Str "to",Space,Str "sink",Space,Str "your",Space,Str "teeth",Space,Str "into\"),",Space,Str "the",Space,Str "test",Space,Str "passes."]
79+,RawBlock (Format "html") "</section>"
80+,RawBlock (Format "html") "<section id=\"audio-020\" class=\"ctest\">"
81+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "audio-020"],Space,Str "The",Space,Code ("",[],[]) "audio",Space,Str "element:",Space,Str "MP4",Space,Str "AAC",Space,Str "LC"]
82+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Str "HTML5",Space,Code ("",[],[]) "audio",Space,Str "element",Space,Str "is",Space,Str "supported",Space,Str "using",Space,Code ("",[],[]) "AAC LC",Space,Str "audio",Space,Str "in",Space,Str "an",Space,Code ("",[],[]) "MP4",Space,Str "container."]
83+,Para [RawInline (Format "html") "<audio controls src=\"../audio/allison64.mp4\">",Space,Str "If",Space,Str "this",Space,Str "text",Space,Str "is",Space,Str "rendered,",Space,Str "the",Space,Str "audio",Space,Str "element",Space,Str "is",Space,Str "not",Space,Str "supported",Space,Str "and",Space,Str "the",Space,Str "test",Space,Str "fails.",Space,RawInline (Format "html") "</audio>"]
84+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "audio",Space,Str "clip",Space,Str "can",Space,Str "be",Space,Str "played",Space,Str "(a",Space,Str "woman's",Space,Str "voice",Space,Str "will",Space,Str "be",Space,Str "heard,",Space,Str "beginning",Space,Str "\"a",Space,Str "crime",Space,Str "to",Space,Str "sink",Space,Str "your",Space,Str "teeth",Space,Str "into\"),",Space,Str "the",Space,Str "test",Space,Str "passes."]
85+,RawBlock (Format "html") "</section>"
86+,RawBlock (Format "html") "<section id=\"audio-030\" class=\"ctest\">"
87+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "audio-030"],Space,Str "The",Space,Code ("",[],[]) "audio",Space,Str "element:",Space,Code ("",[],[]) "source",Space,Str "elements"]
88+,Para [Str "Tests",Space,Str "whether",Space,Str "media",Space,Str "specified",Space,Str "via",Space,Code ("",[],[]) "source",Space,Str "elements",Space,Str "is",Space,Str "recognized:"]
89+,Para [RawInline (Format "html") "<audio controls>",Space,RawInline (Format "html") "<source src=\"../audio/allison64.mp4\" type=\"audio/mp4\">",RawInline (Format "html") "</source>",Space,RawInline (Format "html") "<source src=\"../audio/allison64.mp3\" type=\"audio/mp3\">",RawInline (Format "html") "</source>",Space,Str "If",Space,Str "this",Space,Str "text",Space,Str "is",Space,Str "rendered,",Space,Str "the",Space,Str "audio",Space,Str "element",Space,Str "is",Space,Str "not",Space,Str "supported",Space,Str "and",Space,Str "the",Space,Str "test",Space,Str "fails.",Space,RawInline (Format "html") "</audio>"]
90+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "audio",Space,Str "clip",Space,Str "can",Space,Str "be",Space,Str "played",Space,Str "(a",Space,Str "woman's",Space,Str "voice",Space,Str "will",Space,Str "be",Space,Str "heard,",Space,Str "beginning",Space,Str "\"a",Space,Str "crime",Space,Str "to",Space,Str "sink",Space,Str "your",Space,Str "teeth",Space,Str "into\"),",Space,Str "the",Space,Str "test",Space,Str "passes."]
91+,RawBlock (Format "html") "</section>"
92+,RawBlock (Format "html") "</section>"
93+,RawBlock (Format "html") "</section>"
94+,Para [Span ("content-multimedia-002.xhtml",[],[]) []]
95+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
96+,RawBlock (Format "html") "<section>"
97+,Header 3 ("content-multimedia-002.xhtml#video",[],[]) [Str "Video"]
98+,RawBlock (Format "html") "<section id=\"video-010\" class=\"otest\">"
99+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[OPTIONAL]"],Space,Span ("",["test-id"],[]) [Str "video-010"],Space,Str "The",Space,Code ("",[],[]) "video",Space,Str "element:",Space,Str "VP8"]
100+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Str "HTML5",Space,Code ("",[],[]) "video",Space,Str "element",Space,Str "is",Space,Str "supported",Space,Str "using",Space,Code ("",[],[]) "WebM",Space,Str "video",Space,Str "(VP8",Space,Str "video",Space,Str "with",Space,Str "Vorbis",Space,Str "audio)."]
101+,Para [RawInline (Format "html") "<video controls src=\"../video/screencast.webm\" width=\"278\" height=\"240\">",Space,Str "If",Space,Str "this",Space,Str "text",Space,Str "is",Space,Str "rendered,",Space,Str "the",Space,Str "video",Space,Str "element",Space,Str "is",Space,Str "not",Space,Str "supported",Space,Str "and",Space,Str "the",Space,Str "test",Space,Str "fails.",Space,RawInline (Format "html") "</video>"]
102+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "video",Space,Str "clip",Space,Str "can",Space,Str "be",Space,Str "played",Space,Str "(a",Space,Str "man's",Space,Str "voice",Space,Str "will",Space,Str "be",Space,Str "heard,",Space,Str "beginning",Space,Str "\"Hi",Space,Str "there,",Space,Str "I",Space,Str "quickly",Space,Str "want",Space,Str "to",Space,Str "show",Space,Str "you\"),",Space,Str "the",Space,Str "test",Space,Str "passes."]
103+,RawBlock (Format "html") "</section>"
104+,RawBlock (Format "html") "<section id=\"video-020\" class=\"otest\">"
105+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[OPTIONAL]"],Space,Span ("",["test-id"],[]) [Str "video-020"],Space,Str "The",Space,Code ("",[],[]) "video",Space,Str "element:",Space,Str "H.264"]
106+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Str "HTML5",Space,Code ("",[],[]) "video",Space,Str "element",Space,Str "is",Space,Str "supported",Space,Str "using",Space,Code ("",[],[]) "MP4",Space,Str "video",Space,Str "(H.264",Space,Str "video",Space,Str "with",Space,Str "AAC-LC",Space,Str "audio)."]
107+,Para [RawInline (Format "html") "<video controls src=\"../video/screencast.mp4\" width=\"278\" height=\"240\">",Space,Str "If",Space,Str "this",Space,Str "text",Space,Str "is",Space,Str "rendered,",Space,Str "the",Space,Str "video",Space,Str "element",Space,Str "is",Space,Str "not",Space,Str "supported",Space,Str "and",Space,Str "the",Space,Str "test",Space,Str "fails.",Space,RawInline (Format "html") "</video>"]
108+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "video",Space,Str "clip",Space,Str "can",Space,Str "be",Space,Str "played",Space,Str "(a",Space,Str "man's",Space,Str "voice",Space,Str "will",Space,Str "be",Space,Str "heard,",Space,Str "beginning",Space,Str "\"Hi",Space,Str "there,",Space,Str "I",Space,Str "quickly",Space,Str "want",Space,Str "to",Space,Str "show",Space,Str "you\"),",Space,Str "the",Space,Str "test",Space,Str "passes."]
109+,RawBlock (Format "html") "</section>"
110+,RawBlock (Format "html") "<section id=\"video-030\" class=\"otest\">"
111+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[OPTIONAL]"],Space,Span ("",["test-id"],[]) [Str "video-030"],Space,Str "The",Space,Code ("",[],[]) "video",Space,Str "element:",Space,Code ("",[],[]) "source",Space,Str "elements"]
112+,Para [Str "Tests",Space,Str "whether",Space,Str "media",Space,Str "specified",Space,Str "via",Space,Code ("",[],[]) "source",Space,Str "elements",Space,Str "is",Space,Str "recognized:"]
113+,Para [RawInline (Format "html") "<video controls width=\"278\" height=\"240\" poster=\"../img/Skype_logo.png\">",Space,RawInline (Format "html") "<source src=\"../video/screencast.mp4\" type=\"video/mp4\">",RawInline (Format "html") "</source>",Space,RawInline (Format "html") "<source src=\"../video/screencast.webm\" type=\"video/webm\">",RawInline (Format "html") "</source>",Space,Str "If",Space,Str "this",Space,Str "text",Space,Str "is",Space,Str "rendered,",Space,Str "the",Space,Str "video",Space,Str "element",Space,Str "is",Space,Str "not",Space,Str "supported",Space,Str "and",Space,Str "the",Space,Str "test",Space,Str "fails.",Space,RawInline (Format "html") "</video>"]
114+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "video",Space,Str "clip",Space,Str "can",Space,Str "be",Space,Str "played",Space,Str "(a",Space,Str "man's",Space,Str "voice",Space,Str "will",Space,Str "be",Space,Str "heard,",Space,Str "beginning",Space,Str "\"Hi",Space,Str "there,",Space,Str "I",Space,Str "quickly",Space,Str "want",Space,Str "to",Space,Str "show",Space,Str "you\"),",Space,Str "the",Space,Str "test",Space,Str "passes."]
115+,Para [Str "This",Space,Str "test",Space,Str "will",Space,Str "fail",Space,Str "if",Space,Str "neither",Space,Str "H.264",Space,Str "nor",Space,Str "VP8",Space,Str "are",Space,Str "supported,",Space,Str "regardless",Space,Str "of",Space,Str "support",Space,Str "for",Space,Str "the",Space,Code ("",[],[]) "source",Space,Str "element.",Space,Str "Other",Space,Str "codecs",Space,Str "must",Space,Str "be",Space,Str "tested",Space,Str "manually."]
116+,RawBlock (Format "html") "</section>"
117+,RawBlock (Format "html") "<section id=\"video-040\" class=\"otest\">"
118+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[OPTIONAL]"],Space,Span ("",["test-id"],[]) [Str "video-040"],Space,Str "The",Space,Code ("",[],[]) "video",Space,Str "element:",Space,Str "Poster",Space,Str "Images"]
119+,Para [Str "Tests",Space,Str "whether",Space,Str "poster",Space,Str "images",Space,Str "are",Space,Str "supported",Space,Str "the",Space,Str "HTML5",Space,Code ("",[],[]) "video",Space,Str "element:"]
120+,Para [RawInline (Format "html") "<video controls width=\"278\" height=\"240\" poster=\"../img/Skype_logo.png\">",Space,RawInline (Format "html") "<source src=\"../video/screencast.mp4\" type=\"video/mp4\">",RawInline (Format "html") "</source>",Space,RawInline (Format "html") "<source src=\"../video/screencast.webm\" type=\"video/webm\">",RawInline (Format "html") "</source>",Space,Str "If",Space,Str "this",Space,Str "text",Space,Str "is",Space,Str "rendered,",Space,Str "the",Space,Str "video",Space,Str "element",Space,Str "is",Space,Str "not",Space,Str "supported",Space,Str "and",Space,Str "the",Space,Str "test",Space,Str "fails.",Space,RawInline (Format "html") "</video>"]
121+,Para [Str "If",Space,Str "the",Space,Str "Skype",Space,Str "logo",Space,Str "appears",Space,Str "in",Space,Str "the",Space,Str "video",Space,Str "area,",Space,Str "the",Space,Str "test",Space,Str "passes."]
122+,RawBlock (Format "html") "</section>"
123+,RawBlock (Format "html") "<section id=\"video-050\" class=\"otest\">"
124+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[OPTIONAL]"],Space,Span ("",["test-id"],[]) [Str "video-050"],Space,Str "The",Space,Code ("",[],[]) "video",Space,Str "element:",Space,Str "Captions",Space,Str "(WebVTT)"]
125+,Para [Str "Tests",Space,Str "whether",Space,Str "WebVTT",Space,Str "captions",Space,Str "are",Space,Str "supported",Space,Str "in",Space,Str "the",Space,Str "HTML5",Space,Code ("",[],[]) "video",Space,Str "element:"]
126+,Para [RawInline (Format "html") "<video controls width=\"278\" height=\"240\">",Space,RawInline (Format "html") "<source src=\"../video/screencast.mp4\" type=\"video/mp4\">",RawInline (Format "html") "</source>",Space,RawInline (Format "html") "<source src=\"../video/screencast.webm\" type=\"video/webm\">",RawInline (Format "html") "</source>",Space,RawInline (Format "html") "<track kind=\"captions\" src=\"../video/tracks/screencast.vtt\" srclang=\"en\" label=\"English\" default=\"default\">",RawInline (Format "html") "</track>",Space,Str "If",Space,Str "this",Space,Str "text",Space,Str "is",Space,Str "rendered,",Space,Str "the",Space,Str "video",Space,Str "element",Space,Str "is",Space,Str "not",Space,Str "supported",Space,Str "and",Space,Str "the",Space,Str "test",Space,Str "fails.",Space,RawInline (Format "html") "</video>"]
127+,Para [Str "If",Space,Str "captions",Space,Str "appear",Space,Str "during",Space,Str "the",Space,Str "first",Space,Str "10s",Space,Str "of",Space,Str "video",Space,Str "playback,",Space,Str "or",Space,Str "can",Space,Str "be",Space,Str "turned",Space,Str "on",Space,Str "from",Space,Str "the",Space,Str "player",Space,Str "interface,",Space,Str "then",Space,Str "the",Space,Str "test",Space,Str "passes."]
128+,RawBlock (Format "html") "</section>"
129+,RawBlock (Format "html") "<section id=\"video-060\" class=\"otest\">"
130+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[OPTIONAL]"],Space,Span ("",["test-id"],[]) [Str "video-060"],Space,Str "The",Space,Code ("",[],[]) "video",Space,Str "element:",Space,Str "Captions",Space,Str "(TTML)"]
131+,Para [Str "Tests",Space,Str "whether",Space,Str "TTML",Space,Str "captions",Space,Str "are",Space,Str "supported",Space,Str "in",Space,Str "the",Space,Str "HTML5",Space,Code ("",[],[]) "video",Space,Str "element:"]
132+,Para [RawInline (Format "html") "<video controls width=\"278\" height=\"240\">",Space,RawInline (Format "html") "<source src=\"../video/screencast.mp4\" type=\"video/mp4\">",RawInline (Format "html") "</source>",Space,RawInline (Format "html") "<source src=\"../video/screencast.webm\" type=\"video/webm\">",RawInline (Format "html") "</source>",Space,RawInline (Format "html") "<track kind=\"captions\" src=\"../video/tracks/screencast.ttml\" srclang=\"en\" label=\"English\" default=\"default\">",RawInline (Format "html") "</track>",Space,Str "If",Space,Str "this",Space,Str "text",Space,Str "is",Space,Str "rendered,",Space,Str "the",Space,Str "video",Space,Str "element",Space,Str "is",Space,Str "not",Space,Str "supported",Space,Str "and",Space,Str "the",Space,Str "test",Space,Str "fails.",Space,RawInline (Format "html") "</video>"]
133+,Para [Str "If",Space,Str "captions",Space,Str "appear",Space,Str "during",Space,Str "the",Space,Str "first",Space,Str "10s",Space,Str "of",Space,Str "video",Space,Str "playback,",Space,Str "or",Space,Str "can",Space,Str "be",Space,Str "turned",Space,Str "on",Space,Str "from",Space,Str "the",Space,Str "player",Space,Str "interface,",Space,Str "the",Space,Str "test",Space,Str "passes."]
134+,RawBlock (Format "html") "</section>"
135+,RawBlock (Format "html") "<section id=\"video-070\" class=\"otest\">"
136+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[OPTIONAL]"],Space,Span ("",["test-id"],[]) [Str "video-070"],Space,Str "The",Space,Code ("",[],[]) "video",Space,Str "element:",Space,Str "Subtitles",Space,Str "(WebVTT)"]
137+,Para [Str "Tests",Space,Str "whether",Space,Str "WebVTT",Space,Str "subtitles",Space,Str "are",Space,Str "supported",Space,Str "in",Space,Str "the",Space,Str "HTML5",Space,Code ("",[],[]) "video",Space,Str "element:"]
138+,Para [RawInline (Format "html") "<video controls width=\"278\" height=\"240\">",Space,RawInline (Format "html") "<source src=\"../video/screencast.mp4\" type=\"video/mp4\">",RawInline (Format "html") "</source>",Space,RawInline (Format "html") "<source src=\"../video/screencast.webm\" type=\"video/webm\">",RawInline (Format "html") "</source>",Space,RawInline (Format "html") "<track kind=\"subtitles\" src=\"../video/tracks/screencast.vtt\" srclang=\"en\" label=\"English\" default=\"default\">",RawInline (Format "html") "</track>",Space,Str "If",Space,Str "this",Space,Str "text",Space,Str "is",Space,Str "rendered,",Space,Str "the",Space,Str "video",Space,Str "element",Space,Str "is",Space,Str "not",Space,Str "supported",Space,Str "and",Space,Str "the",Space,Str "test",Space,Str "fails.",Space,RawInline (Format "html") "</video>"]
139+,Para [Str "If",Space,Str "subtitles",Space,Str "appear",Space,Str "during",Space,Str "the",Space,Str "first",Space,Str "10s",Space,Str "of",Space,Str "video",Space,Str "playback,",Space,Str "or",Space,Str "can",Space,Str "be",Space,Str "turned",Space,Str "on",Space,Str "from",Space,Str "the",Space,Str "player",Space,Str "interface,",Space,Str "the",Space,Str "test",Space,Str "passes."]
140+,RawBlock (Format "html") "</section>"
141+,RawBlock (Format "html") "<section id=\"video-080\" class=\"otest\">"
142+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[OPTIONAL]"],Space,Span ("",["test-id"],[]) [Str "video-080"],Space,Str "The",Space,Code ("",[],[]) "video",Space,Str "element:",Space,Str "Subtitles",Space,Str "(TTML)"]
143+,Para [Str "Tests",Space,Str "whether",Space,Str "TTML",Space,Str "subtitles",Space,Str "are",Space,Str "supported",Space,Str "in",Space,Str "the",Space,Str "HTML5",Space,Code ("",[],[]) "video",Space,Str "element:"]
144+,Para [RawInline (Format "html") "<video controls width=\"278\" height=\"240\">",Space,RawInline (Format "html") "<source src=\"../video/screencast.mp4\" type=\"video/mp4\">",RawInline (Format "html") "</source>",Space,RawInline (Format "html") "<source src=\"../video/screencast.webm\" type=\"video/webm\">",RawInline (Format "html") "</source>",Space,RawInline (Format "html") "<track kind=\"subtitles\" src=\"../video/tracks/screencast.ttml\" srclang=\"en\" label=\"English\" default=\"default\">",RawInline (Format "html") "</track>",Space,Str "If",Space,Str "this",Space,Str "text",Space,Str "is",Space,Str "rendered,",Space,Str "the",Space,Str "video",Space,Str "element",Space,Str "is",Space,Str "not",Space,Str "supported",Space,Str "and",Space,Str "the",Space,Str "test",Space,Str "fails.",Space,RawInline (Format "html") "</video>"]
145+,Para [Str "If",Space,Str "subtitles",Space,Str "appear",Space,Str "during",Space,Str "the",Space,Str "first",Space,Str "10s",Space,Str "of",Space,Str "video",Space,Str "playback,",Space,Str "or",Space,Str "can",Space,Str "be",Space,Str "turned",Space,Str "on",Space,Str "from",Space,Str "the",Space,Str "player",Space,Str "interface,",Space,Str "the",Space,Str "test",Space,Str "passes."]
146+,RawBlock (Format "html") "</section>"
147+,RawBlock (Format "html") "</section>"
148+,Para [Span ("content-multimedia-003.xhtml",[],[]) []]
149+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
150+,RawBlock (Format "html") "<section>"
151+,Header 3 ("content-multimedia-003.xhtml#trigger",[],[]) [Code ("",[],[]) "epub:trigger"]
152+,RawBlock (Format "html") "<section id=\"trigger-010\" class=\"ctest\">"
153+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "trigger-010"],Space,Str "The",Space,Code ("",[],[]) "trigger",Space,Str "element:",Space,Str "play"]
154+,Para [Str "Tests",Space,Str "whether",Space,Str "playback",Space,Str "of",Space,Str "multimedia",Space,Str "content",Space,Str "by",Space,Code ("",[],[]) "epub:trigger",Space,Str "elements",Space,Str "is",Space,Str "supported."]
155+,Para [RawInline (Format "html") "<audio controls src=\"../audio/allison64.mp3\" id=\"audio01\">",Space,Str "If",Space,Str "this",Space,Str "text",Space,Str "is",Space,Str "rendered,",Space,Str "the",Space,Str "audio",Space,Str "element",Space,Str "is",Space,Str "not",Space,Str "supported",Space,Str "and",Space,Str "the",Space,Str "test",Space,Str "fails.",Space,RawInline (Format "html") "</audio>",Space,RawInline (Format "html") "<trigger observer=\"play-button\" event=\"click\" action=\"play\" ref=\"audio01\">",RawInline (Format "html") "</trigger>"]
156+,Div ("",["trigger-ctrl"],[]) [Plain [Span ("content-multimedia-003.xhtml#play-button",[],[("aria-controls","audio01"),("role","button"),("tabindex","0")]) [Str "play"],LineBreak]]
157+,Para [Str "If",Space,Str "the",Space,Str "\"play\"",Space,Str "button",Space,Str "initiates",Space,Str "playback",Space,Str "of",Space,Str "the",Space,Str "audio",Space,Str "clip",Space,Str "from",Space,Str "00:00:00,",Space,Str "including",Space,Str "when",Space,Str "pressed",Space,Str "during",Space,Str "playback",Space,Str "or",Space,Str "after",Space,Str "pausing,",Space,Str "the",Space,Str "test",Space,Str "passes."]
158+,RawBlock (Format "html") "</section>"
159+,RawBlock (Format "html") "<section id=\"trigger-020\" class=\"ctest\">"
160+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "trigger-020"],Space,Str "The",Space,Code ("",[],[]) "trigger",Space,Str "element:",Space,Str "pause/resume"]
161+,Para [Str "Tests",Space,Str "whether",Space,Str "pausing",Space,Str "and",Space,Str "resumption",Space,Str "of",Space,Str "multimedia",Space,Str "content",Space,Str "by",Space,Code ("",[],[]) "epub:trigger",Space,Str "elements",Space,Str "is",Space,Str "supported."]
162+,Para [RawInline (Format "html") "<audio controls src=\"../audio/allison64.mp3\" id=\"audio02\">",Space,Str "If",Space,Str "this",Space,Str "text",Space,Str "is",Space,Str "rendered,",Space,Str "the",Space,Str "audio",Space,Str "element",Space,Str "is",Space,Str "not",Space,Str "supported",Space,Str "and",Space,Str "the",Space,Str "test",Space,Str "fails.",Space,RawInline (Format "html") "</audio>",Space,RawInline (Format "html") "<trigger observer=\"pause-button\" event=\"click\" action=\"pause\" ref=\"audio02\">",RawInline (Format "html") "</trigger>",Space,RawInline (Format "html") "<trigger observer=\"resume-button\" event=\"click\" action=\"resume\" ref=\"audio02\">",RawInline (Format "html") "</trigger>"]
163+,Div ("",["trigger-ctrl"],[]) [Plain [Span ("content-multimedia-003.xhtml#resume-button",[],[("aria-controls","audio02"),("role","button"),("tabindex","0")]) [Str "resume"],Space,Span ("content-multimedia-003.xhtml#pause-button",[],[("aria-controls","audio02"),("role","button"),("tabindex","0")]) [Str "pause"],LineBreak]]
164+,Para [Str "If",Space,Str "the",Space,Str "\"resume\"",Space,Str "button",Space,Str "(re)starts",Space,Str "playback",Space,Str "of",Space,Str "the",Space,Str "audio",Space,Str "clip",Space,Str "and",Space,Str "the",Space,Str "\"pause\"",Space,Str "button",Space,Str "halts",Space,Str "it,",Space,Str "the",Space,Str "test",Space,Str "passes."]
165+,RawBlock (Format "html") "</section>"
166+,RawBlock (Format "html") "<section id=\"trigger-030\" class=\"ctest\">"
167+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "trigger-030"],Space,Str "The",Space,Code ("",[],[]) "trigger",Space,Str "element:",Space,Str "mute/unmute"]
168+,Para [Str "Tests",Space,Str "whether",Space,Str "muting",Space,Str "and",Space,Str "unmuting",Space,Str "of",Space,Str "multimedia",Space,Str "content",Space,Str "by",Space,Code ("",[],[]) "epub:trigger",Space,Str "elements",Space,Str "is",Space,Str "supported."]
169+,Para [RawInline (Format "html") "<audio controls src=\"../audio/allison64.mp3\" id=\"audio03\">",Space,Str "If",Space,Str "this",Space,Str "text",Space,Str "is",Space,Str "rendered,",Space,Str "the",Space,Str "audio",Space,Str "element",Space,Str "is",Space,Str "not",Space,Str "supported",Space,Str "and",Space,Str "the",Space,Str "test",Space,Str "fails.",Space,RawInline (Format "html") "</audio>",Space,RawInline (Format "html") "<trigger observer=\"mute-button\" event=\"click\" action=\"mute\" ref=\"audio03\">",RawInline (Format "html") "</trigger>",Space,RawInline (Format "html") "<trigger observer=\"unmute-button\" event=\"click\" action=\"unmute\" ref=\"audio03\">",RawInline (Format "html") "</trigger>"]
170+,Div ("",["trigger-ctrl"],[]) [Plain [Span ("content-multimedia-003.xhtml#mute-button",[],[("aria-controls","audio03"),("role","button"),("tabindex","0")]) [Str "mute"],Space,Span ("content-multimedia-003.xhtml#unmute-button",[],[("aria-controls","audio03"),("role","button"),("tabindex","0")]) [Str "unmute"],LineBreak]]
171+,Para [Str "After",Space,Str "initiating",Space,Str "playback",Space,Str "of",Space,Str "the",Space,Str "audio",Space,Str "clip,",Space,Str "if",Space,Str "the",Space,Str "\"mute\"",Space,Str "button",Space,Str "silences",Space,Str "the",Space,Str "audio",Space,Str "track",Space,Str "and",Space,Str "\"unmute\"",Space,Str "re-enables",Space,Str "it",Space,Str "(at",Space,Str "the",Space,Str "same",Space,Str "volume",Space,Str "as",Space,Str "before),",Space,Str "the",Space,Str "test",Space,Str "passes."]
172+,RawBlock (Format "html") "</section>"
173+,RawBlock (Format "html") "<section id=\"trigger-040\" class=\"ctest\">"
174+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "trigger-040"],Space,Str "The",Space,Code ("",[],[]) "trigger",Space,Str "element:",Space,Str "hide/show"]
175+,Para [Str "Tests",Space,Str "whether",Space,Str "content",Space,Str "can",Space,Str "be",Space,Str "hidden",Space,Str "and",Space,Str "revealed",Space,Str "by",Space,Code ("",[],[]) "epub:trigger",Space,Str "elements."]
176+,Para [RawInline (Format "html") "<audio controls src=\"../audio/allison64.mp3\" id=\"audio04\">",Space,Str "If",Space,Str "this",Space,Str "text",Space,Str "is",Space,Str "rendered,",Space,Str "the",Space,Str "audio",Space,Str "element",Space,Str "is",Space,Str "not",Space,Str "supported",Space,Str "and",Space,Str "the",Space,Str "test",Space,Str "fails.",Space,RawInline (Format "html") "</audio>",Space,RawInline (Format "html") "<trigger observer=\"hide-button\" event=\"click\" action=\"hide\" ref=\"audio04\">",RawInline (Format "html") "</trigger>",Space,RawInline (Format "html") "<trigger observer=\"show-button\" event=\"click\" action=\"show\" ref=\"audio04\">",RawInline (Format "html") "</trigger>"]
177+,Div ("",["trigger-ctrl"],[]) [Plain [Span ("content-multimedia-003.xhtml#hide-button",[],[("aria-controls","audio04"),("role","button"),("tabindex","0")]) [Str "hide"],Space,Span ("content-multimedia-003.xhtml#show-button",[],[("aria-controls","audio04"),("role","button"),("tabindex","0")]) [Str "show"],LineBreak]]
178+,Para [Str "If",Space,Str "the",Space,Str "\"hide\"",Space,Str "button",Space,Str "hides",Space,Str "the",Space,Str "audio",Space,Str "player",Space,Str "and",Space,Str "the",Space,Str "\"show\"",Space,Str "button",Space,Str "reveals",Space,Str "it,",Space,Str "the",Space,Str "test",Space,Str "passes."]
179+,RawBlock (Format "html") "</section>"
180+,RawBlock (Format "html") "</section>"
181+,Para [Span ("content-ns-001.xhtml",[],[]) []]
182+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
183+,RawBlock (Format "html") "<section>"
184+,Header 2 ("content-ns-001.xhtml#ns",[],[]) [Str "Namespace",Space,Str "Support"]
185+,RawBlock (Format "html") "<section id=\"namespace-010\" class=\"ctest\">"
186+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "namespace-010"],Space,Str "Prefixes"]
187+,Para [Str "Tests",Space,Str "that",Space,Str "namespace",Space,Str "prefix",Space,Str "support",Space,Str "is",Space,Str "not",Space,Str "hard-coded",Space,Str "into",Space,Str "the",Space,Str "application."]
188+,Para [RawInline (Format "html") "<svg width=\"100\" height=\"100\" version=\"1.1\">",Space,RawInline (Format "html") "<circle cx=\"50\" cy=\"50\" r=\"40\" style=\"fill:#000\">",RawInline (Format "html") "</circle>",Space,RawInline (Format "html") "</svg>"]
189+,Para [Str "If",Space,Str "a",Space,Str "black",Space,Str "circle",Space,Str "is",Space,Str "rendered",Space,Str "before",Space,Str "this",Space,Str "paragraph,",Space,Str "the",Space,Str "test",Space,Str "passes."]
190+,Para [Str "If",Space,Str "SVG",Space,Str "is",Space,Str "not",Space,Str "supported,",Space,Str "this",Space,Str "test",Space,Str "will",Space,Str "fail",Space,Str "regardless",Space,Str "of",Space,Str "actual",Space,Str "namespace",Space,Str "prefix",Space,Str "support.",Space,Str "Prefix",Space,Str "support",Space,Str "will",Space,Str "need",Space,Str "to",Space,Str "be",Space,Str "manually",Space,Str "tested",Space,Str "against",Space,Str "a",Space,Str "supported",Space,Str "namespace."]
191+,RawBlock (Format "html") "</section>"
192+,RawBlock (Format "html") "</section>"
193+,Para [Span ("content-mathml-001.xhtml",[],[]) []]
194+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"utf-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
195+,RawBlock (Format "html") "<section>"
196+,Header 2 ("content-mathml-001.xhtml#mathml",[],[]) [Str "MathML"]
197+,RawBlock (Format "html") "<section id=\"mathml-010\" class=\"ctest\">"
198+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "mathml-010"],Space,Str "Rendering"]
199+,Para [Str "Tests",Space,Str "whether",Space,Str "MathML",Space,Str "equation",Space,Str "rendering",Space,Str "is",Space,Str "supported."]
200+,Para [Math DisplayMath "\\int_{-\\mathrm{\8734}}^{\\mathrm{\8734}}e^{-x^{2}} dx=\\sqrt{\\pi}",Space,Math DisplayMath "\\underset{n=1}{\\overset{\\mathrm{\8734}}{\\sum}}\\frac{1}{n^{2}}=\\frac{\\pi^{2}}{6}",Space,Math DisplayMath "x=\\frac{-b\\pm\\sqrt{b^{2}-4ac}}{2a}"]
201+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "equations",Space,Str "are",Space,Str "not",Space,Str "presented",Space,Str "as",Space,Str "linear",Space,Str "text",Space,Str "(e.g.,",Space,Str "x=-b\177b2-4ac2a),",Space,Str "the",Space,Str "test",Space,Str "passes."]
202+,RawBlock (Format "html") "</section>"
203+,RawBlock (Format "html") "<section id=\"mathml-020\" class=\"otest\">"
204+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[OPTIONAL]"],Space,Span ("",["test-id"],[]) [Str "mathml-020"],Space,Str "CSS",Space,Str "Styling",Space,Str "of",Space,Str "the",Space,Code ("",[],[]) "math",Space,Str "element"]
205+,Para [Str "Tests",Space,Str "whether",Space,Str "basic",Space,Str "CSS",Space,Str "styling",Space,Str "of",Space,Str "MathML",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "the",Space,Code ("",[],[]) "math",Space,Str "element."]
206+,Para [Math InlineMath "{2x}{+y-z}"]
207+,Para [Str "The",Space,Str "test",Space,Str "passes",Space,Str "if",Space,Str "the",Space,Str "equation",Space,Str "has",Space,Str "a",Space,Str "yellow",Space,Str "background",Space,Str "and",Space,Str "a",Space,Str "dashed",Space,Str "border."]
208+,Para [Str "If",Space,Str "the",Space,Str "reading",Space,Str "system",Space,Str "does",Space,Str "not",Space,Str "have",Space,Str "a",Space,Str "viewport,",Space,Str "or",Space,Str "does",Space,Str "not",Space,Str "support",Space,Str "CSS",Space,Str "styles,",Space,Str "this",Space,Str "test",Space,Str "should",Space,Str "be",Space,Str "marked",Space,Code ("",[],[]) "Not Supported",Str "."]
209+,RawBlock (Format "html") "</section>"
210+,RawBlock (Format "html") "<section id=\"mathml-021\" class=\"otest\">"
211+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[OPTIONAL]"],Space,Span ("",["test-id"],[]) [Str "mathml-021"],Space,Str "CSS",Space,Str "Styling",Space,Str "of",Space,Str "the",Space,Code ("",[],[]) "mo",Space,Str "element"]
212+,Para [Str "Tests",Space,Str "whether",Space,Str "basic",Space,Str "CSS",Space,Str "styling",Space,Str "of",Space,Str "MathML",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "the",Space,Code ("",[],[]) "mo",Space,Str "element."]
213+,Para [Math InlineMath "{2x}{+y-z}"]
214+,Para [Str "The",Space,Str "test",Space,Str "passes",Space,Str "if",Space,Str "the",Space,Str "operators",Space,Str "are",Space,Str "enlarged",Space,Str "relative",Space,Str "to",Space,Str "the",Space,Str "other",Space,Str "symbols",Space,Str "and",Space,Str "numbers."]
215+,Para [Str "If",Space,Str "the",Space,Str "reading",Space,Str "system",Space,Str "does",Space,Str "not",Space,Str "have",Space,Str "a",Space,Str "viewport,",Space,Str "or",Space,Str "does",Space,Str "not",Space,Str "support",Space,Str "CSS",Space,Str "styles,",Space,Str "this",Space,Str "test",Space,Str "should",Space,Str "be",Space,Str "marked",Space,Code ("",[],[]) "Not Supported",Str "."]
216+,RawBlock (Format "html") "</section>"
217+,RawBlock (Format "html") "<section id=\"mathml-022\" class=\"otest\">"
218+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[OPTIONAL]"],Space,Span ("",["test-id"],[]) [Str "mathml-022"],Space,Str "CSS",Space,Str "Styling",Space,Str "of",Space,Str "the",Space,Code ("",[],[]) "mi",Space,Str "element"]
219+,Para [Str "Tests",Space,Str "whether",Space,Str "basic",Space,Str "CSS",Space,Str "styling",Space,Str "of",Space,Str "MathML",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "the",Space,Code ("",[],[]) "mi",Space,Str "element."]
220+,Para [Math InlineMath "{2x}{+y-z}"]
221+,Para [Str "The",Space,Str "test",Space,Str "passes",Space,Str "if",Space,Str "the",Space,Str "identifiers",Space,Str "are",Space,Str "bolded",Space,Str "and",Space,Str "blue."]
222+,Para [Str "If",Space,Str "the",Space,Str "reading",Space,Str "system",Space,Str "does",Space,Str "not",Space,Str "have",Space,Str "a",Space,Str "viewport,",Space,Str "or",Space,Str "does",Space,Str "not",Space,Str "support",Space,Str "CSS",Space,Str "styles,",Space,Str "this",Space,Str "test",Space,Str "should",Space,Str "be",Space,Str "marked",Space,Code ("",[],[]) "Not Supported",Str "."]
223+,RawBlock (Format "html") "</section>"
224+,RawBlock (Format "html") "<section id=\"mathml-023\" class=\"otest\">"
225+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[OPTIONAL]"],Space,Span ("",["test-id"],[]) [Str "mathml-023"],Space,Str "CSS",Space,Str "Styling",Space,Str "of",Space,Str "the",Space,Code ("",[],[]) "mn",Space,Str "element"]
226+,Para [Str "Tests",Space,Str "whether",Space,Str "basic",Space,Str "CSS",Space,Str "styling",Space,Str "of",Space,Str "MathML",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "the",Space,Code ("",[],[]) "mn",Space,Str "element."]
227+,Para [Math InlineMath "{2x}{+y-z}"]
228+,Para [Str "The",Space,Str "test",Space,Str "passes",Space,Str "if",Space,Str "the",Space,Str "number",Space,Str "2",Space,Str "is",Space,Str "italicized",Space,Str "and",Space,Str "blue."]
229+,Para [Str "If",Space,Str "the",Space,Str "reading",Space,Str "system",Space,Str "does",Space,Str "not",Space,Str "have",Space,Str "a",Space,Str "viewport,",Space,Str "or",Space,Str "does",Space,Str "not",Space,Str "support",Space,Str "CSS",Space,Str "styles,",Space,Str "this",Space,Str "test",Space,Str "should",Space,Str "be",Space,Str "marked",Space,Code ("",[],[]) "Not Supported",Str "."]
230+,RawBlock (Format "html") "</section>"
231+,RawBlock (Format "html") "<section id=\"mathml-024\" class=\"ctest\">"
232+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "mathml-024"],Str "Horizontal",Space,Str "stretch,",Space,Code ("",[],[]) "mover",Str ",",Space,Code ("",[],[]) "munder",Str ",",Space,Str "and",Space,Code ("",[],[]) "mspace",Space,Str "elements"]
233+,Para [Str "Tests",Space,Str "whether",Space,Str "horizontal",Space,Str "stretch,",Space,Code ("",[],[]) "mover",Str ",",Space,Code ("",[],[]) "munder",Str ",",Space,Code ("",[],[]) "mspace",Space,Str "elements",Space,Str "are",Space,Str "supported."]
234+,Para [Math DisplayMath "c=\\overset{\\mathrm{complex\\ number}}{\\overbrace{\\underset{\\mathrm{real}}{\\underbrace{\\qquad a\\qquad}}+\\underset{\\mathrm{imaginary}}{\\underbrace{\\quad bi\\quad}}}}"]
235+,Para [Str "The",Space,Str "test",Space,Str "passes",Space,Str "if",Space,Str "the",Space,Str "rendering",Space,Str "looks",Space,Str "like",Space,Image [Str "description",Space,Str "of",Space,Str "imaginary",Space,Str "number:",Space,Str "c",Space,Str "=",Space,Str "a",Space,Str "+bi",Space,Str "with",Space,Str "an",Space,Str "overbrace",Space,Str "reading",Space,Str "'complex",Space,Str "number'",Space,Str "and",Space,Str "underbraces",Space,Str "below",Space,Str "'a'",Space,Str "and",Space,Str "'b",Space,Str "i'",Space,Str "reading",Space,Str "'real'",Space,Str "and",Space,Str "'imaginary'",Space,Str "respectively."] ("complex_number.png",""),Str "."]
236+,RawBlock (Format "html") "</section>"
237+,RawBlock (Format "html") "<section id=\"mathml-025\" class=\"ctest\">"
238+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "mathml-025"],Str "Testing",Space,Code ("",[],[]) "mtable",Space,Str "with",Space,Code ("",[],[]) "colspan",Space,Str "and",Space,Code ("",[],[]) "rowspan",Space,Str "attributes,",Space,Str "Hebrew",Space,Str "and",Space,Str "Script",Space,Str "fonts"]
239+,Para [Str "Tests",Space,Str "whether",Space,Code ("",[],[]) "mtable",Space,Str "with",Space,Code ("",[],[]) "colspan",Space,Str "and",Space,Code ("",[],[]) "mspace",Space,Str "attributes",Space,Str "(colum",Space,Str "and",Space,Str "row",Space,Str "spanning)",Space,Str "are",Space,Str "supported;",Space,Str "uses",Space,Str "Hebrew",Space,Str "and",Space,Str "Script",Space,Str "alphabets."]
240+,Para [Math DisplayMath "\\begin{array}{llllllllll}\n & \\operatorname{cov}\\left(\\operatorname{\\mathcal{L}}\\right) & \\longrightarrow & \\operatorname{non}\\left(\\operatorname{\\mathcal{K}}\\right) & \\longrightarrow & \\operatorname{cof}\\left(\\operatorname{\\mathcal{K}}\\right) & \\longrightarrow & \\operatorname{cof}\\left(\\operatorname{\\mathcal{L}}\\right) & \\longrightarrow & 2^{\\aleph_{0}} \\\\\n & \\uparrow & & \\uparrow & & \\uparrow & & \\uparrow & & \\\\\n & \\operatorname{\\mathfrak{b}} & \\longrightarrow & \\operatorname{\\mathfrak{d}} & & & & & & \\\\\n & \\uparrow & & \\uparrow & & & & & & \\\\\n\\aleph_{1} & \\longrightarrow & \\operatorname{add}\\left(\\operatorname{\\mathcal{L}}\\right) & \\longrightarrow & \\operatorname{add}\\left(\\operatorname{\\mathcal{K}}\\right) & \\longrightarrow & \\operatorname{cov}\\left(\\operatorname{\\mathcal{K}}\\right) & \\longrightarrow & \\operatorname{non}\\left(\\operatorname{\\mathcal{L}}\\right) & \\\\\n\\end{array}"]
241+,Para [Str "The",Space,Str "test",Space,Str "passes",Space,Str "if",Space,Str "the",Space,Str "rendering",Space,Str "looks",Space,Str "like",Space,Link [Str "Cicho\324's",Space,Str "Diagram"] ("Cicho%C5%84's_diagram",""),Str ":",Space,Image [Str "rendering",Space,Str "of",Space,Str "Cicho\324's",Space,Str "diagram."] ("cichons_diagram.png",""),Str "."]
242+,RawBlock (Format "html") "</section>"
243+,RawBlock (Format "html") "<section id=\"mathml-026\" class=\"ctest\">"
244+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "mathml-026"],Str "BiDi,",Space,Str "RTL",Space,Str "and",Space,Str "Arabic",Space,Str "alphabets"]
245+,Para [Str "Tests",Space,Str "whether",Space,Str "right-to-left",Space,Str "and",Space,Str "Arabic",Space,Str "alphabets",Space,Str "are",Space,Str "supported."]
246+,Para [Math DisplayMath "{d{\\left(s\\right)}}={\\left\\{\\begin{array}{ll}\n{\\underset{\\operatorname{\\lbrack?\\rbrack}=1}{\\overset{S}{\\sum}}s^{\\operatorname{\\lbrack?\\rbrack}}} & {\\mathrm{\1573\1584\1575\1603\1575\1606}s>0} \\\\\n{\\int_{1}^{S}{s^{\\operatorname{\\lbrack?\\rbrack}}\\operatorname{}s}} & {\\mathrm{\1573\1584\1575\1603\1575\1606}s\\in m} \\\\\n{T\\pi} & {\\mathrm{\1594\1610\1585\1584\1604\1603}{\\left(\\mathrm{\1605\1593}\\pi\\simeq 3,141\\right)}} \\\\\n\\end{array}\\right.}"]
247+,Para [Str "The",Space,Str "test",Space,Str "passes",Space,Str "if",Space,Str "the",Space,Str "rendering",Space,Str "looks",Space,Str "like",Space,Str "the",Space,Str "following",Space,Str "image:",Space,Image [Str "a",Space,Str "piecewise",Space,Str "defined",Space,Str "function",Space,Str "in",Space,Str "Maghreb-style",Space,Str "notation"] ("Maghreb1.png",""),Str "."]
248+,RawBlock (Format "html") "</section>"
249+,RawBlock (Format "html") "<section id=\"mathml-027\" class=\"ctest\">"
250+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "mathml-027"],Str "Elementary",Space,Str "math:",Space,Str "long",Space,Str "division",Space,Str "notation"]
251+,Para [Str "Tests",Space,Str "whether",Space,Code ("",[],[]) "mlongdiv",Space,Str "elements",Space,Str "(from",Space,Str "elementary",Space,Str "math)",Space,Str "are",Space,Str "supported."]
252+,Para [Str "The",Space,Str "test",Space,Str "passes",Space,Str "if",Space,Str "the",Space,Str "rendering",Space,Str "looks",Space,Str "like",Space,Str "the",Space,Str "following",Space,Str "image:",Space,Image [Str "A",Space,Str "long",Space,Str "division",Space,Str "dividing",Space,Str "1306",Space,Str "by",Space,Str "3,",Space,Str "presented",Space,Str "in",Space,Str "'lefttop'",Space,Str "(US)",Space,Str "notation"] ("ElementaryMathExample.png",""),Str "."]
253+,RawBlock (Format "html") "</section>"
254+,RawBlock (Format "html") "<section id=\"mathml-028\" class=\"ctest\">"
255+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "mathml-028"],Str "Multiscripts,",Space,Str "Greek",Space,Str "and",Space,Str "Gothic",Space,Str "alphabets"]
256+,Para [Str "Tests",Space,Str "whether",Space,Code ("",[],[]) "mmultiscript",Space,Str "elements",Space,Str "as",Space,Str "well",Space,Str "as",Space,Str "Greek",Space,Str "and",Space,Str "Gothic",Space,Str "alphabets",Space,Str "are",Space,Str "supported."]
257+,Para [Math DisplayMath "\\underset{}{\\overset{}{}}"]
258+,Para [Str "The",Space,Str "test",Space,Str "passes",Space,Str "if",Space,Str "the",Space,Str "rendering",Space,Str "looks",Space,Str "like",Space,Str "the",Space,Str "following",Space,Str "image:",Space,Image [Str "a",Space,Str "large",Space,Str "capital",Space,Str "Pi",Space,Str "with",Space,Str "Gothic",Space,Str "characters",Space,Str "as",Space,Str "multiscripts",Space,Str "which",Space,Str "in",Space,Str "turn",Space,Str "have",Space,Str "Greek",Space,Str "multiscripts"] ("multiscripts_and_greek_alphabet.png",""),Str "."]
259+,RawBlock (Format "html") "</section>"
260+,RawBlock (Format "html") "</section>"
261+,Para [Span ("content-svg-001.xhtml",[],[]) []]
262+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
263+,RawBlock (Format "html") "<section id=\"svg\">"
264+,Header 2 ("",[],[]) [Str "SVG"]
265+,RawBlock (Format "html") "<section id=\"svg-shapes\">"
266+,Header 3 ("",[],[]) [Str "Shapes"]
267+,RawBlock (Format "html") "<section id=\"svg-010\" class=\"ctest\">"
268+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-010"],Space,Str "Circle"]
269+,Para [Str "Tests",Space,Str "whether",Space,Str "simple",Space,Str "vector",Space,Str "shapes",Space,Str "are",Space,Str "supported",Space,Str "by",Space,Str "drawing",Space,Str "a",Space,Str "circle."]
270+,Para [RawInline (Format "html") "<svg width=\"100\" height=\"100\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">",Space,RawInline (Format "html") "<circle cx=\"50\" cy=\"50\" r=\"40\" style=\"fill:#000\">",RawInline (Format "html") "</circle>",Space,RawInline (Format "html") "</svg>"]
271+,Para [Str "If",Space,Str "a",Space,Str "black",Space,Str "circle",Space,Str "is",Space,Str "rendered",Space,Str "before",Space,Str "this",Space,Str "paragraph,",Space,Str "the",Space,Str "test",Space,Str "passes."]
272+,RawBlock (Format "html") "</section>"
273+,RawBlock (Format "html") "<section id=\"svg-020\" class=\"ctest\">"
274+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-020"],Space,Str "Transformation"]
275+,Para [Str "Tests",Space,Str "whether",Space,Str "simple",Space,Str "vector",Space,Str "shape",Space,Str "transformations",Space,Str "are",Space,Str "supported",Space,Str "by",Space,Str "transforming",Space,Str "a",Space,Str "square",Space,Str "into",Space,Str "a",Space,Str "diamond."]
276+,Para [RawInline (Format "html") "<svg width=\"100\" height=\"100\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">",Space,RawInline (Format "html") "<rect x=\"25\" y=\"25\" width=\"50\" height=\"50\" transform=\"translate(50 12.5) scale(1 0.5) rotate(45)\">",RawInline (Format "html") "</rect>",Space,RawInline (Format "html") "</svg>"]
277+,Para [Str "If",Space,Str "a",Space,Str "black",Space,Str "diamond",Space,Str "is",Space,Str "rendered",Space,Str "before",Space,Str "this",Space,Str "paragraph,",Space,Str "the",Space,Str "test",Space,Str "passes."]
278+,RawBlock (Format "html") "</section>"
279+,RawBlock (Format "html") "</section>"
280+,RawBlock (Format "html") "</section>"
281+,Para [Span ("content-svg-002.xhtml",[],[]) []]
282+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
283+,RawBlock (Format "html") "<section id=\"svg-text\">"
284+,Header 3 ("",[],[]) [Str "Text",Space,Str "content"]
285+,RawBlock (Format "html") "<section id=\"svg-text-styling\">"
286+,Header 4 ("",[],[]) [Str "Styling"]
287+,RawBlock (Format "html") "<section id=\"svg-110\" class=\"ctest\">"
288+,Header 5 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-110"],Space,Code ("",[],[]) "letter-spacing"]
289+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "letter-spacing",Space,Str "attribute",Space,Str "is",Space,Str "supported."]
290+,Para [RawInline (Format "html") "<svg width=\"100%\" height=\"100\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">",Space,RawInline (Format "html") "<g>",Space,RawInline (Format "html") "<text x=\"3\" y=\"20\" letter-spacing=\"-1\">",Str "letter-spacing",Space,Str "set",Space,Str "to",Space,Str "-1",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "<text x=\"3\" y=\"50\">",Str "default",Space,Str "letter-spacing",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "<text x=\"3\" y=\"80\" letter-spacing=\"3\">",Str "letter-spacing",Space,Str "set",Space,Str "to",Space,Str "3",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "</g>",Space,RawInline (Format "html") "</svg>"]
291+,Para [Str "If",Space,Str "the",Space,Str "space",Space,Str "between",Space,Str "letters",Space,Str "is",Space,Str "different",Space,Str "for",Space,Str "each",Space,Str "line,",Space,Str "the",Space,Str "test",Space,Str "passes."]
292+,RawBlock (Format "html") "</section>"
293+,RawBlock (Format "html") "<section id=\"svg-120\" class=\"ctest\">"
294+,Header 5 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-120"],Space,Code ("",[],[]) "word-spacing"]
295+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "word-spacing",Space,Str "attribute",Space,Str "is",Space,Str "supported."]
296+,Para [RawInline (Format "html") "<svg width=\"100%\" height=\"100\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">",Space,RawInline (Format "html") "<g>",Space,RawInline (Format "html") "<text x=\"3\" y=\"20\" word-spacing=\"-3\">",Str "word-spacing",Space,Str "set",Space,Str "to",Space,Str "-3",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "<text x=\"3\" y=\"50\">",Str "default",Space,Str "word-spacing",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "<text x=\"3\" y=\"80\" word-spacing=\"8\">",Str "word-spacing",Space,Str "set",Space,Str "to",Space,Str "8",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "</g>",Space,RawInline (Format "html") "</svg>"]
297+,Para [Str "If",Space,Str "the",Space,Str "space",Space,Str "between",Space,Str "words",Space,Str "is",Space,Str "different",Space,Str "for",Space,Str "each",Space,Str "line,",Space,Str "the",Space,Str "test",Space,Str "passes."]
298+,RawBlock (Format "html") "</section>"
299+,RawBlock (Format "html") "<section id=\"svg-130\" class=\"ctest\">"
300+,Header 5 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-130"],Space,Code ("",[],[]) "font-size"]
301+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "font-size",Space,Str "attribute",Space,Str "is",Space,Str "supported."]
302+,Para [RawInline (Format "html") "<svg width=\"100%\" height=\"100\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">",Space,RawInline (Format "html") "<g>",Space,RawInline (Format "html") "<text x=\"3\" y=\"20\">",Str "default",Space,Str "font-size",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "<text x=\"3\" y=\"50\" font-size=\"30\">",Str "font-size",Space,Str "set",Space,Str "to",Space,Str "30",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "<text x=\"3\" y=\"80\" font-size=\"200%\">",Str "The",Space,Str "size",Space,Str "set",Space,Str "to",Space,Str "200%",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "</g>",Space,RawInline (Format "html") "</svg>"]
303+,Para [Str "If",Space,Str "the",Space,Str "size",Space,Str "of",Space,Str "the",Space,Str "two",Space,Str "last",Space,Str "lines",Space,Str "is",Space,Str "different",Space,Str "than",Space,Str "the",Space,Str "first",Space,Str "line,",Space,Str "the",Space,Str "test",Space,Str "passes."]
304+,RawBlock (Format "html") "</section>"
305+,RawBlock (Format "html") "<section id=\"svg-140\" class=\"ctest\">"
306+,Header 5 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-140"],Space,Code ("",[],[]) "font-weight"]
307+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "font-weight",Space,Str "attribute",Space,Str "is",Space,Str "supported."]
308+,Para [RawInline (Format "html") "<svg width=\"100%\" height=\"70\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">",Space,RawInline (Format "html") "<g>",Space,RawInline (Format "html") "<text x=\"3\" y=\"20\">",Str "default",Space,Str "font-weight",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "<text x=\"3\" y=\"50\" font-weight=\"bold\">",Str "font-weight",Space,Str "set",Space,Str "to",Space,Str "bold",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "</g>",Space,RawInline (Format "html") "</svg>"]
309+,Para [Str "If",Space,Str "the",Space,Str "weight",Space,Str "of",Space,Str "the",Space,Str "second",Space,Str "line",Space,Str "is",Space,Str "different",Space,Str "than",Space,Str "the",Space,Str "first",Space,Str "line,",Space,Str "the",Space,Str "test",Space,Str "passes."]
310+,RawBlock (Format "html") "</section>"
311+,RawBlock (Format "html") "<section id=\"svg-150\" class=\"ctest\">"
312+,Header 5 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-150"],Space,Code ("",[],[]) "font-style"]
313+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "font-style",Space,Str "attribute",Space,Str "is",Space,Str "supported."]
314+,Para [RawInline (Format "html") "<svg width=\"100%\" height=\"70\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">",Space,RawInline (Format "html") "<g>",Space,RawInline (Format "html") "<text x=\"3\" y=\"20\">",Str "default",Space,Str "font-style",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "<text x=\"3\" y=\"50\" font-style=\"italic\">",Str "font-style",Space,Str "set",Space,Str "to",Space,Str "italic",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "</g>",Space,RawInline (Format "html") "</svg>"]
315+,Para [Str "If",Space,Str "the",Space,Str "font-style",Space,Str "of",Space,Str "the",Space,Str "second",Space,Str "line",Space,Str "is",Space,Str "different",Space,Str "than",Space,Str "the",Space,Str "first",Space,Str "line,",Space,Str "the",Space,Str "test",Space,Str "passes."]
316+,RawBlock (Format "html") "</section>"
317+,RawBlock (Format "html") "<section id=\"svg-160\" class=\"ctest\">"
318+,Header 5 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-160"],Space,Code ("",[],[]) "text-decoration",Space,Str "attribute"]
319+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "text-decoration",Space,Str "attribute",Space,Str "is",Space,Str "supported."]
320+,Para [RawInline (Format "html") "<svg width=\"100%\" height=\"100\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">",Space,RawInline (Format "html") "<g>",Space,RawInline (Format "html") "<text x=\"3\" y=\"20\">",Str "default",Space,Str "text-decoration",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "<text x=\"3\" y=\"50\" text-decoration=\"underline\">",Str "text-decoration",Space,Str "set",Space,Str "to",Space,Str "underline",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "<text x=\"3\" y=\"80\" text-decoration=\"line-through\">",Str "text-decoration",Space,Str "set",Space,Str "to",Space,Str "line-through",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "</g>",Space,RawInline (Format "html") "</svg>"]
321+,Para [Str "If",Space,Str "the",Space,Str "second",Space,Str "line",Space,Str "is",Space,Str "underlined",Space,Str "and",Space,Str "the",Space,Str "third",Space,Str "has",Space,Str "a",Space,Str "line",Space,Str "through",Space,Str "the",Space,Str "text,",Space,Str "the",Space,Str "test",Space,Str "passes."]
322+,RawBlock (Format "html") "</section>"
323+,RawBlock (Format "html") "</section>"
324+,RawBlock (Format "html") "<section id=\"svg-text-pos\">"
325+,Header 4 ("",[],[]) [Str "Positioning"]
326+,RawBlock (Format "html") "<section id=\"svg-210\" class=\"ctest\">"
327+,Header 5 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-210"],Space,Str "Lines"]
328+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "x",Space,Str "and",Space,Code ("",[],[]) "y",Space,Str "attributes",Space,Str "on",Space,Code ("",[],[]) "text",Space,Str "elements",Space,Str "for",Space,Str "positioning",Space,Str "lines",Space,Str "is",Space,Str "supported."]
329+,Para [RawInline (Format "html") "<svg width=\"100%\" height=\"250\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">",Space,RawInline (Format "html") "<text x=\"2\" y=\"20\">",Str "First",Space,Str "text",Space,Str "line",Space,Str "using",Space,Str "SVG",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "<text x=\"30\" y=\"100\">",Str "Second",Space,Str "text",Space,Str "line",Space,Str "using",Space,Str "SVG",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "<text x=\"80\" y=\"200\">",Str "Third",Space,Str "and",Space,Str "last",Space,Str "text",Space,Str "line",Space,Str "using",Space,Str "SVG",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "</svg>"]
330+,Para [Str "If",Space,Str "the",Space,Str "vertical",Space,Str "alignment",Space,Str "of",Space,Str "the",Space,Str "three",Space,Str "lines",Space,Str "is",Space,Str "different,",Space,Str "the",Space,Str "test",Space,Str "passes."]
331+,RawBlock (Format "html") "</section>"
332+,RawBlock (Format "html") "<section id=\"svg-220\" class=\"ctest\">"
333+,Header 5 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-220"],Space,Str "Words",Space,Str "and",Space,Str "Characters"]
334+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Str "SVG",Space,Str "code",Space,Str "for",Space,Str "positioning",Space,Str "words",Space,Str "or",Space,Str "characters",Space,Str "is",Space,Str "supported",Space,Str "using",Space,Str "the",Space,Code ("",[],[]) "text",Space,Str "and",Space,Code ("",[],[]) "tspan",Space,Str "elements."]
335+,Para [RawInline (Format "html") "<svg width=\"100%\" height=\"100\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">",Space,RawInline (Format "html") "<text x=\"100\" y=\"80\">",Str "This",Space,RawInline (Format "html") "<tspan dy=\"-2\">",Str "i",RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<tspan dy=\"-3\">",Str "s",RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<tspan dy=\"-4\">",RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<tspan dy=\"-5\">",Str "a",RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<tspan dy=\"-6\">",Space,RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<tspan dy=\"-8\">",Str "v",RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<tspan dy=\"-9\">",Str "e",RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<tspan dy=\"-8\">",Str "e",RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<tspan dy=\"-7\">",Str "e",RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<!-- -59 -->",Space,RawInline (Format "html") "<tspan dy=\"9\">",Str "r",RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<tspan dy=\"10\">",Str "y",RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<tspan dy=\"9\">",RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<tspan dy=\"8\">",Str "b",RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<tspan dy=\"7\">",Str "i",RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<tspan dy=\"6\">",Str "i",RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<tspan dy=\"5\">",Str "i",RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<tspan dy=\"3\">",Str "g",RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<tspan dy=\"2\">",Space,RawInline (Format "html") "</tspan>",Space,RawInline (Format "html") "<!-- +59 -->",Space,Str "wave.",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "</svg>"]
336+,Para [Str "If",Space,Str "the",Space,Str "text",Space,Str "\"This",Space,Str "is",Space,Str "a",Space,Str "veeery",Space,Str "biiig",Space,Str "wave\"",Space,Str "rises",Space,Str "and",Space,Str "falls",Space,Str "in",Space,Str "an",Space,Str "arc",Space,Str "like",Space,Str "a",Space,Str "wave,",Space,Str "the",Space,Str "test",Space,Str "passes."]
337+,RawBlock (Format "html") "</section>"
338+,RawBlock (Format "html") "<section id=\"svg-230\" class=\"ctest\">"
339+,Header 5 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-230"],Space,Str "Text:",Space,Code ("",[],[]) "path",Space,Str "element"]
340+,Para [Str "Tests",Space,Str "whether",Space,Str "positioning",Space,Str "text",Space,Str "on",Space,Str "a",Space,Str "path",Space,Str "is",Space,Str "supported."]
341+,Para [RawInline (Format "html") "<svg width=\"100%\" height=\"120\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xlink=\"http://www.w3.org/1999/xlink\">",Space,RawInline (Format "html") "<g>",Space,RawInline (Format "html") "<defs>",Space,RawInline (Format "html") "<path id=\"Path1\" fill=\"none\" stroke=\"black\" d=\"M199 89.3 C206.6 66.6 235.8 13.2 270 30.3 286.6 38.6 298.9 59.4 310 73.3 321.7 87.9 338.6 99 356 103.3 387.3 111.1 396.6 90.4 418 74.3\">",RawInline (Format "html") "</path>",Space,RawInline (Format "html") "</defs>",Space,RawInline (Format "html") "<g id=\"text-on-path-01\">",Space,RawInline (Format "html") "<use href=\"#Path1\">",RawInline (Format "html") "</use>",Space,RawInline (Format "html") "<text>",Space,RawInline (Format "html") "<textpath href=\"#Path1\">",Str "The",Space,Str "text",Space,Str "follows",Space,Str "its",Space,Str "own",Space,Str "path.",Space,Str "Can",Space,Str "you",Space,Str "see",Space,Str "it?",RawInline (Format "html") "</textpath>",Space,RawInline (Format "html") "</text>",Space,RawInline (Format "html") "</g>",Space,RawInline (Format "html") "</g>",Space,RawInline (Format "html") "</svg>"]
342+,Para [Str "If",Space,Str "the",Space,Str "text",Space,Str "follows",Space,Str "a",Space,Str "parabolic",Space,Str "path,",Space,Str "the",Space,Str "test",Space,Str "passes."]
343+,RawBlock (Format "html") "</section>"
344+,RawBlock (Format "html") "<section id=\"svg-240\" class=\"ctest\">"
345+,Header 5 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-240"],Space,Str "Text:",Space,Code ("",[],[]) "text",Space,Str "element",Space,Str "with",Space,Str "multiple",Space,Code ("",[],[]) "x",Space,Str "and",Space,Code ("",[],[]) "y",Space,Str "values"]
346+,Para [Str "Tests",Space,Str "whether",Space,Str "multiple",Space,Str "values",Space,Str "of",Space,Str "the",Space,Code ("",[],[]) "x",Space,Str "and",Space,Code ("",[],[]) "y",Space,Str "attributes",Space,Str "are",Space,Str "supported."]
347+,Para [RawInline (Format "html") "<svg width=\"100%\" height=\"250\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xlink=\"http://www.w3.org/1999/xlink\">",Space,RawInline (Format "html") "<g>",Space,RawInline (Format "html") "<text x=\"160 180 200 220 240 260 280 300 320 340 360\" y=\"30 50 70 90 110 130 150 170 190 210 230\">",Str "Multiple",Space,Str "x",Space,Str "y",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "</g>",Space,RawInline (Format "html") "</svg>"]
348+,Para [Str "If",Space,Str "the",Space,Str "text",Space,Str "goes",Space,Str "down,",Space,Str "the",Space,Str "test",Space,Str "passes."]
349+,RawBlock (Format "html") "</section>"
350+,RawBlock (Format "html") "</section>"
351+,RawBlock (Format "html") "<section id=\"svg-text-rotate\">"
352+,Header 4 ("",[],[]) [Str "Rotating"]
353+,RawBlock (Format "html") "<section id=\"svg-310\" class=\"ctest\">"
354+,Header 5 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-310"],Space,Code ("",[],[]) "rotate"]
355+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "rotate",Space,Str "attribute",Space,Str "is",Space,Str "supported."]
356+,Para [RawInline (Format "html") "<svg width=\"100%\" height=\"100\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xlink=\"http://www.w3.org/1999/xlink\">",Space,RawInline (Format "html") "<g>",Space,RawInline (Format "html") "<text x=\"10\" y=\"50\" rotate=\"0 10 40\">",Str "This",Space,Str "text",Space,Str "is",Space,Str "rotated",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "</g>",Space,RawInline (Format "html") "</svg>"]
357+,Para [Str "If",Space,Str "the",Space,Str "characters",Space,Str "in",Space,Str "the",Space,Str "preceding",Space,Str "sentence",Space,Str "are",Space,Str "rotated,",Space,Str "the",Space,Str "test",Space,Str "passes."]
358+,RawBlock (Format "html") "</section>"
359+,RawBlock (Format "html") "<section id=\"svg-320\" class=\"ctest\">"
360+,Header 5 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-320"],Space,Code ("",[],[]) "transform"]
361+,Para [Str "Tests",Space,Str "whether",Space,Code ("",[],[]) "transform",Space,Str "attribute",Space,Str "(translate",Space,Str "and",Space,Str "rotate",Space,Str "values)",Space,Str "are",Space,Str "supported."]
362+,Para [RawInline (Format "html") "<svg width=\"100%\" height=\"250\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xlink=\"http://www.w3.org/1999/xlink\">",Space,RawInline (Format "html") "<g>",Space,RawInline (Format "html") "<text transform=\"rotate(90) translate(120 -100)\">",Str "90",Space,Str "degrees",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "<text transform=\"rotate(-90) translate(-120 100)\">",Str "-90",Space,Str "degrees",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "<text transform=\"rotate(180) translate(-120 -200)\">",Str "180",Space,Str "degrees",RawInline (Format "html") "</text>",Space,RawInline (Format "html") "</g>",Space,RawInline (Format "html") "</svg>"]
363+,Para [Str "If",Space,Str "each",Space,Str "line",Space,Str "of",Space,Str "text",Space,Str "is",Space,Str "rotated",Space,Str "by",Space,Str "the",Space,Str "degree",Space,Str "it",Space,Str "indicates,",Space,Str "the",Space,Str "test",Space,Str "passes."]
364+,RawBlock (Format "html") "</section>"
365+,RawBlock (Format "html") "</section>"
366+,RawBlock (Format "html") "</section>"
367+,Para [Span ("content-svg-003.xhtml",[],[]) []]
368+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
369+,RawBlock (Format "html") "<section id=\"svg-xhtml-support\">"
370+,Header 3 ("",[],[]) [Str "XHTML",Space,Str "Support"]
371+,RawBlock (Format "html") "<section id=\"svg-410\" class=\"ctest\">"
372+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-410"],Space,Code ("",[],[]) "img"]
373+,Para [Str "Tests",Space,Str "whether",Space,Str "SVG",Space,Str "is",Space,Str "supported",Space,Str "in",Space,Code ("",[],[]) "img",Space,Str "elements."]
374+,Para [Image [Str "a",Space,Str "grey",Space,Str "circle"] ("circle.svg","")]
375+,Para [Str "If",Space,Str "a",Space,Str "grey",Space,Str "circle",Space,Str "is",Space,Str "rendered",Space,Str "before",Space,Str "this",Space,Str "paragraph,",Space,Str "the",Space,Str "test",Space,Str "passes."]
376+,RawBlock (Format "html") "</section>"
377+,RawBlock (Format "html") "<section id=\"svg-420\" class=\"ctest\">"
378+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-420"],Space,Code ("",[],[]) "object"]
379+,Para [Str "Tests",Space,Str "whether",Space,Str "SVG",Space,Str "is",Space,Str "supported",Space,Str "in",Space,Code ("",[],[]) "object",Space,Str "elements."]
380+,Para [RawInline (Format "html") "<object type=\"image/svg+xml\" data=\"../svg/circle.svg\">"]
381+,Para [Str "FAIL"]
382+,Para [RawInline (Format "html") "</object>"]
383+,Para [Str "If",Space,Str "a",Space,Str "circle",Space,Str "is",Space,Str "rendered",Space,Str "before",Space,Str "this",Space,Str "paragraph,",Space,Str "the",Space,Str "test",Space,Str "passes."]
384+,RawBlock (Format "html") "</section>"
385+,RawBlock (Format "html") "<section id=\"svg-430\" class=\"ctest\">"
386+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-430"],Space,Code ("",[],[]) "background-image",Space,Str "(CSS)"]
387+,Para [Str "Tests",Space,Str "whether",Space,Str "SVG",Space,Str "is",Space,Str "supported",Space,Str "when",Space,Str "set",Space,Str "using",Space,Str "the",Space,Str "CSS",Space,Code ("",[],[]) "background-image",Space,Str "property."]
388+,Para [Str "If",Space,Str "a",Space,Str "grey",Space,Str "circle",Space,Str "is",Space,Str "rendered",Space,Str "at",Space,Str "the",Space,Str "right",Space,Str "bottom",Space,Str "of",Space,Str "this",Space,Str "section,",Space,Str "the",Space,Str "test",Space,Str "passes."]
389+,RawBlock (Format "html") "</section>"
390+,RawBlock (Format "html") "</section>"
391+,Para [Span ("content-svg-004.xhtml",[],[]) []]
392+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
393+,RawBlock (Format "html") "<section id=\"svg-image-embed\">"
394+,Header 3 ("",[],[]) [Str "Image",Space,Str "Embedding"]
395+,RawBlock (Format "html") "<section id=\"svg-510\" class=\"ctest\">"
396+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "svg-510"],Space,Str "Bitmaps"]
397+,Para [Str "Tests",Space,Str "whether",Space,Str "bitmap",Space,Str "images",Space,Str "can",Space,Str "be",Space,Str "embedded",Space,Str "in",Space,Str "an",Space,Str "SVG",Space,Str "image."]
398+,Para [RawInline (Format "html") "<svg width=\"100%\" height=\"200\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xlink=\"http://www.w3.org/1999/xlink\">",Space,RawInline (Format "html") "<image x=\"20\" y=\"20\" width=\"182px\" height=\"185px\" href=\"../img/circle.jpg\">",RawInline (Format "html") "</image>",Space,RawInline (Format "html") "</svg>"]
399+,Para [Str "If",Space,Str "a",Space,Str "black",Space,Str "circle",Space,Str "is",Space,Str "rendered",Space,Str "before",Space,Str "this",Space,Str "paragraph,",Space,Str "the",Space,Str "test",Space,Str "passes."]
400+,RawBlock (Format "html") "</section>"
401+,RawBlock (Format "html") "</section>"
402+,Para [Span ("content-fallbacks.xhtml",[],[]) []]
403+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"utf-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
404+,Header 1 ("",[],[]) [Str "Fallbacks"]
405+,Para [Str "This",Space,Str "section",Space,Str "contains",Space,Str "tests",Space,Str "for",Space,Str "Fallbacks."]
406+,Para [Span ("content-bindings-001.xhtml",[],[]) []]
407+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"utf-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
408+,RawBlock (Format "html") "<section id=\"bindings\">"
409+,Header 3 ("",[],[]) [Str "Bindings"]
410+,RawBlock (Format "html") "<section id=\"bindings-010\" class=\"otest\">"
411+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[OPTIONAL]"],Space,Span ("",["test-id"],[]) [Str "bindings-010"],Space,Code ("",[],[]) "bindings"]
412+,Para [Str "Tests",Space,Str "whether",Space,Str "bindings",Space,Str "on",Space,Code ("",[],[]) "object",Str "s",Space,Str "are",Space,Str "supported."]
413+,Para [RawInline (Format "html") "<object data=\"../bindings/slideshow.xml\" type=\"application/x-demo-slideshow\">",Space,RawInline (Format "html") "<param name=\"success\" value=\"PASS\">",RawInline (Format "html") "</param>"]
414+,Para [Str "FAIL"]
415+,Para [Str "The",Space,Str "slideshow",Space,Str "binding",Space,Str "was",Space,Str "not",Space,Str "called"]
416+,Para [RawInline (Format "html") "</object>"]
417+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "paragraph",Space,Str "reads",Space,Str "\"PASS\",",Space,Str "the",Space,Str "test",Space,Str "passes.",Space,Str "Other",Space,Str "messages",Space,Str "may",Space,Str "indicate",Space,Str "partial",Space,Str "support."]
418+,Para [Str "If",Space,Str "the",Space,Str "reading",Space,Str "system",Space,Str "does",Space,Str "not",Space,Str "support",Space,Str "scripting,",Space,Str "this",Space,Str "test",Space,Str "should",Space,Str "be",Space,Str "marked",Space,Code ("",[],[]) "Not Supported",Str "."]
419+,RawBlock (Format "html") "</section>"
420+,RawBlock (Format "html") "</section>"
421+,Para [Span ("content-fallbacks-001.xhtml",[],[]) []]
422+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
423+,RawBlock (Format "html") "<section id=\"fallbacks\">"
424+,Header 2 ("",[],[]) [Str "Fallbacks"]
425+,RawBlock (Format "html") "<section id=\"fallbacks-manifest\">"
426+,Header 3 ("",[],[]) [Str "Manifest"]
427+,RawBlock (Format "html") "<section id=\"fallback-010\" class=\"ctest\">"
428+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "fallback-010"],Space,Str "Image",Space,Str "fallbacks"]
429+,Para [Str "Tests",Space,Str "whether",Space,Str "manifest",Space,Str "fallbacks",Space,Str "for",Space,Str "non-core",Space,Str "image",Space,Str "media",Space,Str "types",Space,Str "are",Space,Str "supported."]
430+,Para [Image [Str "test"] ("nonimage.xyz","")]
431+,Para [Str "If",Space,Str "an",Space,Str "image",Space,Str "of",Space,Str "a",Space,Str "checkmark",Space,Str "is",Space,Str "rendered",Space,Str "before",Space,Str "this",Space,Str "paragraph,",Space,Str "the",Space,Str "test",Space,Str "passes."]
432+,RawBlock (Format "html") "</section>"
433+,RawBlock (Format "html") "<section id=\"fallback-020\" class=\"ctest\">"
434+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "fallback-020"],Space,Str "Inline",Space,Str "frame",Space,Str "fallbacks"]
435+,Para [Str "Tests",Space,Str "whether",Space,Str "manifest",Space,Str "fallbacks",Space,Str "for",Space,Str "non-core",Space,Str "media",Space,Str "types",Space,Str "used",Space,Str "in",Space,Code ("",[],[]) "iframe",Str "s",Space,Str "are",Space,Str "supported."]
436+,Para [RawInline (Format "html") "<iframe src=\"../img/nonimage.xyz\">",RawInline (Format "html") "</iframe>"]
437+,Para [Str "If",Space,Str "an",Space,Str "image",Space,Str "of",Space,Str "a",Space,Str "checkmark",Space,Str "is",Space,Str "rendered",Space,Str "before",Space,Str "this",Space,Str "paragraph,",Space,Str "the",Space,Str "test",Space,Str "passes."]
438+,RawBlock (Format "html") "</section>"
439+,RawBlock (Format "html") "<section id=\"fallback-030\" class=\"ctest\">"
440+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "fallback-030"],Space,Str "Embed",Space,Str "fallbacks"]
441+,Para [Str "Tests",Space,Str "whether",Space,Str "manifest",Space,Str "fallbacks",Space,Str "for",Space,Str "non-core",Space,Str "media",Space,Str "types",Space,Str "used",Space,Str "in",Space,Code ("",[],[]) "embed",Str "s",Space,Str "are",Space,Str "supported."]
442+,RawBlock (Format "html") "<embed src=\"../img/nonimage.xyz\" type=\"image/xyz\">"
443+,RawBlock (Format "html") "</embed>"
444+,Para [Str "If",Space,Str "an",Space,Str "image",Space,Str "of",Space,Str "a",Space,Str "checkmark",Space,Str "is",Space,Str "rendered",Space,Str "before",Space,Str "this",Space,Str "paragraph,",Space,Str "the",Space,Str "test",Space,Str "passes."]
445+,RawBlock (Format "html") "</section>"
446+,RawBlock (Format "html") "</section>"
447+,RawBlock (Format "html") "<section id=\"fallbacks-intrinsic\">"
448+,Header 3 ("",[],[]) [Str "Intrinsic"]
449+,RawBlock (Format "html") "<section id=\"fallback-040\" class=\"ctest\">"
450+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "fallback-040"],Space,Str "Object",Space,Str "fallbacks"]
451+,Para [Str "Tests",Space,Str "whether",Space,Code ("",[],[]) "object",Str "'s",Space,Str "intrinsic",Space,Str "fallback",Space,Str "mechanism",Space,Str "for",Space,Str "non-core",Space,Str "media",Space,Str "types",Space,Str "is",Space,Str "supported."]
452+,Para [RawInline (Format "html") "<object data=\"../img/nonimage.xyz\" type=\"image/xyz\">",Space,RawInline (Format "html") "<object data=\"../img/nonimage.xyz\" type=\"image/xyz\">"]
453+,Para [Str "PASS"]
454+,Para [RawInline (Format "html") "</object>",Space,RawInline (Format "html") "</object>"]
455+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "paragraph",Space,Str "reads",Space,Str "\"PASS\",",Space,Str "the",Space,Str "test",Space,Str "passes."]
456+,RawBlock (Format "html") "</section>"
457+,RawBlock (Format "html") "</section>"
458+,RawBlock (Format "html") "</section>"
459+,Para [Span ("content-switch-001.xhtml",[],[]) []]
460+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
461+,RawBlock (Format "html") "<section id=\"epub-switch\">"
462+,Header 3 ("",[],[]) [Code ("",[],[]) "epub:switch"]
463+,RawBlock (Format "html") "<section id=\"switch-010\" class=\"ctest\">"
464+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "switch-010"],Space,Str "Support"]
465+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "epub:switch",Space,Str "element",Space,Str "is",Space,Str "supported."]
466+,Para [Str "PASS"]
467+,Para [Str "If",Space,Str "only",Space,Str "the",Space,Str "word",Space,Str "\"PASS\"",Space,Str "is",Space,Str "rendered",Space,Str "before",Space,Str "this",Space,Str "paragraph,",Space,Str "the",Space,Str "test",Space,Str "passes.",Space,Str "If",Space,Str "both",Space,Str "\"PASS\"",Space,Str "and",Space,Str "\"FAIL\"",Space,Str "are",Space,Str "rendered,",Space,Str "or",Space,Str "neither",Space,Str "\"PASS\"",Space,Str "nor",Space,Str "\"FAIL\"",Space,Str "is",Space,Str "rendered,",Space,Str "the",Space,Str "test",Space,Str "fails."]
468+,RawBlock (Format "html") "</section>"
469+,RawBlock (Format "html") "<section id=\"switch-020\" class=\"otest\">"
470+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[OPTIONAL]"],Space,Span ("",["test-id"],[]) [Str "switch-020"],Space,Str "MathML",Space,Str "Embedding"]
471+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Str "MathML",Space,Str "namespace",Space,Str "is",Space,Str "recognized",Space,Str "when",Space,Str "used",Space,Str "in",Space,Str "an",Space,Code ("",[],[]) "epub:case",Space,Str "element."]
472+,Para [Math InlineMath "{2x}{+y-z}"]
473+,Para [Str "If",Space,Str "a",Space,Str "MathML",Space,Str "equation",Space,Str "is",Space,Str "rendered",Space,Str "before",Space,Str "this",Space,Str "paragraph,",Space,Str "the",Space,Str "test",Space,Str "passes."]
474+,Para [Str "If",Space,Str "test",Space,Code ("",[],[]) "switch-010",Space,Str "did",Space,Str "not",Space,Str "pass,",Space,Str "this",Space,Str "test",Space,Str "should",Space,Str "be",Space,Str "marked",Space,Code ("",[],[]) "Not Supported",Str "."]
475+,RawBlock (Format "html") "</section>"
476+,RawBlock (Format "html") "</section>"
477+,Para [Span ("svg-doc-001.xhtml",[],[]) []]
478+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"utf-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
479+,Header 1 ("",[],[]) [Str "Content",Space,Str "Documents:",Space,Str "SVG"]
480+,Para [Str "This",Space,Str "section",Space,Str "contains",Space,Str "tests",Space,Str "for",Space,Str "static",Space,Str "SVG",Space,Str "content."]
481+,Para [Str "Note",Space,Str "that",Space,Str "if",Space,Str "no",Space,Str "SVG",Space,Str "tests",Space,Str "appear",Space,Str "after",Space,Str "this",Space,Str "document,",Space,Str "SVG",Space,Str "is",Space,Str "not",Space,Str "supported",Space,Str "in",Space,Str "the",Space,Str "spine",Space,Str "and",Space,Str "all",Space,Str "tests",Space,Str "in",Space,Str "this",Space,Str "section",Space,Str "should",Space,Str "be",Space,Str "marked",Space,Code ("",[],[]) "Not Supported",Str "."]
482+,Para [Span ("content-svg-001.svg",[],[]) []]]
tests/formatting.epubnew file

Binary file not shown.

tests/formatting.nativenew file+454
@@ -0,0 +1,454 @@
1+[Para [Span ("front.xhtml",[],[]) []]
2+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"utf-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
3+,RawBlock (Format "html") "<section>"
4+,Header 1 ("",[],[]) [Str "EPUB",Space,Str "3",Space,Str "Styling",Space,Str "Test",Space,Str "Document:",Space,Str "0101"]
5+,RawBlock (Format "html") "<section>"
6+,Header 2 ("",[],[]) [Str "Status",Space,Str "of",Space,Str "this",Space,Str "Document"]
7+,Para [Str "This",Space,Str "publication",Space,Str "is",Space,Str "currently",Space,Str "considered",Space,Span ("",["status"],[]) [Str "[UNDER",Space,Str "DEVELOPMENT]"],Space,Str "by",Space,Str "the",Space,Str "IDPF."]
8+,Para [Str "This",Space,Str "publication",Space,Str "is",Space,Str "part",Space,Str "of",Space,Str "version",Space,Span ("",["version"],[]) [Str "X.X"],Space,Str "of",Space,Str "the",Space,Str "EPUB",Space,Str "3.0",Space,Str "Compliance",Space,Str "Test",Space,Str "Suite",Space,Str "released",Space,Str "on",Space,RawInline (Format "html") "<time class=\"release\">",Str "TBD",RawInline (Format "html") "</time>",Str "."]
9+,Para [Str "Before",Space,Str "using",Space,Str "this",Space,Str "publication",Space,Str "to",Space,Str "evaluate",Space,Str "reading",Space,Str "systems,",Space,Str "testers",Space,Str "are",Space,Str "strongly",Space,Str "encouraged",Space,Str "to",Space,Str "verify",Space,Str "that",Space,Str "they",Space,Str "have",Space,Str "the",Space,Str "latest",Space,Str "release",Space,Str "by",Space,Str "checking",Space,Str "the",Space,Str "current",Space,Str "release",Space,Str "version",Space,Str "and",Space,Str "date",Space,Str "of",Space,Str "the",Space,Str "test",Space,Str "suite",Space,Str "at",Space,Link [Str "TBD"] ("","")]
10+,Para [Str "This",Space,Str "publication",Space,Str "is",Space,Str "one",Space,Str "of",Space,Str "several",Space,Str "that",Space,Str "currently",Space,Str "comprise",Space,Str "the",Space,Str "EPUB",Space,Str "3",Space,Str "conformance",Space,Str "test",Space,Str "suite",Space,Str "for",Space,Str "reflowable",Space,Str "content.",Space,Str "The",Space,Str "complete",Space,Str "test",Space,Str "suite",Space,Str "includes",Space,Str "all",Space,Str "of",Space,Str "the",Space,Str "following",Space,Str "publications:"]
11+,OrderedList (1,DefaultStyle,DefaultDelim)
12+ [[Plain [Str "."]]]
13+,RawBlock (Format "html") "</section>"
14+,RawBlock (Format "html") "<section>"
15+,Header 2 ("",[],[]) [Str "About",Space,Str "this",Space,Str "Document"]
16+,Para [Str "This",Space,Str "document",Space,Str "focuses",Space,Str "on",Space,Str "human-evaluated",Space,Str "binary",Space,Str "(pass/fail)",Space,Str "tests",Space,Str "in",Space,Str "a",Space,Str "reflowable",Space,Str "context.",Space,Str "Tests",Space,Str "for",Space,Str "fixed-layout",Space,Str "content",Space,Str "and",Space,Str "other",Space,Str "individual",Space,Str "tests",Space,Str "that",Space,Str "require",Space,Str "a",Space,Str "dedicated",Space,Str "epub",Space,Str "file",Space,Str "are",Space,Str "available",Space,Str "in",Space,Str "additional",Space,Str "sibling",Space,Str "documents;",Space,Str "refer",Space,Str "to",Space,Str "the",Space,Link [Str "test",Space,Str "suite",Space,Str "wiki"] ("Overview",""),Space,Str "(",Code ("",[],[]) "https://github.com/mgylling/epub-testsuite/wiki/Overview",Str ")",Space,Str "for",Space,Str "additional",Space,Str "information."]
17+,RawBlock (Format "html") "</section>"
18+,RawBlock (Format "html") "<section>"
19+,Header 2 ("",[],[]) [Str "Conventions"]
20+,Para [Str "The",Space,Str "following",Space,Str "conventions",Space,Str "are",Space,Str "used",Space,Str "throughout",Space,Str "the",Space,Str "document:"]
21+,DefinitionList
22+ [([Str "1.",Space,Str "Locating",Space,Str "a",Space,Str "test"],
23+ [[Div ("",["ctest"],[]) [Para [Str "Tests",Space,Str "for",Space,Emph [Str "required"],Space,Str "Reading",Space,Str "System",Space,Str "functionality",Space,Str "are",Space,Str "preceded",Space,Str "by",Space,Str "the",Space,Str "label:",Space,Span ("",["nature"],[("style","display: inline; font-size: 100%")]) [Str "[REQUIRED]"]]]
24+ ,Div ("",["otest"],[]) [Para [Str "Tests",Space,Str "for",Space,Emph [Str "optional"],Space,Str "Reading",Space,Str "System",Space,Str "functionality",Space,Str "are",Space,Str "preceded",Space,Str "by",Space,Str "the",Space,Str "label:",Space,Span ("",["nature"],[("style","display: inline; font-size: 100%")]) [Str "[OPTIONAL]"]]]]])
25+ ,([Str "2.",Space,Str "Performing",Space,Str "the",Space,Str "test"],
26+ [[Plain [Str "Each",Space,Str "test",Space,Str "includes",Space,Str "a",Space,Str "description",Space,Str "of",Space,Str "its",Space,Str "purpose",Space,Str "followed",Space,Str "by",Space,Str "the",Space,Str "actual",Space,Strong [Str "test",Space,Str "statement,",Space,Str "which",Space,Str "can",Space,Str "always",Space,Str "be",Space,Str "evaluated",Space,Str "to",Space,Str "true",Space,Str "or",Space,Str "false"],Str ".",Space,Str "These",Space,Str "statements",Space,Str "typically",Space,Str "have",Space,Str "the",Space,Str "form:",Space,Str "\"If",Space,Str "[some",Space,Str "condition],",Space,Str "the",Space,Str "test",Space,Str "passes\"."]]])
27+ ,([Str "3.",Space,Str "Scoring",Space,Str "in",Space,Str "the",Space,Str "results",Space,Str "form"],
28+ [[Plain [Str "@@@TODO",Space,Str "provide",Space,Str "info",Space,Str "on",Space,Str "where",Space,Str "to",Space,Str "get",Space,Str "the",Space,Str "results",Space,Str "form"]]])]
29+,RawBlock (Format "html") "</section>"
30+,RawBlock (Format "html") "</section>"
31+,Para [Span ("styling-xhtml-001.xhtml",[],[]) []]
32+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"utf-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
33+,RawBlock (Format "html") "<section id=\"epub-css\">"
34+,Header 1 ("",[],[]) [Str "EPUB",Space,Str "Style",Space,Str "Sheets"]
35+,Para [Str "This",Space,Str "section",Space,Str "contains",Space,Str "tests",Space,Str "for",Space,Str "styling",Space,Str "and",Space,Str "layout."]
36+,RawBlock (Format "html") "</section>"
37+,Para [Span ("styling-xhtml-003.xhtml",[],[]) []]
38+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
39+,RawBlock (Format "html") "<section id=\"style-110\" class=\"ctest\">"
40+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-110"],Space,Str "Multi-Column",Space,Str "Layouts"]
41+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "CSS Multi-Column Layout",Space,Str "properties",Space,Str "are",Space,Str "supported."]
42+,Div ("",["multicol"],[]) [Para [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat.",Space,Str "Duis",Space,Str "aute",Space,Str "irure",Space,Str "dolor",Space,Str "in",Space,Str "reprehenderit",Space,Str "in",Space,Str "voluptate",Space,Str "velit",Space,Str "esse",Space,Str "cillum",Space,Str "dolore",Space,Str "eu",Space,Str "fugiat",Space,Str "nulla",Space,Str "pariatur.",Space,Str "Excepteur",Space,Str "sint",Space,Str "occaecat",Space,Str "cupidatat",Space,Str "non",Space,Str "proident,",Space,Str "sunt",Space,Str "in",Space,Str "culpa",Space,Str "qui",Space,Str "officia",Space,Str "deserunt",Space,Str "mollit",Space,Str "anim",Space,Str "id",Space,Str "est",Space,Str "laborum."],Para [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat.",Space,Str "Duis",Space,Str "aute",Space,Str "irure",Space,Str "dolor",Space,Str "in",Space,Str "reprehenderit",Space,Str "in",Space,Str "voluptate",Space,Str "velit",Space,Str "esse",Space,Str "cillum",Space,Str "dolore",Space,Str "eu",Space,Str "fugiat",Space,Str "nulla",Space,Str "pariatur.",Space,Str "Excepteur",Space,Str "sint",Space,Str "occaecat",Space,Str "cupidatat",Space,Str "non",Space,Str "proident,",Space,Str "sunt",Space,Str "in",Space,Str "culpa",Space,Str "qui",Space,Str "officia",Space,Str "deserunt",Space,Str "mollit",Space,Str "anim",Space,Str "id",Space,Str "est",Space,Str "laborum."],Para [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat.",Space,Str "Duis",Space,Str "aute",Space,Str "irure",Space,Str "dolor",Space,Str "in",Space,Str "reprehenderit",Space,Str "in",Space,Str "voluptate",Space,Str "velit",Space,Str "esse",Space,Str "cillum",Space,Str "dolore",Space,Str "eu",Space,Str "fugiat",Space,Str "nulla",Space,Str "pariatur.",Space,Str "Excepteur",Space,Str "sint",Space,Str "occaecat",Space,Str "cupidatat",Space,Str "non",Space,Str "proident,",Space,Str "sunt",Space,Str "in",Space,Str "culpa",Space,Str "qui",Space,Str "officia",Space,Str "deserunt",Space,Str "mollit",Space,Str "anim",Space,Str "id",Space,Str "est",Space,Str "laborum."],Para [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat.",Space,Str "Duis",Space,Str "aute",Space,Str "irure",Space,Str "dolor",Space,Str "in",Space,Str "reprehenderit",Space,Str "in",Space,Str "voluptate",Space,Str "velit",Space,Str "esse",Space,Str "cillum",Space,Str "dolore",Space,Str "eu",Space,Str "fugiat",Space,Str "nulla",Space,Str "pariatur.",Space,Str "Excepteur",Space,Str "sint",Space,Str "occaecat",Space,Str "cupidatat",Space,Str "non",Space,Str "proident,",Space,Str "sunt",Space,Str "in",Space,Str "culpa",Space,Str "qui",Space,Str "officia",Space,Str "deserunt",Space,Str "mollit",Space,Str "anim",Space,Str "id",Space,Str "est",Space,Str "laborum."],Para [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat.",Space,Str "Duis",Space,Str "aute",Space,Str "irure",Space,Str "dolor",Space,Str "in",Space,Str "reprehenderit",Space,Str "in",Space,Str "voluptate",Space,Str "velit",Space,Str "esse",Space,Str "cillum",Space,Str "dolore",Space,Str "eu",Space,Str "fugiat",Space,Str "nulla",Space,Str "pariatur.",Space,Str "Excepteur",Space,Str "sint",Space,Str "occaecat",Space,Str "cupidatat",Space,Str "non",Space,Str "proident,",Space,Str "sunt",Space,Str "in",Space,Str "culpa",Space,Str "qui",Space,Str "officia",Space,Str "deserunt",Space,Str "mollit",Space,Str "anim",Space,Str "id",Space,Str "est",Space,Str "laborum."],Para [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat.",Space,Str "Duis",Space,Str "aute",Space,Str "irure",Space,Str "dolor",Space,Str "in",Space,Str "reprehenderit",Space,Str "in",Space,Str "voluptate",Space,Str "velit",Space,Str "esse",Space,Str "cillum",Space,Str "dolore",Space,Str "eu",Space,Str "fugiat",Space,Str "nulla",Space,Str "pariatur.",Space,Str "Excepteur",Space,Str "sint",Space,Str "occaecat",Space,Str "cupidatat",Space,Str "non",Space,Str "proident,",Space,Str "sunt",Space,Str "in",Space,Str "culpa",Space,Str "qui",Space,Str "officia",Space,Str "deserunt",Space,Str "mollit",Space,Str "anim",Space,Str "id",Space,Str "est",Space,Str "laborum."],Para [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat.",Space,Str "Duis",Space,Str "aute",Space,Str "irure",Space,Str "dolor",Space,Str "in",Space,Str "reprehenderit",Space,Str "in",Space,Str "voluptate",Space,Str "velit",Space,Str "esse",Space,Str "cillum",Space,Str "dolore",Space,Str "eu",Space,Str "fugiat",Space,Str "nulla",Space,Str "pariatur.",Space,Str "Excepteur",Space,Str "sint",Space,Str "occaecat",Space,Str "cupidatat",Space,Str "non",Space,Str "proident,",Space,Str "sunt",Space,Str "in",Space,Str "culpa",Space,Str "qui",Space,Str "officia",Space,Str "deserunt",Space,Str "mollit",Space,Str "anim",Space,Str "id",Space,Str "est",Space,Str "laborum."],Para [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat.",Space,Str "Duis",Space,Str "aute",Space,Str "irure",Space,Str "dolor",Space,Str "in",Space,Str "reprehenderit",Space,Str "in",Space,Str "voluptate",Space,Str "velit",Space,Str "esse",Space,Str "cillum",Space,Str "dolore",Space,Str "eu",Space,Str "fugiat",Space,Str "nulla",Space,Str "pariatur.",Space,Str "Excepteur",Space,Str "sint",Space,Str "occaecat",Space,Str "cupidatat",Space,Str "non",Space,Str "proident,",Space,Str "sunt",Space,Str "in",Space,Str "culpa",Space,Str "qui",Space,Str "officia",Space,Str "deserunt",Space,Str "mollit",Space,Str "anim",Space,Str "id",Space,Str "est",Space,Str "laborum."],Para [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat.",Space,Str "Duis",Space,Str "aute",Space,Str "irure",Space,Str "dolor",Space,Str "in",Space,Str "reprehenderit",Space,Str "in",Space,Str "voluptate",Space,Str "velit",Space,Str "esse",Space,Str "cillum",Space,Str "dolore",Space,Str "eu",Space,Str "fugiat",Space,Str "nulla",Space,Str "pariatur.",Space,Str "Excepteur",Space,Str "sint",Space,Str "occaecat",Space,Str "cupidatat",Space,Str "non",Space,Str "proident,",Space,Str "sunt",Space,Str "in",Space,Str "culpa",Space,Str "qui",Space,Str "officia",Space,Str "deserunt",Space,Str "mollit",Space,Str "anim",Space,Str "id",Space,Str "est",Space,Str "laborum."]]
43+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "text",Space,Str "is",Space,Str "rendered",Space,Str "in",Space,Str "three",Space,Str "columns,",Space,Str "the",Space,Str "test",Space,Str "passes."]
44+,RawBlock (Format "html") "</section>"
45+,Para [Span ("styling-xhtml-002.xhtml",[],[]) []]
46+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
47+,RawBlock (Format "html") "<section id=\"style-lists\">"
48+,Header 2 ("",[],[]) [Str "Lists"]
49+,RawBlock (Format "html") "<section id=\"style-list-style-type\">"
50+,Header 3 ("",[],[]) [Str "The",Space,Code ("",[],[]) "list-style-type",Space,Str "property"]
51+,RawBlock (Format "html") "<section id=\"style-009\" class=\"ctest\">"
52+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-009"],Space,Code ("",[],[]) "decimal"]
53+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "decimal",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
54+,OrderedList (1,DefaultStyle,DefaultDelim)
55+ [[Plain [Str "Lorem"]]
56+ ,[Plain [Str "Ipsum"]]
57+ ,[Plain [Str "Dolor"]]
58+ ,[Plain [Str "Sit"]]
59+ ,[Plain [Str "Amet"]]]
60+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "decimal",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
61+,RawBlock (Format "html") "</section>"
62+,RawBlock (Format "html") "<section id=\"style-010\" class=\"ctest\">"
63+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-010"],Space,Code ("",[],[]) "circle"]
64+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "circle",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ul",Space,Str "element."]
65+,BulletList
66+ [[Plain [Str "Lorem"]]
67+ ,[Plain [Str "Ipsum"]]
68+ ,[Plain [Str "Dolor"]]
69+ ,[Plain [Str "Sit"]]
70+ ,[Plain [Str "Amet"]]]
71+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "circle",Space,Str "markers,",Space,Str "the",Space,Str "test",Space,Str "passes."]
72+,RawBlock (Format "html") "</section>"
73+,RawBlock (Format "html") "<section id=\"style-011\" class=\"ctest\">"
74+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-011"],Space,Code ("",[],[]) "square"]
75+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "square",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ul",Space,Str "element."]
76+,BulletList
77+ [[Plain [Str "Lorem"]]
78+ ,[Plain [Str "Ipsum"]]
79+ ,[Plain [Str "Dolor"]]
80+ ,[Plain [Str "Sit"]]
81+ ,[Plain [Str "Amet"]]]
82+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "square",Space,Str "markers,",Space,Str "the",Space,Str "test",Space,Str "passes."]
83+,RawBlock (Format "html") "</section>"
84+,RawBlock (Format "html") "<section id=\"style-012\" class=\"ctest\">"
85+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-012"],Space,Code ("",[],[]) "disc"]
86+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "disc",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ul",Space,Str "element."]
87+,BulletList
88+ [[Plain [Str "Lorem"]]
89+ ,[Plain [Str "Ipsum"]]
90+ ,[Plain [Str "Dolor"]]
91+ ,[Plain [Str "Sit"]]
92+ ,[Plain [Str "Amet"]]]
93+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "disc",Space,Str "markers,",Space,Str "the",Space,Str "test",Space,Str "passes."]
94+,RawBlock (Format "html") "</section>"
95+,RawBlock (Format "html") "<section id=\"style-013\" class=\"ctest\">"
96+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-013"],Space,Code ("",[],[]) "lower-latin"]
97+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "lower-latin",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
98+,OrderedList (1,DefaultStyle,DefaultDelim)
99+ [[Plain [Str "Lorem"]]
100+ ,[Plain [Str "Ipsum"]]
101+ ,[Plain [Str "Dolor"]]
102+ ,[Plain [Str "Sit"]]
103+ ,[Plain [Str "Amet"]]]
104+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "lower-latin",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
105+,RawBlock (Format "html") "</section>"
106+,RawBlock (Format "html") "<section id=\"style-014\" class=\"ctest\">"
107+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-014"],Space,Code ("",[],[]) "lower-roman"]
108+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "lower-roman",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
109+,OrderedList (1,DefaultStyle,DefaultDelim)
110+ [[Plain [Str "Lorem"]]
111+ ,[Plain [Str "Ipsum"]]
112+ ,[Plain [Str "Dolor"]]
113+ ,[Plain [Str "Sit"]]
114+ ,[Plain [Str "Amet"]]]
115+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "lower-roman",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
116+,RawBlock (Format "html") "</section>"
117+,RawBlock (Format "html") "<section id=\"style-015\" class=\"ctest\">"
118+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-015"],Space,Code ("",[],[]) "upper-alpha"]
119+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "upper-alpha",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
120+,OrderedList (1,DefaultStyle,DefaultDelim)
121+ [[Plain [Str "Lorem"]]
122+ ,[Plain [Str "Ipsum"]]
123+ ,[Plain [Str "Dolor"]]
124+ ,[Plain [Str "Sit"]]
125+ ,[Plain [Str "Amet"]]]
126+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "upper-alpha",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
127+,RawBlock (Format "html") "</section>"
128+,RawBlock (Format "html") "<section id=\"style-016\" class=\"ctest\">"
129+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-016"],Space,Code ("",[],[]) "hiragana"]
130+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "hiragana",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
131+,OrderedList (1,DefaultStyle,DefaultDelim)
132+ [[Plain [Str "Lorem"]]
133+ ,[Plain [Str "Ipsum"]]
134+ ,[Plain [Str "Dolor"]]
135+ ,[Plain [Str "Sit"]]
136+ ,[Plain [Str "Amet"]]]
137+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "hiragana",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
138+,RawBlock (Format "html") "</section>"
139+,RawBlock (Format "html") "<section id=\"style-017\" class=\"ctest\">"
140+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-017"],Space,Code ("",[],[]) "hiragana-iroha"]
141+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "hiragana-iroha",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
142+,OrderedList (1,DefaultStyle,DefaultDelim)
143+ [[Plain [Str "Lorem"]]
144+ ,[Plain [Str "Ipsum"]]
145+ ,[Plain [Str "Dolor"]]
146+ ,[Plain [Str "Sit"]]
147+ ,[Plain [Str "Amet"]]]
148+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "hiragana-iroha",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
149+,RawBlock (Format "html") "</section>"
150+,RawBlock (Format "html") "<section id=\"style-018\" class=\"ctest\">"
151+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-018"],Space,Code ("",[],[]) "katakana"]
152+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "katakana",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
153+,OrderedList (1,DefaultStyle,DefaultDelim)
154+ [[Plain [Str "Lorem"]]
155+ ,[Plain [Str "Ipsum"]]
156+ ,[Plain [Str "Dolor"]]
157+ ,[Plain [Str "Sit"]]
158+ ,[Plain [Str "Amet"]]]
159+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "katakana",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
160+,RawBlock (Format "html") "</section>"
161+,RawBlock (Format "html") "<section id=\"style-019\" class=\"ctest\">"
162+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-019"],Space,Code ("",[],[]) "katakana-iroha"]
163+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "katakana-iroha",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
164+,OrderedList (1,DefaultStyle,DefaultDelim)
165+ [[Plain [Str "Lorem"]]
166+ ,[Plain [Str "Ipsum"]]
167+ ,[Plain [Str "Dolor"]]
168+ ,[Plain [Str "Sit"]]
169+ ,[Plain [Str "Amet"]]]
170+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "katakana-iroha",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
171+,RawBlock (Format "html") "</section>"
172+,RawBlock (Format "html") "<section id=\"style-020\" class=\"ctest\">"
173+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-020"],Space,Code ("",[],[]) "upper-roman"]
174+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "upper-roman",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
175+,OrderedList (1,DefaultStyle,DefaultDelim)
176+ [[Plain [Str "Lorem"]]
177+ ,[Plain [Str "Ipsum"]]
178+ ,[Plain [Str "Dolor"]]
179+ ,[Plain [Str "Sit"]]
180+ ,[Plain [Str "Amet"]]]
181+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "upper-roman",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
182+,RawBlock (Format "html") "</section>"
183+,RawBlock (Format "html") "<section id=\"style-021\" class=\"ctest\">"
184+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-021"],Space,Code ("",[],[]) "upper-latin"]
185+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "upper-latin",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
186+,OrderedList (1,DefaultStyle,DefaultDelim)
187+ [[Plain [Str "Lorem"]]
188+ ,[Plain [Str "Ipsum"]]
189+ ,[Plain [Str "Dolor"]]
190+ ,[Plain [Str "Sit"]]
191+ ,[Plain [Str "Amet"]]]
192+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "upper-latin",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
193+,RawBlock (Format "html") "</section>"
194+,RawBlock (Format "html") "<section id=\"style-022\" class=\"ctest\">"
195+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-022"],Space,Code ("",[],[]) "lower-alpha"]
196+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "lower-alpha",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
197+,OrderedList (1,DefaultStyle,DefaultDelim)
198+ [[Plain [Str "Lorem"]]
199+ ,[Plain [Str "Ipsum"]]
200+ ,[Plain [Str "Dolor"]]
201+ ,[Plain [Str "Sit"]]
202+ ,[Plain [Str "Amet"]]]
203+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "lower-alpha",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
204+,RawBlock (Format "html") "</section>"
205+,RawBlock (Format "html") "<section id=\"style-023\" class=\"ctest\">"
206+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-023"],Space,Code ("",[],[]) "lower-greek"]
207+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "lower-greek",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
208+,OrderedList (1,DefaultStyle,DefaultDelim)
209+ [[Plain [Str "Lorem"]]
210+ ,[Plain [Str "Ipsum"]]
211+ ,[Plain [Str "Dolor"]]
212+ ,[Plain [Str "Sit"]]
213+ ,[Plain [Str "Amet"]]]
214+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "lower-greek",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
215+,RawBlock (Format "html") "</section>"
216+,RawBlock (Format "html") "<section id=\"style-024\" class=\"ctest\">"
217+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-024"],Space,Code ("",[],[]) "armenian"]
218+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "armenian",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
219+,OrderedList (1,DefaultStyle,DefaultDelim)
220+ [[Plain [Str "Lorem"]]
221+ ,[Plain [Str "Ipsum"]]
222+ ,[Plain [Str "Dolor"]]
223+ ,[Plain [Str "Sit"]]
224+ ,[Plain [Str "Amet"]]]
225+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "armenian",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
226+,RawBlock (Format "html") "</section>"
227+,RawBlock (Format "html") "<section id=\"style-025\" class=\"ctest\">"
228+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-025"],Space,Code ("",[],[]) "cjk-ideographic"]
229+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "cjk-ideographic",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
230+,OrderedList (1,DefaultStyle,DefaultDelim)
231+ [[Plain [Str "Lorem"]]
232+ ,[Plain [Str "Ipsum"]]
233+ ,[Plain [Str "Dolor"]]
234+ ,[Plain [Str "Sit"]]
235+ ,[Plain [Str "Amet"]]]
236+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "cjk-ideographic",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
237+,RawBlock (Format "html") "</section>"
238+,RawBlock (Format "html") "<section id=\"style-026\" class=\"ctest\">"
239+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-026"],Space,Code ("",[],[]) "decimal-leading-zero"]
240+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "decimal-leading-zero",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
241+,OrderedList (1,DefaultStyle,DefaultDelim)
242+ [[Plain [Str "Lorem"]]
243+ ,[Plain [Str "Ipsum"]]
244+ ,[Plain [Str "Dolor"]]
245+ ,[Plain [Str "Sit"]]
246+ ,[Plain [Str "Amet"]]]
247+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "decimal-leading-zero",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
248+,RawBlock (Format "html") "</section>"
249+,RawBlock (Format "html") "<section id=\"style-027\" class=\"ctest\">"
250+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-027"],Space,Code ("",[],[]) "georgian"]
251+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "georgian",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
252+,OrderedList (1,DefaultStyle,DefaultDelim)
253+ [[Plain [Str "Lorem"]]
254+ ,[Plain [Str "Ipsum"]]
255+ ,[Plain [Str "Dolor"]]
256+ ,[Plain [Str "Sit"]]
257+ ,[Plain [Str "Amet"]]]
258+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "georgian",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
259+,RawBlock (Format "html") "</section>"
260+,RawBlock (Format "html") "<section id=\"style-028\" class=\"ctest\">"
261+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-028"],Space,Code ("",[],[]) "hebrew"]
262+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "hebrew",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
263+,OrderedList (1,DefaultStyle,DefaultDelim)
264+ [[Plain [Str "Lorem"]]
265+ ,[Plain [Str "Ipsum"]]
266+ ,[Plain [Str "Dolor"]]
267+ ,[Plain [Str "Sit"]]
268+ ,[Plain [Str "Amet"]]]
269+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "hebrew",Space,Str "markers",Space,Str "in",Space,Str "ascending",Space,Str "order,",Space,Str "the",Space,Str "test",Space,Str "passes."]
270+,RawBlock (Format "html") "</section>"
271+,RawBlock (Format "html") "<section id=\"style-029\" class=\"ctest\">"
272+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-029"],Space,Code ("",[],[]) "none"]
273+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-type",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "none",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element."]
274+,OrderedList (1,DefaultStyle,DefaultDelim)
275+ [[Plain [Str "Lorem"]]
276+ ,[Plain [Str "Ipsum"]]
277+ ,[Plain [Str "Dolor"]]
278+ ,[Plain [Str "Sit"]]
279+ ,[Plain [Str "Amet"]]]
280+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "no",Space,Str "markers,",Space,Str "the",Space,Str "test",Space,Str "passes."]
281+,RawBlock (Format "html") "</section>"
282+,RawBlock (Format "html") "</section>"
283+,RawBlock (Format "html") "<section id=\"style-list-style\">"
284+,Header 3 ("",[],[]) [Str "The",Space,Code ("",[],[]) "list-style",Space,Str "property"]
285+,RawBlock (Format "html") "<section id=\"style-030\" class=\"ctest\">"
286+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-030"],Space,Str "images"]
287+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style",Space,Str "shorthand",Space,Str "property",Space,Str "is",Space,Str "supported",Space,Str "using",Space,Str "a",Space,Str "gif",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ul",Space,Str "element."]
288+,BulletList
289+ [[Plain [Str "Lorem"]]
290+ ,[Plain [Str "Ipsum"]]
291+ ,[Plain [Str "Dolor"]]
292+ ,[Plain [Str "Sit"]]
293+ ,[Plain [Str "Amet"]]]
294+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "the",Space,Str "purple",Space,Str "and",Space,Str "aqua",Space,Str "square",Space,Str "bullet",Space,Str "the",Space,Str "test",Space,Str "passes."]
295+,RawBlock (Format "html") "</section>"
296+,RawBlock (Format "html") "</section>"
297+,RawBlock (Format "html") "<section id=\"style-list-style-position\">"
298+,Header 3 ("",[],[]) [Str "The",Space,Code ("",[],[]) "list-style-position",Space,Str "property"]
299+,RawBlock (Format "html") "<section id=\"style-040\" class=\"ctest\">"
300+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-040"],Space,Str "The",Space,Code ("",[],[]) "list-style-position",Space,Str "property:",Space,Code ("",[],[]) "inside"]
301+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-position",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "inside",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ul",Space,Str "element."]
302+,BulletList
303+ [[Plain [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat."]]
304+ ,[Plain [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat."]]
305+ ,[Plain [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat."]]]
306+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "markers",Space,Str "inside",Space,Str "the",Space,Str "indentation,",Space,Str "the",Space,Str "test",Space,Str "passes."]
307+,RawBlock (Format "html") "</section>"
308+,RawBlock (Format "html") "<section id=\"style-041\" class=\"ctest\">"
309+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-041"],Space,Str "The",Space,Code ("",[],[]) "list-style-position",Space,Str "property:",Space,Code ("",[],[]) "outside"]
310+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "list-style-position",Space,Str "property",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "outside",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ul",Space,Str "element."]
311+,BulletList
312+ [[Plain [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat."]]
313+ ,[Plain [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat."]]
314+ ,[Plain [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat."]]]
315+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "has",Space,Str "the",Space,Str "default",Space,Str "setting",Space,Str "(marker",Space,Str "outside",Space,Str "the",Space,Str "indentation),",Space,Str "the",Space,Str "test",Space,Str "passes."]
316+,RawBlock (Format "html") "</section>"
317+,RawBlock (Format "html") "</section>"
318+,RawBlock (Format "html") "<section id=\"style-list-start\">"
319+,Header 3 ("",[],[]) [Str "The",Space,Str "HTML",Space,Code ("",[],[]) "start",Space,Str "attribute"]
320+,RawBlock (Format "html") "<section id=\"style-050\" class=\"ctest\">"
321+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-050"],Space,Str "Without",Space,Code ("",[],[]) "list-style-type",Space,Str "set"]
322+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "start",Space,Str "attribute",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element",Space,Str "with",Space,Str "no",Space,Code ("",[],[]) "list-style-type",Space,Str "property."]
323+,OrderedList (25,DefaultStyle,DefaultDelim)
324+ [[Plain [Str "Lorem"]]
325+ ,[Plain [Str "Ipsum"]]
326+ ,[Plain [Str "Dolor"]]
327+ ,[Plain [Str "Sit"]]
328+ ,[Plain [Str "Amet"]]]
329+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "starts",Space,Str "at",Space,Str "25,",Space,Str "the",Space,Str "test",Space,Str "passes."]
330+,RawBlock (Format "html") "</section>"
331+,RawBlock (Format "html") "<section id=\"style-051\" class=\"ctest\">"
332+,Header 4 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-051"],Space,Str "With",Space,Code ("",[],[]) "list-style-type",Space,Str "set"]
333+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "start",Space,Str "attribute",Space,Str "is",Space,Str "supported",Space,Str "on",Space,Str "a",Space,Code ("",[],[]) "ol",Space,Str "element",Space,Str "with",Space,Str "a",Space,Code ("",[],[]) "list-style-type",Space,Str "property."]
334+,OrderedList (50,DefaultStyle,DefaultDelim)
335+ [[Plain [Str "Lorem"]]
336+ ,[Plain [Str "Ipsum"]]
337+ ,[Plain [Str "Dolor"]]
338+ ,[Plain [Str "Sit"]]
339+ ,[Plain [Str "Amet"]]]
340+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "list",Space,Str "starts",Space,Str "at",Space,Str "'L'",Space,Str "(50),",Space,Str "the",Space,Str "test",Space,Str "passes."]
341+,RawBlock (Format "html") "</section>"
342+,RawBlock (Format "html") "</section>"
343+,RawBlock (Format "html") "</section>"
344+,Para [Span ("styling-xhtml-004.xhtml",[],[]) []]
345+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
346+,RawBlock (Format "html") "<section id=\"style-media-rules\">"
347+,Header 2 ("",[],[]) [Code ("",[],[]) "@media",Space,Str "Rules"]
348+,RawBlock (Format "html") "<section id=\"style-210\" class=\"ctest\">"
349+,Header 3 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-210"],Space,Code ("",[],[]) "all"]
350+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "@media",Space,Str "rule",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "all",Space,Str "is",Space,Str "supported."]
351+,Para [Str "FAIL"]
352+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "paragraph",Space,Str "reads",Space,Str "\"FAIL\",",Space,Str "the",Space,Str "test",Space,Str "fails."]
353+,RawBlock (Format "html") "</section>"
354+,RawBlock (Format "html") "<section id=\"style-211\" class=\"ctest\">"
355+,Header 3 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-211"],Space,Code ("",[],[]) "screen"]
356+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "@media",Space,Str "rule",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "screen",Space,Str "is",Space,Str "supported."]
357+,Para [Str "FAIL"]
358+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "paragraph",Space,Str "reads",Space,Str "\"FAIL\",",Space,Str "the",Space,Str "test",Space,Str "fails."]
359+,RawBlock (Format "html") "</section>"
360+,RawBlock (Format "html") "<section id=\"style-212\" class=\"ctest\">"
361+,Header 3 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-212"],Space,Code ("",[],[]) "handheld"]
362+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "@media",Space,Str "rule",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "handheld",Space,Str "is",Space,Str "supported."]
363+,Para [Str "FAIL"]
364+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "paragraph",Space,Str "reads",Space,Str "\"FAIL\",",Space,Str "the",Space,Str "test",Space,Str "fails."]
365+,RawBlock (Format "html") "</section>"
366+,RawBlock (Format "html") "<section id=\"style-213\" class=\"ctest\">"
367+,Header 3 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-213"],Space,Code ("",[],[]) "tv"]
368+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "@media",Space,Str "rule",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "tv",Space,Str "is",Space,Str "supported."]
369+,Para [Str "FAIL"]
370+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "paragraph",Space,Str "reads",Space,Str "\"FAIL\",",Space,Str "the",Space,Str "test",Space,Str "fails."]
371+,RawBlock (Format "html") "</section>"
372+,RawBlock (Format "html") "<section id=\"style-220\" class=\"ctest\">"
373+,Header 3 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-220"],Space,Code ("",[],[]) "orientation:landscape"]
374+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "@media",Space,Str "rule",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "orientation:landscape",Space,Str "is",Space,Str "supported."]
375+,Para [Str "FAIL"]
376+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "paragraph",Space,Str "reads",Space,Str "\"FAIL\"",Space,Str "when",Space,Str "the",Space,Str "device",Space,Str "is",Space,Str "held",Space,Str "in",Space,Str "landscape",Space,Str "mode,",Space,Str "and",Space,Str "the",Space,Str "device",Space,Str "supports",Space,Str "multiple",Space,Str "orientations,",Space,Str "the",Space,Str "test",Space,Str "fails."]
377+,RawBlock (Format "html") "</section>"
378+,RawBlock (Format "html") "<section id=\"style-221\" class=\"ctest\">"
379+,Header 3 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-221"],Space,Code ("",[],[]) "orientation:portrait"]
380+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "@media",Space,Str "rule",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "orientation:portrait",Space,Str "is",Space,Str "supported."]
381+,Para [Str "FAIL"]
382+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "paragraph",Space,Str "reads",Space,Str "\"FAIL\"",Space,Str "when",Space,Str "the",Space,Str "device",Space,Str "is",Space,Str "held",Space,Str "in",Space,Str "portrait",Space,Str "mode,",Space,Str "and",Space,Str "the",Space,Str "device",Space,Str "supports",Space,Str "multiple",Space,Str "orientations,",Space,Str "the",Space,Str "test",Space,Str "fails."]
383+,RawBlock (Format "html") "</section>"
384+,RawBlock (Format "html") "<section id=\"style-230\" class=\"ctest\">"
385+,Header 3 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-230"],Space,Code ("",[],[]) "min-width"]
386+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "@media",Space,Str "rule",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "min-width:200px",Space,Str "is",Space,Str "supported."]
387+,Para [Str "FAIL"]
388+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "paragraph",Space,Str "reads",Space,Str "\"FAIL\",",Space,Str "the",Space,Str "test",Space,Str "fails."]
389+,RawBlock (Format "html") "</section>"
390+,RawBlock (Format "html") "<section id=\"style-231\" class=\"ctest\">"
391+,Header 3 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-231"],Space,Code ("",[],[]) "max-width"]
392+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "@media",Space,Str "rule",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "max-width:2000px",Space,Str "is",Space,Str "supported."]
393+,Para [Str "FAIL"]
394+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "paragraph",Space,Str "reads",Space,Str "\"FAIL\",",Space,Str "the",Space,Str "test",Space,Str "fails."]
395+,RawBlock (Format "html") "</section>"
396+,RawBlock (Format "html") "<section id=\"style-240\" class=\"ctest\">"
397+,Header 3 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-240"],Space,Code ("",[],[]) "min-device-width"]
398+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "@media",Space,Str "rule",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "min-device-width:200px",Space,Str "is",Space,Str "supported."]
399+,Para [Str "FAIL"]
400+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "paragraph",Space,Str "reads",Space,Str "\"FAIL\",",Space,Str "the",Space,Str "test",Space,Str "fails."]
401+,RawBlock (Format "html") "</section>"
402+,RawBlock (Format "html") "<section id=\"style-241\" class=\"ctest\">"
403+,Header 3 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-241"],Space,Code ("",[],[]) "max-device-width"]
404+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "@media",Space,Str "rule",Space,Str "set",Space,Str "to",Space,Code ("",[],[]) "max-device-width:2000px",Space,Str "is",Space,Str "supported."]
405+,Para [Str "FAIL"]
406+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "paragraph",Space,Str "reads",Space,Str "\"FAIL\",",Space,Str "the",Space,Str "test",Space,Str "fails."]
407+,RawBlock (Format "html") "</section>"
408+,RawBlock (Format "html") "</section>"
409+,Para [Span ("styling-xhtml-005.xhtml",[],[]) []]
410+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
411+,RawBlock (Format "html") "<section id=\"style-text-xform\">"
412+,Header 2 ("",[],[]) [Str "The",Space,Code ("",[],[]) "text-transform",Space,Str "property"]
413+,RawBlock (Format "html") "<section id=\"style-310\" class=\"ctest\">"
414+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-310"],Space,Code ("",[],[]) "uppercase"]
415+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "text-transform",Space,Str "property",Space,Str "set",Space,Str "to",Space,Str "uppercase",Space,Str "is",Space,Str "supported."]
416+,Para [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat.",Space,Str "Duis",Space,Str "aute",Space,Str "irure",Space,Str "dolor",Space,Str "in",Space,Str "reprehenderit",Space,Str "in",Space,Str "voluptate",Space,Str "velit",Space,Str "esse",Space,Str "cillum",Space,Str "dolore",Space,Str "eu",Space,Str "fugiat",Space,Str "nulla",Space,Str "pariatur.",Space,Str "Excepteur",Space,Str "sint",Space,Str "occaecat",Space,Str "cupidatat",Space,Str "non",Space,Str "proident,",Space,Str "sunt",Space,Str "in",Space,Str "culpa",Space,Str "qui",Space,Str "officia",Space,Str "deserunt",Space,Str "mollit",Space,Str "anim",Space,Str "id",Space,Str "est",Space,Str "laborum."]
417+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "paragraph",Space,Str "is",Space,Str "in",Space,Str "upper",Space,Str "case,",Space,Str "the",Space,Str "test",Space,Str "passes."]
418+,RawBlock (Format "html") "</section>"
419+,RawBlock (Format "html") "<section id=\"style-311\" class=\"ctest\">"
420+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-311"],Space,Code ("",[],[]) "capitalize"]
421+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "text-transform",Space,Str "property",Space,Str "set",Space,Str "to",Space,Str "capitalize",Space,Str "is",Space,Str "supported."]
422+,Para [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat.",Space,Str "Duis",Space,Str "aute",Space,Str "irure",Space,Str "dolor",Space,Str "in",Space,Str "reprehenderit",Space,Str "in",Space,Str "voluptate",Space,Str "velit",Space,Str "esse",Space,Str "cillum",Space,Str "dolore",Space,Str "eu",Space,Str "fugiat",Space,Str "nulla",Space,Str "pariatur.",Space,Str "Excepteur",Space,Str "sint",Space,Str "occaecat",Space,Str "cupidatat",Space,Str "non",Space,Str "proident,",Space,Str "sunt",Space,Str "in",Space,Str "culpa",Space,Str "qui",Space,Str "officia",Space,Str "deserunt",Space,Str "mollit",Space,Str "anim",Space,Str "id",Space,Str "est",Space,Str "laborum."]
423+,Para [Str "If",Space,Str "each",Space,Str "first",Space,Str "letter",Space,Str "of",Space,Str "each",Space,Str "word",Space,Str "in",Space,Str "the",Space,Str "preceding",Space,Str "paragraph",Space,Str "is",Space,Str "in",Space,Str "upper",Space,Str "case,",Space,Str "the",Space,Str "test",Space,Str "passes."]
424+,RawBlock (Format "html") "</section>"
425+,RawBlock (Format "html") "<section id=\"style-312\" class=\"ctest\">"
426+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-312"],Space,Code ("",[],[]) "lowercase"]
427+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "text-transform",Space,Str "property",Space,Str "set",Space,Str "to",Space,Str "lowercase",Space,Str "is",Space,Str "supported."]
428+,Para [Str "Lorem",Space,Str "ipsum",Space,Str "dolor",Space,Str "sit",Space,Str "amet,",Space,Str "consectetur",Space,Str "adipisicing",Space,Str "elit,",Space,Str "sed",Space,Str "do",Space,Str "eiusmod",Space,Str "tempor",Space,Str "incididunt",Space,Str "ut",Space,Str "labore",Space,Str "et",Space,Str "dolore",Space,Str "magna",Space,Str "aliqua.",Space,Str "Ut",Space,Str "enim",Space,Str "ad",Space,Str "minim",Space,Str "veniam,",Space,Str "quis",Space,Str "nostrud",Space,Str "exercitation",Space,Str "ullamco",Space,Str "laboris",Space,Str "nisi",Space,Str "ut",Space,Str "aliquip",Space,Str "ex",Space,Str "ea",Space,Str "commodo",Space,Str "consequat.",Space,Str "Duis",Space,Str "aute",Space,Str "irure",Space,Str "dolor",Space,Str "in",Space,Str "reprehenderit",Space,Str "in",Space,Str "voluptate",Space,Str "velit",Space,Str "esse",Space,Str "cillum",Space,Str "dolore",Space,Str "eu",Space,Str "fugiat",Space,Str "nulla",Space,Str "pariatur.",Space,Str "Excepteur",Space,Str "sint",Space,Str "occaecat",Space,Str "cupidatat",Space,Str "non",Space,Str "proident,",Space,Str "sunt",Space,Str "in",Space,Str "culpa",Space,Str "qui",Space,Str "officia",Space,Str "deserunt",Space,Str "mollit",Space,Str "anim",Space,Str "id",Space,Str "est",Space,Str "laborum."]
429+,Para [Str "If",Space,Str "the",Space,Str "preceding",Space,Str "paragraph",Space,Str "is",Space,Str "in",Space,Str "lower",Space,Str "case,",Space,Str "the",Space,Str "test",Space,Str "passes."]
430+,RawBlock (Format "html") "</section>"
431+,RawBlock (Format "html") "</section>"
432+,Para [Span ("styling-xhtml-006.xhtml",[],[]) []]
433+,Para [RawInline (Format "html") "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",Space,RawInline (Format "html") "<!DOCTYPE html>"]
434+,RawBlock (Format "html") "<section id=\"style-ruby\">"
435+,Header 2 ("",[],[]) [Str "The",Space,Code ("",[],[]) "epub-ruby-position",Space,Str "property"]
436+,RawBlock (Format "html") "<section id=\"style-410\" class=\"ctest\">"
437+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-410"],Space,Code ("",[],[]) "over"]
438+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "-epub-ruby-position",Space,Str "property",Space,Str "set",Space,Str "to",Space,Str "over",Space,Str "is",Space,Str "supported."]
439+,Para [RawInline (Format "html") "<ruby class=\"ruby-over\">",Strong [Str "Lorem",Space,Str "Ipsum"],Space,RawInline (Format "html") "<rp>",Str "(",RawInline (Format "html") "</rp>",RawInline (Format "html") "<rt>",Str "Lorem",Space,Str "Ipsum",RawInline (Format "html") "</rt>",RawInline (Format "html") "<rp>",Str ")",RawInline (Format "html") "</rp>",RawInline (Format "html") "</ruby>"]
440+,Para [Str "If",Space,Str "the",Space,Str "Ruby",Space,Str "text",Space,Str "is",Space,Str "positioned",Space,Str "on",Space,Str "the",Space,Link [Str "over"] ("#over",""),Space,Str "side",Space,Str "of",Space,Str "the",Space,Str "ruby",Space,Str "base,",Space,Str "the",Space,Str "test",Space,Str "passes."]
441+,RawBlock (Format "html") "</section>"
442+,RawBlock (Format "html") "<section id=\"style-411\" class=\"ctest\">"
443+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-411"],Space,Code ("",[],[]) "under"]
444+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "-epub-ruby-position",Space,Str "property",Space,Str "set",Space,Str "to",Space,Str "under",Space,Str "is",Space,Str "supported."]
445+,Para [RawInline (Format "html") "<ruby class=\"ruby-under\">",Strong [Str "Lorem",Space,Str "Ipsum"],Space,RawInline (Format "html") "<rp>",Str "(",RawInline (Format "html") "</rp>",RawInline (Format "html") "<rt>",Str "Lorem",Space,Str "Ipsum",RawInline (Format "html") "</rt>",RawInline (Format "html") "<rp>",Str ")",RawInline (Format "html") "</rp>",RawInline (Format "html") "</ruby>"]
446+,Para [Str "If",Space,Str "the",Space,Str "Ruby",Space,Str "text",Space,Str "is",Space,Str "positioned",Space,Str "on",Space,Str "the",Space,Link [Str "under"] ("#under",""),Space,Str "side",Space,Str "of",Space,Str "the",Space,Str "ruby",Space,Str "base,",Space,Str "the",Space,Str "test",Space,Str "passes."]
447+,RawBlock (Format "html") "</section>"
448+,RawBlock (Format "html") "<section id=\"style-412\" class=\"ctest\">"
449+,Header 2 ("",[],[]) [Span ("",["nature"],[]) [Str "[REQUIRED]"],Space,Span ("",["test-id"],[]) [Str "style-412"],Space,Code ("",[],[]) "inter-character"]
450+,Para [Str "Tests",Space,Str "whether",Space,Str "the",Space,Code ("",[],[]) "-epub-ruby-position",Space,Str "property",Space,Str "set",Space,Str "to",Space,Str "inter-caracter",Space,Str "is",Space,Str "supported."]
451+,Para [RawInline (Format "html") "<ruby class=\"ruby-inter-character\">",Strong [Str "Lorem",Space,Str "Ipsum"],Space,RawInline (Format "html") "<rp>",Str "(",RawInline (Format "html") "</rp>",RawInline (Format "html") "<rt>",Str "Lorem",Space,Str "Ipsum",RawInline (Format "html") "</rt>",RawInline (Format "html") "<rp>",Str ")",RawInline (Format "html") "</rp>",RawInline (Format "html") "</ruby>"]
452+,Para [Str "If",Space,Str "the",Space,Str "Ruby",Space,Str "text",Space,Str "is",Space,Str "positioned",Space,Str "on",Space,Str "the",Space,Str "right",Space,Str "side",Space,Str "of",Space,Str "the",Space,Str "base",Space,Str "text,",Space,Str "the",Space,Str "test",Space,Str "passes."]
453+,RawBlock (Format "html") "</section>"
454+,RawBlock (Format "html") "</section>"]